diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index f5ee2be28438d..5397ed1505ee1 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -232,7 +232,7 @@ def __init__(self, options, process = None, with_output = False, with_input = Fa stepParts = step.split(":") stepName = stepParts[0] if stepName not in stepList and not stepName.startswith('re'): - raise ValueError("Step {} unknown. Available are {}".format( stepName , sorted(stepList))) + raise ValueError("Step "+stepName+" unknown") if len(stepParts)==1: self.stepMap[stepName]="" elif len(stepParts)==2: @@ -240,10 +240,10 @@ def __init__(self, options, process = None, with_output = False, with_input = Fa elif len(stepParts)==3: self.stepMap[stepName]=(stepParts[2].split('+'),stepParts[1]) else: - raise ValueError(f"Step definition {step} invalid") + raise ValueError("Step definition "+step+" invalid") self.stepKeys.append(stepName) - #print(f"map of steps is: {self.stepMap}") + #print "map of steps is:",self.stepMap self.with_output = with_output self.process=process @@ -785,11 +785,11 @@ def addStandardSequences(self): self._options.inputEventContent='%s,%s'%(stepName.upper(),self._options.inputEventContent) stepName=stepName[2:] if stepSpec=="": - getattr(self,"prepare_"+stepName)(stepSpec = getattr(self,stepName+"DefaultSeq")) + getattr(self,"prepare_"+stepName)(sequence = getattr(self,stepName+"DefaultSeq")) elif isinstance(stepSpec, list): - getattr(self,"prepare_"+stepName)(stepSpec = '+'.join(stepSpec)) + getattr(self,"prepare_"+stepName)(sequence = '+'.join(stepSpec)) elif isinstance(stepSpec, tuple): - getattr(self,"prepare_"+stepName)(stepSpec = ','.join([stepSpec[1],'+'.join(stepSpec[0])])) + getattr(self,"prepare_"+stepName)(sequence = ','.join([stepSpec[1],'+'.join(stepSpec[0])])) else: raise ValueError("Invalid step definition") @@ -1218,23 +1218,17 @@ def doNotInlineEventContent(instance,label = "process."+stream.content+".outputC # prepare_STEPNAME modifies self.process and what else's needed. #---------------------------------------------------------------------------- - def loadDefaultOrSpecifiedCFF(self, stepSpec, defaultCFF, defaultSEQ=''): - _dotsplit = stepSpec.split('.') - if ( len(_dotsplit)==1 ): - if '/' in _dotsplit[0]: - _sequence = defaultSEQ if defaultSEQ else stepSpec - _cff = _dotsplit[0] - else: - _sequence = stepSpec - _cff = defaultCFF - elif ( len(_dotsplit)==2 ): - _cff,_sequence = _dotsplit + def loadDefaultOrSpecifiedCFF(self, sequence,defaultCFF): + if ( len(sequence.split('.'))==1 ): + l=self.loadAndRemember(defaultCFF) + elif ( len(sequence.split('.'))==2 ): + l=self.loadAndRemember(sequence.split('.')[0]) + sequence=sequence.split('.')[1] else: print("sub sequence configuration must be of the form dir/subdir/cff.a+b+c or cff.a") - print(stepSpec,"not recognized") + print(sequence,"not recognized") raise - l=self.loadAndRemember(_cff) - return l,_sequence,_cff + return l def scheduleSequence(self,seq,prefix,what='Path'): if '*' in seq: @@ -1269,15 +1263,16 @@ def scheduleSequenceAtEnd(self,seq,prefix): self.scheduleSequence(seq,prefix,what='EndPath') return - def prepare_ALCAPRODUCER(self, stepSpec = None): - self.prepare_ALCA(stepSpec, workflow = "producers") + def prepare_ALCAPRODUCER(self, sequence = None): + self.prepare_ALCA(sequence, workflow = "producers") - def prepare_ALCAOUTPUT(self, stepSpec = None): - self.prepare_ALCA(stepSpec, workflow = "output") + def prepare_ALCAOUTPUT(self, sequence = None): + self.prepare_ALCA(sequence, workflow = "output") - def prepare_ALCA(self, stepSpec = None, workflow = 'full'): + def prepare_ALCA(self, sequence = None, workflow = 'full'): """ Enrich the process with alca streams """ - alcaConfig,sequence,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.ALCADefaultCFF) + alcaConfig=self.loadDefaultOrSpecifiedCFF(sequence,self.ALCADefaultCFF) + sequence = sequence.split('.')[-1] MAXLEN=31 #the alca producer name should be shorter than 31 chars as per https://cms-talk.web.cern.ch/t/alcaprompt-datasets-not-loaded-in-dbs/11146/2 # decide which ALCA paths to use @@ -1341,7 +1336,7 @@ def prepare_ALCA(self, stepSpec = None, workflow = 'full'): #print "verify your configuration, ignoring for now" raise Exception("The following alcas could not be found "+str(alcaList)) - def prepare_LHE(self, stepSpec = None): + def prepare_LHE(self, sequence = None): #load the fragment ##make it loadable loadFragment = self._options.evt_type.replace('.py','',).replace('.','_').replace('python/','').replace('/','.') @@ -1349,16 +1344,16 @@ def prepare_LHE(self, stepSpec = None): __import__(loadFragment) self.process.load(loadFragment) ##inline the modules - self._options.inlineObjets+=','+stepSpec + self._options.inlineObjets+=','+sequence - getattr(self.process,stepSpec).nEvents = int(self._options.number) + getattr(self.process,sequence).nEvents = int(self._options.number) #schedule it - self.process.lhe_step = cms.Path( getattr( self.process,stepSpec) ) + self.process.lhe_step = cms.Path( getattr( self.process,sequence) ) self.excludedPaths.append("lhe_step") self.schedule.append( self.process.lhe_step ) - def prepare_GEN(self, stepSpec = None): + def prepare_GEN(self, sequence = None): """ load the fragment of generator configuration """ loadFailure=False #remove trailing .py @@ -1406,14 +1401,15 @@ def prepare_GEN(self, stepSpec = None): elif isinstance(theObject, cms.Sequence) or isinstance(theObject, cmstypes.ESProducer): self._options.inlineObjets+=','+name - if stepSpec == self.GENDefaultSeq or stepSpec == 'pgen_genonly': + if sequence == self.GENDefaultSeq or sequence == 'pgen_genonly': if 'ProductionFilterSequence' in genModules and ('generator' in genModules): self.productionFilterSequence = 'ProductionFilterSequence' elif 'generator' in genModules: self.productionFilterSequence = 'generator' """ Enrich the schedule with the rest of the generation step """ - _,_genSeqName,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.GENDefaultCFF) + self.loadDefaultOrSpecifiedCFF(sequence,self.GENDefaultCFF) + genSeqName=sequence.split('.')[-1] if True: try: @@ -1431,7 +1427,7 @@ def prepare_GEN(self, stepSpec = None): else: self.loadAndRemember("Configuration/StandardSequences/GeneratorHI_cff") - self.process.generation_step = cms.Path( getattr(self.process,_genSeqName) ) + self.process.generation_step = cms.Path( getattr(self.process,genSeqName) ) self.schedule.append(self.process.generation_step) #register to the genstepfilter the name of the path (static right now, but might evolve) @@ -1447,9 +1443,9 @@ def prepare_GEN(self, stepSpec = None): self.scheduleSequenceAtEnd('genFilterSummary','genfiltersummary_step') return - def prepare_SIM(self, stepSpec = None): + def prepare_SIM(self, sequence = None): """ Enrich the schedule with the simulation step""" - _,_simSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.SIMDefaultCFF) + self.loadDefaultOrSpecifiedCFF(sequence,self.SIMDefaultCFF) if not self._options.fast: if self._options.gflash==True: self.loadAndRemember("Configuration/StandardSequences/GFlashSIM_cff") @@ -1460,36 +1456,36 @@ def prepare_SIM(self, stepSpec = None): if self._options.magField=='0T': self.executeAndRemember("process.fastSimProducer.detectorDefinition.magneticFieldZ = cms.untracked.double(0.)") - self.scheduleSequence(_simSeq,'simulation_step') + self.scheduleSequence(sequence.split('.')[-1],'simulation_step') return - def prepare_DIGI(self, stepSpec = None): + def prepare_DIGI(self, sequence = None): """ Enrich the schedule with the digitisation step""" - _,_digiSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DIGIDefaultCFF) + self.loadDefaultOrSpecifiedCFF(sequence,self.DIGIDefaultCFF) if self._options.gflash==True: self.loadAndRemember("Configuration/StandardSequences/GFlashDIGI_cff") - if _digiSeq == 'pdigi_valid' or _digiSeq == 'pdigi_hi': + if sequence == 'pdigi_valid' or sequence == 'pdigi_hi': self.executeAndRemember("process.mix.digitizers = cms.PSet(process.theDigitizersValid)") - if _digiSeq != 'pdigi_nogen' and _digiSeq != 'pdigi_valid_nogen' and _digiSeq != 'pdigi_hi_nogen' and not self.process.source.type_()=='EmptySource' and not self._options.filetype == "LHE": + if sequence != 'pdigi_nogen' and sequence != 'pdigi_valid_nogen' and sequence != 'pdigi_hi_nogen' and not self.process.source.type_()=='EmptySource' and not self._options.filetype == "LHE": if self._options.inputEventContent=='': self._options.inputEventContent='REGEN' else: self._options.inputEventContent=self._options.inputEventContent+',REGEN' - self.scheduleSequence(_digiSeq,'digitisation_step') + self.scheduleSequence(sequence.split('.')[-1],'digitisation_step') return - def prepare_CFWRITER(self, stepSpec = None): + def prepare_CFWRITER(self, sequence = None): """ Enrich the schedule with the crossing frame writer step""" self.loadAndRemember(self.CFWRITERDefaultCFF) self.scheduleSequence('pcfw','cfwriter_step') return - def prepare_DATAMIX(self, stepSpec = None): + def prepare_DATAMIX(self, sequence = None): """ Enrich the schedule with the digitisation step""" self.loadAndRemember(self.DATAMIXDefaultCFF) self.scheduleSequence('pdatamix','datamixing_step') @@ -1507,51 +1503,51 @@ def prepare_DATAMIX(self, stepSpec = None): return - def prepare_DIGI2RAW(self, stepSpec = None): - _,_digi2rawSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DIGI2RAWDefaultCFF) - self.scheduleSequence(_digi2rawSeq,'digi2raw_step') + def prepare_DIGI2RAW(self, sequence = None): + self.loadDefaultOrSpecifiedCFF(sequence,self.DIGI2RAWDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'digi2raw_step') return - def prepare_REPACK(self, stepSpec = None): - _,_repackSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.REPACKDefaultCFF) - self.scheduleSequence(_repackSeq,'digi2repack_step') + def prepare_REPACK(self, sequence = None): + self.loadDefaultOrSpecifiedCFF(sequence,self.REPACKDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'digi2repack_step') return - def prepare_L1(self, stepSpec = None): + def prepare_L1(self, sequence = None): """ Enrich the schedule with the L1 simulation step""" - assert(stepSpec == None) + assert(sequence == None) self.loadAndRemember(self.L1EMDefaultCFF) self.scheduleSequence('SimL1Emulator','L1simulation_step') return - def prepare_L1REPACK(self, stepSpec = None): + def prepare_L1REPACK(self, sequence = None): """ Enrich the schedule with the L1 simulation step, running the L1 emulator on data unpacked from the RAW collection, and repacking the result in a new RAW collection""" supported = ['GT','GT1','GT2','GCTGT','Full','FullSimTP','FullMC','Full2015Data','uGT','CalouGT'] - if stepSpec in supported: - self.loadAndRemember('Configuration/StandardSequences/SimL1EmulatorRepack_%s_cff'% stepSpec) + if sequence in supported: + self.loadAndRemember('Configuration/StandardSequences/SimL1EmulatorRepack_%s_cff'%sequence) if self._options.scenario == 'HeavyIons': self.renameInputTagsInSequence("SimL1Emulator","rawDataCollector","rawDataRepacker") self.scheduleSequence('SimL1Emulator','L1RePack_step') else: - print("L1REPACK with '",stepSpec,"' is not supported! Supported choices are: ",supported) + print("L1REPACK with '",sequence,"' is not supported! Supported choices are: ",supported) raise Exception('unsupported feature') - def prepare_HLT(self, stepSpec = None): + def prepare_HLT(self, sequence = None): """ Enrich the schedule with the HLT simulation step""" - if not stepSpec: + if not sequence: print("no specification of the hlt menu has been given, should never happen") - raise Exception('no HLT specifications provided') + raise Exception('no HLT sequence provided') - if '@' in stepSpec: + if '@' in sequence: # case where HLT:@something was provided from Configuration.HLT.autoHLT import autoHLT - key = stepSpec[1:] + key = sequence[1:] if key in autoHLT: - stepSpec = autoHLT[key] + sequence = autoHLT[key] else: raise ValueError('no HLT mapping key "%s" found in autoHLT' % key) - if ',' in stepSpec: + if ',' in sequence: #case where HLT:something:something was provided self.executeAndRemember('import HLTrigger.Configuration.Utilities') optionsForHLT = {} @@ -1560,17 +1556,17 @@ def prepare_HLT(self, stepSpec = None): else: optionsForHLT['type'] = 'GRun' optionsForHLTConfig = ', '.join('%s=%s' % (key, repr(val)) for (key, val) in optionsForHLT.items()) - if stepSpec == 'run,fromSource': + if sequence == 'run,fromSource': if hasattr(self.process.source,'firstRun'): self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.firstRun.value()),%s)'%(optionsForHLTConfig)) elif hasattr(self.process.source,'setRunNumber'): self.executeAndRemember('process.loadHltConfiguration("run:%%d"%%(process.source.setRunNumber.value()),%s)'%(optionsForHLTConfig)) else: - raise Exception(f'Cannot replace menu to load {stepSpec}') + raise Exception('Cannot replace menu to load %s'%(sequence)) else: - self.executeAndRemember('process.loadHltConfiguration("%s",%s)'%(stepSpec.replace(',',':'),optionsForHLTConfig)) + self.executeAndRemember('process.loadHltConfiguration("%s",%s)'%(sequence.replace(',',':'),optionsForHLTConfig)) else: - self.loadAndRemember('HLTrigger/Configuration/HLT_%s_cff' % stepSpec) + self.loadAndRemember('HLTrigger/Configuration/HLT_%s_cff' % sequence) if self._options.isMC: self._options.customisation_file.append("HLTrigger/Configuration/customizeHLTforMC.customizeHLTforMC") @@ -1594,50 +1590,54 @@ def prepare_HLT(self, stepSpec = None): self.executeAndRemember("process.HLTEndSequence = cms.Sequence( process.dummyModule )") - def prepare_RAW2RECO(self, stepSpec = None): - if ','in stepSpec: - seqReco,seqDigi=stepSpec.spli(',') + def prepare_RAW2RECO(self, sequence = None): + if ','in sequence: + seqReco=sequence.split(',')[1] + seqDigi=sequence.split(',')[0] else: - print(f"RAW2RECO requires two specifications {stepSpec} insufficient") + print("RAW2RECO requires two specifications",sequence,"insufficient") self.prepare_RAW2DIGI(seqDigi) self.prepare_RECO(seqReco) return - def prepare_RAW2DIGI(self, stepSpec = "RawToDigi"): - _,_raw2digiSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RAW2DIGIDefaultCFF) - self.scheduleSequence(_raw2digiSeq,'raw2digi_step') + def prepare_RAW2DIGI(self, sequence = "RawToDigi"): + self.loadDefaultOrSpecifiedCFF(sequence,self.RAW2DIGIDefaultCFF) + self.scheduleSequence(sequence,'raw2digi_step') + # if self._options.isRepacked: + #self.renameInputTagsInSequence(sequence) return - def prepare_PATFILTER(self, stepSpec = None): + def prepare_PATFILTER(self, sequence=None): self.loadAndRemember("PhysicsTools/PatAlgos/slimming/metFilterPaths_cff") from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import allMetFilterPaths for filt in allMetFilterPaths: self.schedule.append(getattr(self.process,'Flag_'+filt)) - def prepare_L1HwVal(self, stepSpec = 'L1HwVal'): + def prepare_L1HwVal(self, sequence = 'L1HwVal'): ''' Enrich the schedule with L1 HW validation ''' - self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1HwValDefaultCFF) + self.loadDefaultOrSpecifiedCFF(sequence,self.L1HwValDefaultCFF) + #self.scheduleSequence(sequence.split('.')[-1],'l1hwval_step') print('\n\n\n DEPRECATED this has no action \n\n\n') return - def prepare_L1Reco(self, stepSpec = "L1Reco"): + def prepare_L1Reco(self, sequence = "L1Reco"): ''' Enrich the schedule with L1 reconstruction ''' - _,_l1recoSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1RecoDefaultCFF) - self.scheduleSequence(_l1recoSeq,'L1Reco_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.L1RecoDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'L1Reco_step') return - def prepare_L1TrackTrigger(self, stepSpec = "L1TrackTrigger"): + def prepare_L1TrackTrigger(self, sequence = "L1TrackTrigger"): ''' Enrich the schedule with L1 reconstruction ''' - _,_l1tracktriggerSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.L1TrackTriggerDefaultCFF) - self.scheduleSequence(_l1tracktriggerSeq,'L1TrackTrigger_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.L1TrackTriggerDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'L1TrackTrigger_step') return - def prepare_FILTER(self, stepSpec = None): + def prepare_FILTER(self, sequence = None): ''' Enrich the schedule with a user defined filter sequence ''' ## load the relevant part - filterConfig,filterSeq = stepSpec.split('.') - filterConfig=self.load(filterConfig) + filterConfig=self.load(sequence.split('.')[0]) + filterSeq=sequence.split('.')[-1] ## print it in the configuration class PrintAllModules(object): def __init__(self): @@ -1665,31 +1665,31 @@ def leave(self,v): pass return - def prepare_RECO(self, stepSpec = "reconstruction"): + def prepare_RECO(self, sequence = "reconstruction"): ''' Enrich the schedule with reconstruction ''' - _,_recoSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RECODefaultCFF) - self.scheduleSequence(_recoSeq,'reconstruction_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.RECODefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'reconstruction_step') return - def prepare_RECOSIM(self, stepSpec = "recosim"): + def prepare_RECOSIM(self, sequence = "recosim"): ''' Enrich the schedule with reconstruction ''' - _,_recosimSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.RECOSIMDefaultCFF) - self.scheduleSequence(_recosimSeq,'recosim_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.RECOSIMDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'recosim_step') return - def prepare_RECOBEFMIX(self, stepSpec = "reconstruction"): + def prepare_RECOBEFMIX(self, sequence = "reconstruction"): ''' Enrich the schedule with the part of reconstruction that is done before mixing in FastSim''' if not self._options.fast: print("ERROR: this step is only implemented for FastSim") sys.exit() - _,_recobefmixSeq,_ = self.loadDefaultOrSpecifiedCFF(self.RECOBEFMIXDefaultSeq,self.RECOBEFMIXDefaultCFF) - self.scheduleSequence(_recobefmixSeq,'reconstruction_befmix_step') + self.loadDefaultOrSpecifiedCFF(self.RECOBEFMIXDefaultSeq,self.RECOBEFMIXDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'reconstruction_befmix_step') return - def prepare_PAT(self, stepSpec = "miniAOD"): + def prepare_PAT(self, sequence = "miniAOD"): ''' Enrich the schedule with PAT ''' self.prepare_PATFILTER(self) - self.loadDefaultOrSpecifiedCFF(stepSpec,self.PATDefaultCFF) + self.loadDefaultOrSpecifiedCFF(sequence,self.PATDefaultCFF) self.labelsToAssociate.append('patTask') if self._options.isData: self._options.customisation_file_unsch.insert(0,"PhysicsTools/PatAlgos/slimming/miniAOD_tools.miniAOD_customizeAllData") @@ -1710,41 +1710,41 @@ def prepare_PAT(self, stepSpec = "miniAOD"): return - def prepare_PATGEN(self, stepSpec = "miniGEN"): + def prepare_PATGEN(self, sequence = "miniGEN"): ''' Enrich the schedule with PATGEN ''' - self.loadDefaultOrSpecifiedCFF(stepSpec,self.PATGENDefaultCFF) #this is unscheduled + self.loadDefaultOrSpecifiedCFF(sequence,self.PATGENDefaultCFF) #this is unscheduled self.labelsToAssociate.append('patGENTask') if self._options.isData: raise Exception("PATGEN step can only run on MC") return - def prepare_NANO(self, stepSpec = '' ): - print(f"in prepare_nano {stepSpec}") + def prepare_NANO(self, sequence = "nanoAOD"): ''' Enrich the schedule with NANO ''' - _,_nanoSeq,_nanoCff = self.loadDefaultOrSpecifiedCFF(stepSpec,self.NANODefaultCFF,self.NANODefaultSeq) - self.scheduleSequence(_nanoSeq,'nanoAOD_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.NANODefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'nanoAOD_step') custom = "nanoAOD_customizeData" if self._options.isData else "nanoAOD_customizeMC" - self._options.customisation_file.insert(0,'.'.join([_nanoCff,custom])) + self._options.customisation_file.insert(0,"PhysicsTools/NanoAOD/nano_cff."+custom) if self._options.hltProcess: if len(self._options.customise_commands) > 1: self._options.customise_commands = self._options.customise_commands + " \n" self._options.customise_commands = self._options.customise_commands + "process.unpackedPatTrigger.triggerResults= cms.InputTag( 'TriggerResults::"+self._options.hltProcess+"' )\n" - def prepare_NANOGEN(self, stepSpec = "nanoAOD"): + def prepare_NANOGEN(self, sequence = "nanoAOD"): ''' Enrich the schedule with NANOGEN ''' # TODO: Need to modify this based on the input file type fromGen = any([x in self.stepMap for x in ['LHE', 'GEN', 'AOD']]) - _,_nanogenSeq,_nanogenCff = self.loadDefaultOrSpecifiedCFF(stepSpec,self.NANOGENDefaultCFF) - self.scheduleSequence(_nanogenSeq,'nanoAOD_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.NANOGENDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'nanoAOD_step') custom = "customizeNanoGEN" if fromGen else "customizeNanoGENFromMini" if self._options.runUnscheduled: - self._options.customisation_file_unsch.insert(0, '.'.join([_nanogenCff, custom])) + self._options.customisation_file_unsch.insert(0, '.'.join([self.NANOGENDefaultCFF, custom])) else: - self._options.customisation_file.insert(0, '.'.join([_nanogenCff, custom])) + self._options.customisation_file.insert(0, '.'.join([self.NANOGENDefaultCFF, custom])) - def prepare_SKIM(self, stepSpec = "all"): + def prepare_SKIM(self, sequence = "all"): ''' Enrich the schedule with skimming fragments''' - skimConfig,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.SKIMDefaultCFF) + skimConfig = self.loadDefaultOrSpecifiedCFF(sequence,self.SKIMDefaultCFF) + sequence = sequence.split('.')[-1] skimlist=sequence.split('+') ## support @Mu+DiJet+@Electron configuration via autoSkim.py @@ -1785,24 +1785,25 @@ def prepare_SKIM(self, stepSpec = "all"): print('WARNING, possible typo with SKIM:'+'+'.join(skimlist)) raise Exception('WARNING, possible typo with SKIM:'+'+'.join(skimlist)) - def prepare_USER(self, stepSpec = None): + def prepare_USER(self, sequence = None): ''' Enrich the schedule with a user defined sequence ''' - _,_userSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.USERDefaultCFF) - self.scheduleSequence(_userSeq,'user_step') + self.loadDefaultOrSpecifiedCFF(sequence,self.USERDefaultCFF) + self.scheduleSequence(sequence.split('.')[-1],'user_step') return - def prepare_POSTRECO(self, stepSpec = None): + def prepare_POSTRECO(self, sequence = None): """ Enrich the schedule with the postreco step """ self.loadAndRemember(self.POSTRECODefaultCFF) self.scheduleSequence('postreco_generator','postreco_step') return - def prepare_VALIDATION(self, stepSpec = 'validation'): - print(f"{stepSpec} in preparing validation") - _,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.VALIDATIONDefaultCFF) + def prepare_VALIDATION(self, sequence = 'validation'): + print(sequence,"in preparing validation") + self.loadDefaultOrSpecifiedCFF(sequence,self.VALIDATIONDefaultCFF) from Validation.Configuration.autoValidation import autoValidation #in case VALIDATION:something:somethingelse -> something,somethingelse + sequence=sequence.split('.')[-1] if sequence.find(',')!=-1: prevalSeqName=sequence.split(',')[0].split('+') valSeqName=sequence.split(',')[1].split('+') @@ -1970,13 +1971,14 @@ def expandMapping(self,seqList,mapping,index=None): if level==maxLevel: raise Exception("Could not fully expand "+repr(seqList)+" from "+repr(mapping)) - def prepare_DQM(self, stepSpec = 'DQMOffline'): + def prepare_DQM(self, sequence = 'DQMOffline'): # this one needs replacement # any 'DQM' job should use DQMStore in non-legacy mode (but not HARVESTING) self.loadAndRemember("DQMServices/Core/DQMStoreNonLegacy_cff") - _,_dqmSeq,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.DQMOFFLINEDefaultCFF) - sequenceList=postSequenceList=_dqmSeq.split('+') + self.loadDefaultOrSpecifiedCFF(sequence,self.DQMOFFLINEDefaultCFF) + sequenceList=sequence.split('.')[-1].split('+') + postSequenceList=sequence.split('.')[-1].split('+') from DQMOffline.Configuration.autoDQM import autoDQM self.expandMapping(sequenceList,autoDQM,index=0) self.expandMapping(postSequenceList,autoDQM,index=1) @@ -1986,14 +1988,14 @@ def prepare_DQM(self, stepSpec = 'DQMOffline'): print("Duplicate entries for DQM:, using",sequenceList) pathName='dqmoffline_step' - for (i,_sequence) in enumerate(sequenceList): + for (i,sequence) in enumerate(sequenceList): if (i!=0): pathName='dqmoffline_%d_step'%(i) if 'HLT' in self.stepMap.keys() or self._options.hltProcess: - self.renameHLTprocessInSequence(_sequence) + self.renameHLTprocessInSequence(sequence) - setattr(self.process,pathName, cms.EndPath( getattr(self.process,_sequence ) ) ) + setattr(self.process,pathName, cms.EndPath( getattr(self.process,sequence ) ) ) self.schedule.append(getattr(self.process,pathName)) if hasattr(self.process,"genstepfilter") and len(self.process.genstepfilter.triggerConditions): @@ -2002,22 +2004,23 @@ def prepare_DQM(self, stepSpec = 'DQMOffline'): pathName='dqmofflineOnPAT_step' - for (i,_sequence) in enumerate(postSequenceList): + for (i,sequence) in enumerate(postSequenceList): #Fix needed to avoid duplication of sequences not defined in autoDQM or without a PostDQM if (sequenceList[i]==postSequenceList[i]): continue if (i!=0): pathName='dqmofflineOnPAT_%d_step'%(i) - setattr(self.process,pathName, cms.EndPath( getattr(self.process, _sequence ) ) ) + setattr(self.process,pathName, cms.EndPath( getattr(self.process, sequence ) ) ) self.schedule.append(getattr(self.process,pathName)) - def prepare_HARVESTING(self, stepSpec = None): + def prepare_HARVESTING(self, sequence = None): """ Enrich the process with harvesting step """ self.DQMSaverCFF='Configuration/StandardSequences/DQMSaver'+self._options.harvesting+'_cff' self.loadAndRemember(self.DQMSaverCFF) - harvestingConfig,sequence,_ = self.loadDefaultOrSpecifiedCFF(stepSpec,self.HARVESTINGDefaultCFF) + harvestingConfig = self.loadDefaultOrSpecifiedCFF(sequence,self.HARVESTINGDefaultCFF) + sequence = sequence.split('.')[-1] # decide which HARVESTING paths to use harvestingList = sequence.split("+") @@ -2049,10 +2052,10 @@ def prepare_HARVESTING(self, stepSpec = None): self.scheduleSequence('DQMSaver','dqmsave_step') return - def prepare_ALCAHARVEST(self, stepSpec = None): + def prepare_ALCAHARVEST(self, sequence = None): """ Enrich the process with AlCaHarvesting step """ harvestingConfig = self.loadAndRemember(self.ALCAHARVESTDefaultCFF) - sequence=stepSpec.split(".")[-1] + sequence=sequence.split(".")[-1] # decide which AlcaHARVESTING paths to use harvestingList = sequence.split("+") @@ -2084,9 +2087,9 @@ def prepare_ALCAHARVEST(self, stepSpec = None): - def prepare_ENDJOB(self, stepSpec = 'endOfProcess'): - _,_endjobSeq,_=self.loadDefaultOrSpecifiedCFF(stepSpec,self.ENDJOBDefaultCFF) - self.scheduleSequenceAtEnd(_endjobSeq,'endjob_step') + def prepare_ENDJOB(self, sequence = 'endOfProcess'): + self.loadDefaultOrSpecifiedCFF(sequence,self.ENDJOBDefaultCFF) + self.scheduleSequenceAtEnd(sequence.split('.')[-1],'endjob_step') return def finalizeFastSimHLT(self): diff --git a/Configuration/Eras/python/Modifier_run3_nanoAOD_124_cff.py b/Configuration/Eras/python/Modifier_run3_nanoAOD_124_cff.py deleted file mode 100644 index 62c902fc79512..0000000000000 --- a/Configuration/Eras/python/Modifier_run3_nanoAOD_124_cff.py +++ /dev/null @@ -1,3 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -run3_nanoAOD_124 = cms.Modifier() diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index ab9dc09b16afc..610a3b7ad3d92 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -78,7 +78,7 @@ def __init__(self): 'tracker_apv_vfp30_2016', 'pf_badHcalMitigationOff', 'run2_miniAOD_80XLegacy','run2_miniAOD_94XFall17', 'run2_nanoAOD_92X', 'run2_nanoAOD_94XMiniAODv1', 'run2_nanoAOD_94XMiniAODv2', 'run2_nanoAOD_94X2016', 'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', 'run2_nanoAOD_106Xv1', 'run2_nanoAOD_106Xv2', - 'run3_nanoAOD_devel', 'run3_nanoAOD_122', 'run3_nanoAOD_124', + 'run3_nanoAOD_devel', 'run3_nanoAOD_122', 'hcalHardcodeConditions', 'hcalSkipPacker', 'run2_HLTconditions_2016','run2_HLTconditions_2017','run2_HLTconditions_2018', 'bParking'] diff --git a/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py b/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py deleted file mode 100644 index 128a888b482f9..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py +++ /dev/null @@ -1,112 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import P4Vars,Var -from PhysicsTools.NanoAOD.nano_eras_cff import run2_nanoAOD_106Xv2,run2_miniAOD_80XLegacy,run2_nanoAOD_92X,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run3_nanoAOD_122 - -##################### Import reusable funtions and objects from std taus ######## -from PhysicsTools.NanoAOD.V10.taus_cff import _tauIdWPMask, tausMCMatchLepTauForTable, tausMCMatchHadTauForTable,tauMCTable - -##################### User floats producers, selectors ########################## - - -finalBoostedTaus = cms.EDFilter("PATTauRefSelector", - src = cms.InputTag("slimmedTausBoosted"), - cut = cms.string("pt > 40 && tauID('decayModeFindingNewDMs') && (tauID('byVVLooseIsolationMVArun2DBoldDMwLT') || tauID('byVVLooseIsolationMVArun2DBnewDMwLT'))") -) -run2_nanoAOD_106Xv2.toModify(finalBoostedTaus, - cut = "pt > 40 && tauID('decayModeFindingNewDMs') && (tauID('byVVLooseIsolationMVArun2017v2DBoldDMwLT2017') || tauID('byVVLooseIsolationMVArun2017v2DBoldDMdR0p3wLT2017') || tauID('byVVLooseIsolationMVArun2017v2DBnewDMwLT2017'))" -) - -boostedTauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalBoostedTaus"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("boostedTau"), - doc = cms.string("slimmedBoostedTaus after basic selection (" + finalBoostedTaus.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet() # PSet defined below in era dependent way -) -_boostedTauVarsBase = cms.PSet(P4Vars, - charge = Var("charge", int, doc="electric charge"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - decayMode = Var("decayMode()",int), - leadTkPtOverTauPt = Var("leadChargedHadrCand.pt/pt ",float, doc="pt of the leading track divided by tau pt",precision=10), - leadTkDeltaEta = Var("leadChargedHadrCand.eta - eta ",float, doc="eta of the leading track, minus tau eta",precision=8), - leadTkDeltaPhi = Var("deltaPhi(leadChargedHadrCand.phi, phi) ",float, doc="phi of the leading track, minus tau phi",precision=8), - - rawIso = Var( "tauID('byCombinedIsolationDeltaBetaCorrRaw3Hits')", float, doc = "combined isolation (deltaBeta corrections)", precision=10), - rawIsodR03 = Var( "(tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum')))", float, doc = "combined isolation (deltaBeta corrections, dR=0.3)", precision=10), - chargedIso = Var( "tauID('chargedIsoPtSum')", float, doc = "charged isolation", precision=10), - neutralIso = Var( "tauID('neutralIsoPtSum')", float, doc = "neutral (photon) isolation", precision=10), - puCorr = Var( "tauID('puCorrPtSum')", float, doc = "pileup correction", precision=10), - photonsOutsideSignalCone = Var( "tauID('photonPtSumOutsideSignalCone')", float, doc = "sum of photons outside signal cone", precision=10), - idAntiMu = _tauIdWPMask("againstMuon%s3", choices=("Loose","Tight"), doc= "Anti-muon discriminator V3: ") -) -#MVA 2017 v2 variables -_boostedTauVarsMVAIso = cms.PSet( - rawMVAoldDM2017v2 = Var("tauID('byIsolationMVArun2DBoldDMwLTraw')",float, doc="byIsolationMVArun2DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAnewDM2017v2 = Var("tauID('byIsolationMVArun2DBnewDMwLTraw')",float,doc='byIsolationMVArun2DBnewDMwLT raw output discriminator (2017v2)',precision=10), - idMVAnewDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2DBnewDMwLT", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2DBoldDMwLT",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2DBoldDMwLT ID working point (2017v2)"), -) -#MVA 2017 v2 dR<0.3 variables -_boostedTauVarsMVAIsoDr03 = cms.PSet( - rawMVAoldDMdR032017v2 = Var("tauID('byIsolationMVArun2017v2DBoldDMdR0p3wLTraw2017')",float,doc='byIsolationMVArun2DBoldDMdR0p3wLT raw output discriminator (2017v2)'), - idMVAoldDMdR032017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBoldDMdR0p3wLT2017",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBoldDMdR0p3wLT ID working point (2017v2)") -) -#AntiEle MVA 2018 variables -_boostedTauVarsAntiEleMVA = cms.PSet( - rawAntiEle2018 = Var("tauID('againstElectronMVA6Raw')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10), - rawAntiEleCat2018 = Var("tauID('againstElectronMVA6category')", int, doc="Anti-electron MVA discriminator V6 category (2018)"), - idAntiEle2018 = _tauIdWPMask("againstElectron%sMVA6", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2018)") -) - -boostedTauTable.variables = cms.PSet( - _boostedTauVarsBase, - _boostedTauVarsMVAIso, - _boostedTauVarsAntiEleMVA -) -_boostedTauVarsWithDr03 = cms.PSet( - _boostedTauVarsBase, - _boostedTauVarsMVAIso, - _boostedTauVarsMVAIsoDr03, - _boostedTauVarsAntiEleMVA -) -run2_nanoAOD_106Xv2.toModify(boostedTauTable, - variables = _boostedTauVarsWithDr03 -) -run2_nanoAOD_106Xv2.toModify(boostedTauTable.variables, - rawMVAoldDM2017v2 = Var("tauID('byIsolationMVArun2017v2DBoldDMwLTraw2017')",float, doc="byIsolationMVArun2DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAnewDM2017v2 = Var("tauID('byIsolationMVArun2017v2DBnewDMwLTraw2017')",float,doc='byIsolationMVArun2DBnewDMwLT raw output discriminator (2017v2)',precision=10), - idMVAnewDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBnewDMwLT2017", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBoldDMwLT2017",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBoldDMwLT ID working point (2017v2)"), - rawAntiEle2018 = Var("tauID('againstElectronMVA6Raw2018')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10), - rawAntiEleCat2018 = Var("tauID('againstElectronMVA6category2018')", int, doc="Anti-electron MVA discriminator V6 category (2018)"), - idAntiEle2018 = _tauIdWPMask("againstElectron%sMVA62018", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2018)") -) - -boostedTausMCMatchLepTauForTable = tausMCMatchLepTauForTable.clone( - src = boostedTauTable.src -) - -#This requires genVisTaus in taus_cff.py -boostedTausMCMatchHadTauForTable = tausMCMatchHadTauForTable.clone( - src = boostedTauTable.src -) - -boostedTauMCTable = tauMCTable.clone( - src = boostedTauTable.src, - mcMap = cms.InputTag("boostedTausMCMatchLepTauForTable"), - mcMapVisTau = cms.InputTag("boostedTausMCMatchHadTauForTable"), - objName = boostedTauTable.name, -) - - -boostedTauTask = cms.Task(finalBoostedTaus) -boostedTauTablesTask = cms.Task(boostedTauTable) -boostedTauMCTask = cms.Task(boostedTausMCMatchLepTauForTable,boostedTausMCMatchHadTauForTable,boostedTauMCTable) - -#remove boosted tau from previous eras -_modifiers = (run2_miniAOD_80XLegacy | run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1 | run3_nanoAOD_122) -(_modifiers).toReplaceWith(boostedTauTask,cms.Task()) -(_modifiers).toReplaceWith(boostedTauTablesTask,cms.Task()) -(_modifiers).toReplaceWith(boostedTauMCTask,cms.Task()) diff --git a/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py b/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py deleted file mode 100644 index e2e050fddcf22..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py +++ /dev/null @@ -1,42 +0,0 @@ -import FWCore.ParameterSet.Config as cms -#from PhysicsTools.NanoAOD.V10.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * - - -btagSFdir="PhysicsTools/NanoAOD/data/btagSF/" - -btagWeightTable = cms.EDProducer("BTagSFProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string("pt > 25. && abs(eta) < 2.5"), - discNames = cms.vstring( - "pfCombinedInclusiveSecondaryVertexV2BJetTags", - "pfDeepCSVJetTags:probb+pfDeepCSVJetTags:probbb", #if multiple MiniAOD branches need to be summed up (e.g., DeepCSV b+bb), separate them using '+' delimiter - "pfCombinedMVAV2BJetTags" - ), - discShortNames = cms.vstring( - "CSVV2", - "DeepCSVB", - "CMVA" - ), - weightFiles = cms.vstring( #default settings are for 2017 94X. toModify function is called later for other eras. - btagSFdir+"CSVv2_94XSF_V2_B_F.csv", - btagSFdir+"DeepCSV_94XSF_V2_B_F.csv", - "unavailable" #if SFs for an algorithm in an era is unavailable, the corresponding branch will not be stored - ), - operatingPoints = cms.vstring("3","3","3"), #loose = 0, medium = 1, tight = 2, reshaping = 3 - measurementTypesB = cms.vstring("iterativefit","iterativefit","iterativefit"), #e.g. "comb", "incl", "ttbar", "iterativefit" - measurementTypesC = cms.vstring("iterativefit","iterativefit","iterativefit"), - measurementTypesUDSG = cms.vstring("iterativefit","iterativefit","iterativefit"), - sysTypes = cms.vstring("central","central","central") -) - -#for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: # to be updated when SF for Summer16MiniAODv3 MC will be available -# modifier.toModify(btagWeightTable, -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toModify(btagWeightTable, - cut = cms.string("pt > 25. && abs(eta) < 2.4"), #80X corresponds to 2016, |eta| < 2.4 - weightFiles = cms.vstring( #80X corresponds to 2016 SFs - btagSFdir+"CSVv2_Moriond17_B_H.csv", - "unavailable", - btagSFdir+"cMVAv2_Moriond17_B_H.csv" - ) - ) diff --git a/PhysicsTools/NanoAOD/python/V10/electrons_cff.py b/PhysicsTools/NanoAOD/python/V10/electrons_cff.py deleted file mode 100644 index ebcf1350fc565..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/electrons_cff.py +++ /dev/null @@ -1,732 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -from math import ceil,log -#NOTE: All definitions of modules should point to the latest flavour of the electronTable in NanoAOD. -#Common modifications for past eras are done at the end whereas modifications specific to a single era is done after the original definition. -## might be an issue with V10 support in newer release -from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma8XObjectUpdateModifier,egamma9X105XUpdateModifier,prependEgamma8XObjectUpdateModifier -ele9X105XUpdateModifier=egamma9X105XUpdateModifier.clone( - phoPhotonIso = "", - phoNeutralHadIso = "", - phoChargedHadIso = "", - phoChargedHadWorstVtxIso = "", - phoChargedHadWorstVtxConeVetoIso = "", - phoChargedHadPFPVIso = "" -) -#we have dataformat changes to 106X so to read older releases we use egamma updators -slimmedElectronsTo106X = cms.EDProducer("ModifiedElectronProducer", - src = cms.InputTag("slimmedElectrons"), - modifierConfig = cms.PSet( modifications = cms.VPSet(ele9X105XUpdateModifier) ) -) -#might as well fix 80X while we're at it although the differences are not so relavent for nano -run2_miniAOD_80XLegacy.toModify( slimmedElectronsTo106X.modifierConfig.modifications, prependEgamma8XObjectUpdateModifier ) - -# this below is used only in some eras -slimmedElectronsUpdated = cms.EDProducer("PATElectronUpdater", - src = cms.InputTag("slimmedElectrons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(False), - fixDxySign = cms.bool(True), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParamsB = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ), - miniIsoParamsE = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.015, - 0.015, 0.08, 0.0, 0.0 - ) -) -run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso = True ) -##modify the past eras -#for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1: -# modifier.toModify(slimmedElectronsUpdated, src = "slimmedElectronsTo106X" ) -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(slimmedElectronsUpdated, src = "slimmedElectronsTo106X" ) -############################FOR bitmapVIDForEle main defn############################# -electron_id_modules_WorkingPoints_nanoAOD = cms.PSet( - modules = cms.vstring( - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer16UL_ID_ISO_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer17UL_ID_ISO_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer18UL_ID_ISO_cff', - ), - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight", - ) -) -#for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016: -# modifier.toModify(electron_id_modules_WorkingPoints_nanoAOD, -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toModify(electron_id_modules_WorkingPoints_nanoAOD, - modules = cms.vstring( - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff', - ), - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight", - ) -) - -def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): - docstring='' - for modname in modules: - ids= __import__(modname, globals(), locals(), ['idName','cutFlow']) - for name in dir(ids): - _id = getattr(ids,name) - if hasattr(_id,'idName') and hasattr(_id,'cutFlow'): - if (len(WorkingPoints)>0 and _id.idName==WorkingPoints[0].split(':')[-1]): - docstring = 'VID compressed bitmap (%s), %d bits per cut'%(','.join([cut.cutName.value() for cut in _id.cutFlow]),int(ceil(log(len(WorkingPoints)+1,2)))) - return docstring - -bitmapVIDForEle = cms.EDProducer("EleVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedElectrons"), - srcForID = cms.InputTag("reducedEgamma","reducedGedGsfElectrons"), - WorkingPoints = electron_id_modules_WorkingPoints_nanoAOD.WorkingPoints, -) -_bitmapVIDForEle_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEle.WorkingPoints) - -bitmapVIDForEleSpring15 = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto", - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose", - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium", - # "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight", # not fitting in sizeof(int) - ) -) -_bitmapVIDForEleSpring15_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleSpring15.WorkingPoints) - -bitmapVIDForEleSum16 = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight", - ) -) -_bitmapVIDForEleSum16_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleSum16.WorkingPoints) - -bitmapVIDForEleHEEP = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring("egmGsfElectronIDs:heepElectronID-HEEPV70" - ) -) -_bitmapVIDForEleHEEP_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleHEEP.WorkingPoints) -############################for bitmapVIDForEle defn end############################# -#######################ISO ELE defn(in principle should be an import#################### -##PhysicsTools/NanoAOD/python/EleIsoValueMapProducer_cfi.py -isoForEle = cms.EDProducer("EleIsoValueMapProducer", - src = cms.InputTag("slimmedElectrons"), - relative = cms.bool(False), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), - EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) -run2_miniAOD_80XLegacy.toModify(isoForEle, - EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", - EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") -run2_nanoAOD_94X2016.toModify(isoForEle, - EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", - EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") -#######################################ISO ELE end##################################### -######################################ptRatioForEle##################################### -###import from hysicsTools/NanoAOD/pythonElectronJetVarProducer_cfi.py -ptRatioRelForEle = cms.EDProducer("ElectronJetVarProducer", - srcJet = cms.InputTag("updatedJetsPuppi"), - srcLep = cms.InputTag("slimmedElectrons"), - srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), -) -######################################ptRatioForEle##################################### -#############3###################seedGailEle############################# -seedGainEle = cms.EDProducer("ElectronSeedGainProducer", src = cms.InputTag("slimmedElectrons")) -############################################seed gainELE -############################calibratedPatElectrons############## -##this is a special one, so we leave the era modifications here##### -calibratedPatElectronsNano = cms.EDProducer("CalibratedPatElectronProducer", - correctionFile = cms.string('EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain'), - epCombConfig = cms.PSet( - ecalTrkRegressionConfig = cms.PSet( - ebHighEtForestName = cms.ESInputTag("","electron_eb_ECALTRK"), - ebLowEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_lowpt"), - eeHighEtForestName = cms.ESInputTag("","electron_ee_ECALTRK"), - eeLowEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_lowpt"), - forceHighEnergyTrainingIfSaturated = cms.bool(False), - lowEtHighEtBoundary = cms.double(50.0), - rangeMaxHighEt = cms.double(3.0), - rangeMaxLowEt = cms.double(3.0), - rangeMinHighEt = cms.double(-1.0), - rangeMinLowEt = cms.double(-1.0) - ), - ecalTrkRegressionUncertConfig = cms.PSet( - ebHighEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_var"), - ebLowEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_lowpt_var"), - eeHighEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_var"), - eeLowEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_lowpt_var"), - forceHighEnergyTrainingIfSaturated = cms.bool(False), - lowEtHighEtBoundary = cms.double(50.0), - rangeMaxHighEt = cms.double(0.5), - rangeMaxLowEt = cms.double(0.5), - rangeMinHighEt = cms.double(0.0002), - rangeMinLowEt = cms.double(0.0002) - ), - maxEPDiffInSigmaForComb = cms.double(15.0), - maxEcalEnergyForComb = cms.double(200.0), - maxRelTrkMomErrForComb = cms.double(10.0), - minEOverPForComb = cms.double(0.025) - ), - mightGet = cms.optional.untracked.vstring, - minEtToCalibrate = cms.double(5.0), - produceCalibratedObjs = cms.bool(False), - recHitCollectionEB = cms.InputTag("reducedEgamma","reducedEBRecHits"), - recHitCollectionEE = cms.InputTag("reducedEgamma","reducedEERecHits"), - semiDeterministic = cms.bool(True), - src = cms.InputTag("slimmedElectrons"), - valueMapsStored = cms.vstring( - 'energyScaleStatUp', - 'energyScaleStatDown', - 'energyScaleSystUp', - 'energyScaleSystDown', - 'energyScaleGainUp', - 'energyScaleGainDown', - 'energySigmaRhoUp', - 'energySigmaRhoDown', - 'energySigmaPhiUp', - 'energySigmaPhiDown', - 'energyScaleUp', - 'energyScaleDown', - 'energySigmaUp', - 'energySigmaDown', - 'energyScaleValue', - 'energySigmaValue', - 'energySmearNrSigma', - 'ecalEnergyPreCorr', - 'ecalEnergyErrPreCorr', - 'ecalEnergyPostCorr', - 'ecalEnergyErrPostCorr', - 'ecalTrkEnergyPreCorr', - 'ecalTrkEnergyErrPreCorr', - 'ecalTrkEnergyPostCorr', - 'ecalTrkEnergyErrPostCorr' - ) -) - -(run2_egamma_2016 & tracker_apv_vfp30_2016).toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain" -) - -(run2_egamma_2016 & ~tracker_apv_vfp30_2016).toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_postVFP_RunFineEtaR9Gain" -) - -run2_egamma_2017.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_24Feb2020_runEtaR9Gain_v2" -) - -run2_egamma_2018.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain" -) - -run2_miniAOD_80XLegacy.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Legacy2016_07Aug2017_FineEtaR9_v3_ele_unc" - ) - -#for modifier in run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2: -# modifier.toModify(calibratedPatElectronsNano, -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2).toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc" - ) - -run2_nanoAOD_102Xv1.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_Step2Closure_CoarseEtaR9Gain_v2" -) -##############################end calibratedPatElectronsNano############################33 -#####################Start slimmedElectronsWithUserData###############################3 -##import from PhysicsTools/PatAlgos/python/electronsWithUserData_cfi.py -slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder", - src = cms.InputTag("slimmedElectrons"), - parentSrcs = cms.VInputTag("reducedEgamma:reducedGedGsfElectrons"), - userFloats = cms.PSet( - mvaFall17V1Iso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"), - mvaFall17V1noIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"), - mvaIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV2Values"), - mvaNoIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values"), - mvaHZZIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer18ULIdIsoValues"), - miniIsoChg = cms.InputTag("isoForEle:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForEle:miniIsoAll"), - PFIsoChg = cms.InputTag("isoForEle:PFIsoChg"), - PFIsoAll = cms.InputTag("isoForEle:PFIsoAll"), - PFIsoAll04 = cms.InputTag("isoForEle:PFIsoAll04"), - ptRatio = cms.InputTag("ptRatioRelForEle:ptRatio"), - ptRel = cms.InputTag("ptRatioRelForEle:ptRel"), - jetNDauChargedMVASel = cms.InputTag("ptRatioRelForEle:jetNDauChargedMVASel"), - ecalTrkEnergyErrPostCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyErrPostCorr"), - ecalTrkEnergyPreCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyPreCorr"), - ecalTrkEnergyPostCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyPostCorr"), - energyScaleUpNew = cms.InputTag("calibratedPatElectronsNano","energyScaleUp"), - energyScaleDownNew = cms.InputTag("calibratedPatElectronsNano","energyScaleDown"), - energySigmaUpNew = cms.InputTag("calibratedPatElectronsNano","energySigmaUp"), - energySigmaDownNew = cms.InputTag("calibratedPatElectronsNano","energySigmaDown"), - - ), - userIntFromBools = cms.PSet( - - mvaFall17V1Iso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp90"), - mvaFall17V1Iso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp80"), - mvaFall17V1Iso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wpLoose"), - mvaFall17V1noIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp90"), - mvaFall17V1noIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp80"), - mvaFall17V1noIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wpLoose"), - - mvaIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp90"), - mvaIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp80"), - mvaIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wpLoose"), - mvaNoIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp90"), - mvaNoIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp80"), - mvaNoIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wpLoose"), - - cutbasedID_Fall17_V1_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-veto"), - cutbasedID_Fall17_V1_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-loose"), - cutbasedID_Fall17_V1_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-medium"), - cutbasedID_Fall17_V1_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-tight"), - cutbasedID_Fall17_V2_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto"), - cutbasedID_Fall17_V2_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"), - cutbasedID_Fall17_V2_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"), - cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"), - cutbasedID_HEEP = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV70"), - ), - userInts = cms.PSet( - VIDNestedWPBitmap = cms.InputTag("bitmapVIDForEle"), - VIDNestedWPBitmapHEEP = cms.InputTag("bitmapVIDForEleHEEP"), - seedGain = cms.InputTag("seedGainEle"), - ), - userCands = cms.PSet( - jetForLepJetVar = cms.InputTag("ptRatioRelForEle:jetForLepJetVar") # warning: Ptr is null if no match is found - ), -) - -###Not to update with S+S vars as they already exist for run2_nanoAOD_94X2016 era -run2_nanoAOD_94X2016.toModify(slimmedElectronsWithUserData.userFloats, - ecalTrkEnergyErrPostCorrNew = None, - ecalTrkEnergyPreCorrNew = None, - ecalTrkEnergyPostCorrNew = None, - energyScaleUpNew = None, - energyScaleDownNew = None, - energySigmaUpNew = None, - energySigmaDownNew = None - - -) - -run2_nanoAOD_94X2016.toModify(slimmedElectronsWithUserData.userIntFromBools, - # MVAs and HEEP are already pre-computed. Cut-based too (except V2), but we re-add it for consistency with the nested bitmap - cutbasedID_Sum16_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), - cutbasedID_Sum16_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"), - cutbasedID_Sum16_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"), - cutbasedID_Sum16_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"), - cutbasedID_HLT = cms.InputTag("egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"), - cutbasedID_Spring15_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), - cutbasedID_Spring15_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose"), - cutbasedID_Spring15_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium"), - cutbasedID_Spring15_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight"), - cutbasedID_Fall17_V2_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto"), - cutbasedID_Fall17_V2_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"), - cutbasedID_Fall17_V2_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"), - cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"), - -) - -run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userFloats, - mvaSpring16GP = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), - mvaSpring16HZZ = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), -) - -run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userIntFromBools, - mvaSpring16GP_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"), - mvaSpring16GP_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"), - mvaSpring16HZZ_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-HZZ-V1-wpLoose"), - cutbasedID_Sum16_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), - cutbasedID_Sum16_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"), - cutbasedID_Sum16_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"), - cutbasedID_Sum16_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"), - cutbasedID_HLT = cms.InputTag("egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"), - cutbasedID_Spring15_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), - cutbasedID_Spring15_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose"), - cutbasedID_Spring15_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium"), - cutbasedID_Spring15_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight"), -) - -#for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: -# modifier.toModify(slimmedElectronsWithUserData.userInts, -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toModify(slimmedElectronsWithUserData.userInts, - VIDNestedWPBitmapSpring15 = cms.InputTag("bitmapVIDForEleSpring15"), - VIDNestedWPBitmapSum16 = cms.InputTag("bitmapVIDForEleSum16"), - ) -(~run2_nanoAOD_preUL & run2_egamma_2016).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer16ULIdIsoValues", -) -(~run2_nanoAOD_preUL & run2_egamma_2017).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer17ULIdIsoValues" , -) -(~run2_nanoAOD_preUL & run2_egamma_2018).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer18ULIdIsoValues", -) -#################################################END slimmedElectrons with user data##################### -#################################################finalElectrons##################### -finalElectrons = cms.EDFilter("PATElectronRefSelector", - src = cms.InputTag("slimmedElectronsWithUserData"), - cut = cms.string("pt > 5 ") -) -#################################################finalElectrons##################### -################################################electronMVATTH##################### -electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer", - src = cms.InputTag("linkedObjects","electrons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG_2017.weights.xml"), - name = cms.string("electronMVATTH"), - isClassifier = cms.bool(True), - variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetDF","LepGood_jetPtRatio","LepGood_dxy","LepGood_sip3d","LepGood_dz","LepGood_mvaFall17V2noIso"]), - variables = cms.PSet( - LepGood_pt = cms.string("pt"), - LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"), - LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), - LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), - LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"), - LepGood_jetDF = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0"), - LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+userFloat('PFIsoAll04')/pt)"), - LepGood_dxy = cms.string("log(abs(dB('PV2D')))"), - LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), - LepGood_dz = cms.string("log(abs(dB('PVDZ')))"), - LepGood_mvaFall17V2noIso = cms.string("userFloat('mvaNoIso')"), - ) -) -run2_egamma_2016.toModify(electronMVATTH, - weightFile = "PhysicsTools/NanoAOD/data/el_BDTG_2016.weights.xml", -) -################################################electronMVATTH end##################### -################################################electronTable defn ##################### -electronTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","electrons"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Electron"), - doc = cms.string("slimmedElectrons after basic selection (" + finalElectrons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the electrons - variables = cms.PSet(CandVars, - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - photonIdx = Var("?overlaps('photons').size()>0?overlaps('photons')[0].key():-1", int, doc="index of the associated photon (-1 if none)"), - energyErr = Var("p4Error('P4_COMBINATION')",float,doc="energy error of the cluster-track combination",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10), - sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV, in cm",precision=10), - deltaEtaSC = Var("superCluster().eta()-eta()",float,doc="delta eta (SC,ele) with sign",precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the supercluster, calculated with full 5x5 region",precision=10), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=10), - eInvMinusPInv = Var("(1-eSuperClusterOverP())/ecalEnergy()",float,doc="1/E_SC - 1/p_trk",precision=10), - scEtOverPt = Var("(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc="(supercluster transverse energy)/pt-1",precision=8), - - mvaIso = Var("userFloat('mvaIso')",float,doc="MVA Iso ID V2 score"), - mvaIso_WP80 = Var("userInt('mvaIso_WP80')",bool,doc="MVA Iso ID V2 WP80"), - mvaIso_WP90 = Var("userInt('mvaIso_WP90')",bool,doc="MVA Iso ID V2 WP90"), - mvaIso_WPL = Var("userInt('mvaIso_WPL')",bool,doc="MVA Iso ID V2 loose WP"), - mvaNoIso = Var("userFloat('mvaNoIso')",float,doc="MVA noIso ID V2 score"), - mvaNoIso_WP80 = Var("userInt('mvaNoIso_WP80')",bool,doc="MVA noIso ID V2 WP80"), - mvaNoIso_WP90 = Var("userInt('mvaNoIso_WP90')",bool,doc="MVA noIso ID V2 WP90"), - mvaNoIso_WPL = Var("userInt('mvaNoIso_WPL')",bool,doc="MVA noIso ID V2 loose WP"), - mvaHZZIso = Var("userFloat('mvaHZZIso')", float,doc="HZZ MVA Iso ID score"), - - cutBased = Var("userInt('cutbasedID_Fall17_V2_veto')+userInt('cutbasedID_Fall17_V2_loose')+userInt('cutbasedID_Fall17_V2_medium')+userInt('cutbasedID_Fall17_V2_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - vidNestedWPBitmap = Var("userInt('VIDNestedWPBitmap')",int,doc=_bitmapVIDForEle_docstring), - vidNestedWPBitmapHEEP = Var("userInt('VIDNestedWPBitmapHEEP')",int,doc=_bitmapVIDForEleHEEP_docstring), - cutBased_HEEP = Var("userInt('cutbasedID_HEEP')",bool,doc="cut-based HEEP ID"), - miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - pfRelIso03_chg = Var("userFloat('PFIsoChg')/pt",float,doc="PF relative isolation dR=0.3, charged component"), - pfRelIso03_all = Var("userFloat('PFIsoAll')/pt",float,doc="PF relative isolation dR=0.3, total (with rho*EA PU corrections)"), - jetRelIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:userFloat('PFIsoAll04')/pt",float,doc="Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8), - jetPtRelv2 = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0",float,doc="Relative momentum of the lepton with respect to the closest jet after subtracting the lepton",precision=8), - dr03TkSumPt = Var("?pt>35?dr03TkSumPt():0",float,doc="Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - dr03TkSumPtHEEP = Var("?pt>35?dr03TkSumPtHEEP():0",float,doc="Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV used in HEEP ID",precision=8), - dr03EcalRecHitSumEt = Var("?pt>35?dr03EcalRecHitSumEt():0",float,doc="Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - dr03HcalDepth1TowerSumEt = Var("?pt>35?dr03HcalTowerSumEt(1):0",float,doc="Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - tightCharge = Var("isGsfCtfScPixChargeConsistent() + isGsfScPixChargeConsistent()",int,doc="Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)"), - convVeto = Var("passConversionVeto()",bool,doc="pass conversion veto"), - lostHits = Var("gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')","uint8",doc="number of missing inner hits"), - isPFcand = Var("pfCandidateRef().isNonnull()",bool,doc="electron is PF candidate"), - seedGain = Var("userInt('seedGain')","uint8",doc="Gain of the seed crystal"), - jetNDauCharged = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0", "uint8", doc="number of charged daughters of the closest jet"), - ), - externalVariables = cms.PSet( - mvaTTH = ExtVar(cms.InputTag("electronMVATTH"),float, doc="TTH MVA lepton ID score",precision=14), - fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:eleFsrIndex"),int, doc="Index of the lowest-dR/ET2 among associated FSR photons"), - ), -) - -#for technical reasons -#for modifier in run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_miniAOD_80XLegacy,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_106Xv2: -# modifier.toModify(electronTable.variables, -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_miniAOD_80XLegacy | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1 | run2_nanoAOD_106Xv2).toModify(electronTable.variables, - pt = Var("pt*userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalTrkEnergyErrPostCorrNew')", float, precision=6, doc="energy error of the cluster-track combination"), - eCorr = Var("userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, doc="ratio of the calibrated energy/miniaod energy"), - scEtOverPt = Var("(superCluster().energy()/(pt*userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')*cosh(superCluster().eta())))-1",float,doc="(supercluster transverse energy)/pt-1",precision=8), - dEscaleUp=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energyScaleUpNew')", float, doc="ecal energy scale shifted 1 sigma up(adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energyScaleDownNew')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energySigmaUpNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energySigmaDownNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - -) -##Keeping the possibilty of using V1 working points in older eras -(run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1).toModify(electronTable.variables, - mvaFall17V1Iso = Var("userFloat('mvaFall17V1Iso')",float,doc="MVA Iso ID V1 score"), - mvaFall17V1Iso_WP80 = Var("userInt('mvaFall17V1Iso_WP80')",bool,doc="MVA Iso ID V1 WP80"), - mvaFall17V1Iso_WP90 = Var("userInt('mvaFall17V1Iso_WP90')",bool,doc="MVA Iso ID V1 WP90"), - mvaFall17V1Iso_WPL = Var("userInt('mvaFall17V1Iso_WPL')",bool,doc="MVA Iso ID V1 loose WP"), - mvaFall17V1noIso = Var("userFloat('mvaFall17V1noIso')",float,doc="MVA noIso ID V1 score"), - mvaFall17V1noIso_WP80 = Var("userInt('mvaFall17V1noIso_WP80')",bool,doc="MVA noIso ID V1 WP80"), - mvaFall17V1noIso_WP90 = Var("userInt('mvaFall17V1noIso_WP90')",bool,doc="MVA noIso ID V1 WP90"), - mvaFall17V1noIso_WPL = Var("userInt('mvaFall17V1noIso_WPL')",bool,doc="MVA noIso ID V1 loose WP"), - cutBased_Fall17_V1 = Var("userInt('cutbasedID_Fall17_V1_veto')+userInt('cutbasedID_Fall17_V1_loose')+userInt('cutbasedID_Fall17_V1_medium')+userInt('cutbasedID_Fall17_V1_tight')",int,doc="cut-based ID Fall17 V1 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), -) - -#the94X miniAOD V2 had a bug in the scale and smearing for electrons in the E/p comb -#therefore we redo it but but we need use a new name for the userFloat as we cant override existing userfloats -# scale and smearing only when available#ONLY needed for this era -run2_nanoAOD_94X2016.toModify(electronTable.variables, - cutBased_Sum16 = Var("userInt('cutbasedID_Sum16_veto')+userInt('cutbasedID_Sum16_loose')+userInt('cutbasedID_Sum16_medium')+userInt('cutbasedID_Sum16_tight')",int,doc="cut-based Summer16 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - cutBased_Fall17_V1 = Var("electronID('cutBasedElectronID-Fall17-94X-V1-veto')+electronID('cutBasedElectronID-Fall17-94X-V1-loose')+electronID('cutBasedElectronID-Fall17-94X-V1-medium')+electronID('cutBasedElectronID-Fall17-94X-V1-tight')",int,doc="cut-based Fall17 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - #cutBased in 2016 corresponds to Spring16 not Fall17V2, so have to add in V2 ID explicitly - #it also doesnt exist in the miniAOD so have to redo it - cutBased = Var("userInt('cutbasedID_Fall17_V2_veto')+userInt('cutbasedID_Fall17_V2_loose')+userInt('cutbasedID_Fall17_V2_medium')+userInt('cutbasedID_Fall17_V2_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - cutBased_HLTPreSel = Var("userInt('cutbasedID_HLT')",int,doc="cut-based HLT pre-selection ID"), - cutBased_HEEP = Var("electronID('heepElectronID-HEEPV70')",bool,doc="cut-based HEEP ID"), - cutBased_Spring15 = Var("userInt('cutbasedID_Spring15_veto')+userInt('cutbasedID_Spring15_loose')+userInt('cutbasedID_Spring15_medium')+userInt('cutbasedID_Spring15_tight')",int,doc="cut-based Spring15 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - mvaSpring16GP = Var("userFloat('ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values')",float,doc="MVA Spring16 general-purpose ID score"), - mvaSpring16GP_WP80 = Var("electronID('mvaEleID-Spring16-GeneralPurpose-V1-wp80')",bool,doc="MVA Spring16 general-purpose ID WP80"), - mvaSpring16GP_WP90 = Var("electronID('mvaEleID-Spring16-GeneralPurpose-V1-wp90')",bool,doc="MVA Spring16 general-purpose ID WP90"), - mvaSpring16HZZ = Var("userFloat('ElectronMVAEstimatorRun2Spring16HZZV1Values')",float,doc="MVA Spring16 HZZ ID score"), - mvaSpring16HZZ_WPL = Var("electronID('mvaEleID-Spring16-HZZ-V1-wpLoose')",bool,doc="MVA Spring16 HZZ ID loose WP"), - mvaFall17V1Iso = Var("userFloat('ElectronMVAEstimatorRun2Fall17IsoV1Values')",float,doc="MVA Fall17 V1 Iso ID score"), - mvaFall17V1Iso_WP80 = Var("electronID('mvaEleID-Fall17-iso-V1-wp80')",bool,doc="MVA Fall17 V1 Iso ID WP80"), - mvaFall17V1Iso_WP90 = Var("electronID('mvaEleID-Fall17-iso-V1-wp90')",bool,doc="MVA Fall17 V1 Iso ID WP90"), - mvaFall17V1Iso_WPL = Var("electronID('mvaEleID-Fall17-iso-V1-wpLoose')",bool,doc="MVA Fall17 V1 Iso ID loose WP"), - mvaFall17V1noIso = Var("userFloat('ElectronMVAEstimatorRun2Fall17NoIsoV1Values')",float,doc="MVA Fall17 V1 noIso ID score"), - mvaFall17V1noIso_WP80 = Var("electronID('mvaEleID-Fall17-noIso-V1-wp80')",bool,doc="MVA Fall17 V1 noIso ID WP80"), - mvaFall17V1noIso_WP90 = Var("electronID('mvaEleID-Fall17-noIso-V1-wp90')",bool,doc="MVA Fall17 V1 noIso ID WP90"), - mvaFall17V1noIso_WPL = Var("electronID('mvaEleID-Fall17-noIso-V1-wpLoose')",bool,doc="MVA Fall17 V1 noIso ID loose WP"), - vidNestedWPBitmapSpring15 = Var("userInt('VIDNestedWPBitmapSpring15')",int,doc=_bitmapVIDForEleSpring15_docstring), - vidNestedWPBitmapSum16 = Var("userInt('VIDNestedWPBitmapSum16')",int,doc=_bitmapVIDForEleSum16_docstring), - pt = Var("pt*userFloat('ecalTrkEnergyPostCorr')/userFloat('ecalTrkEnergyPreCorr')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalTrkEnergyErrPostCorr')", float, precision=6, doc="energy error of the cluster-track combination"), - eCorr = Var("userFloat('ecalTrkEnergyPostCorr')/userFloat('ecalTrkEnergyPreCorr')", float, doc="ratio of the calibrated energy/miniaod energy"), - scEtOverPt = Var("(superCluster().energy()/(pt*userFloat('ecalTrkEnergyPostCorr')/userFloat('ecalTrkEnergyPreCorr')*cosh(superCluster().eta())))-1",float,doc="(supercluster transverse energy)/pt-1",precision=8), - dEscaleUp=Var("userFloat('ecalTrkEnergyPostCorr')-userFloat('energyScaleUp')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalTrkEnergyPostCorr')-userFloat('energyScaleDown')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalTrkEnergyPostCorr')-userFloat('energySigmaUp')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalTrkEnergyPostCorr')-userFloat('energySigmaDown')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), -) -### -run2_miniAOD_80XLegacy.toModify(electronTable.variables, - cutBased_Sum16 = Var("userInt('cutbasedID_Sum16_veto')+userInt('cutbasedID_Sum16_loose')+userInt('cutbasedID_Sum16_medium')+userInt('cutbasedID_Sum16_tight')",int,doc="cut-based Summer16 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - cutBased_HLTPreSel = Var("userInt('cutbasedID_HLT')",int,doc="cut-based HLT pre-selection ID"), - cutBased_Spring15 = Var("userInt('cutbasedID_Spring15_veto')+userInt('cutbasedID_Spring15_loose')+userInt('cutbasedID_Spring15_medium')+userInt('cutbasedID_Spring15_tight')",int,doc="cut-based Spring15 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - mvaSpring16GP = Var("userFloat('mvaSpring16GP')",float,doc="MVA general-purpose ID score"), - mvaSpring16GP_WP80 = Var("userInt('mvaSpring16GP_WP80')",bool,doc="MVA general-purpose ID WP80"), - mvaSpring16GP_WP90 = Var("userInt('mvaSpring16GP_WP90')",bool,doc="MVA general-purpose ID WP90"), - mvaSpring16HZZ = Var("userFloat('mvaSpring16HZZ')",float,doc="MVA HZZ ID score"), - mvaSpring16HZZ_WPL = Var("userInt('mvaSpring16HZZ_WPL')",bool,doc="MVA HZZ ID loose WP"), - - vidNestedWPBitmapSpring15 = Var("userInt('VIDNestedWPBitmapSpring15')",int,doc=_bitmapVIDForEleSpring15_docstring), - vidNestedWPBitmapSum16 = Var("userInt('VIDNestedWPBitmapSum16')",int,doc=_bitmapVIDForEleSum16_docstring), - -) -#############electron Table END##################### -# Depends on particlelevel producer run in particlelevel_cff -tautaggerForMatching = cms.EDProducer("GenJetTauTaggerProducer", - src = cms.InputTag('particleLevel:leptons') -) - ##PhysicsTools/NanoAOD/plugins/GenJetGenPartMerger.cc##this class misses fillDescription#TODO -matchingElecPhoton = cms.EDProducer("GenJetGenPartMerger", - srcJet =cms.InputTag("particleLevel:leptons"), - srcPart=cms.InputTag("particleLevel:photons"), - cut = cms.string("pt > 3"), - hasTauAnc=cms.InputTag("tautaggerForMatching"), -) -electronsMCMatchForTableAlt = cms.EDProducer("GenJetMatcherDRPtByDR", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = electronTable.src, # final reco collection - matched = cms.InputTag("matchingElecPhoton:merged"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) -electronsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = electronTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) -#should be cloned from PhysicsTools/NanoAOD/python/candMcMatchTable_cfi.py -electronMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = electronTable.src, - mcMapDressedLep = cms.InputTag("electronsMCMatchForTableAlt"), - mcMap = cms.InputTag("electronsMCMatchForTable"), - mapTauAnc = cms.InputTag("matchingElecPhoton:hasTauAnc"), - objName = electronTable.name, - objType = electronTable.name, #cms.string("Electron"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 electrons or photons"), - genparticles = cms.InputTag("finalGenParticles"), -) - -electronTask = cms.Task(bitmapVIDForEle,bitmapVIDForEleHEEP,isoForEle,ptRatioRelForEle,seedGainEle,calibratedPatElectronsNano,slimmedElectronsWithUserData,finalElectrons) -electronTablesTask = cms.Task(electronMVATTH, electronTable) -electronMCTask = cms.Task(tautaggerForMatching, matchingElecPhoton, electronsMCMatchForTable, electronsMCMatchForTableAlt, electronMCTable) - -# Revert back to AK4 CHS jets for Run 2 -run2_nanoAOD_ANY.toModify(ptRatioRelForEle,srcJet="updatedJets") - - -#for NANO from reminAOD, no need to run slimmedElectronsUpdated, other modules of electron sequence will run on slimmedElectrons -#for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1: -_modifiers = (run2_miniAOD_80XLegacy | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 |run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1) -_modifiers.toModify(bitmapVIDForEle, src = "slimmedElectronsUpdated") -_modifiers.toModify(bitmapVIDForEleSpring15, src = "slimmedElectronsUpdated") -_modifiers.toModify(bitmapVIDForEleSum16, src = "slimmedElectronsUpdated") -_modifiers.toModify(bitmapVIDForEleHEEP, src = "slimmedElectronsUpdated") -_modifiers.toModify(isoForEle, src = "slimmedElectronsUpdated") -_modifiers.toModify(ptRatioRelForEle, srcLep = "slimmedElectronsUpdated") -_modifiers.toModify(seedGainEle, src = "slimmedElectronsUpdated") -_modifiers.toModify(slimmedElectronsWithUserData, src = "slimmedElectronsUpdated") -_modifiers.toModify(calibratedPatElectronsNano, src = "slimmedElectronsUpdated") -###this sequence should run for all eras except run2_nanoAOD_106Xv2 which should run the electronSequence as above -_withULAndUpdate_Task = cms.Task(slimmedElectronsUpdated) -_withULAndUpdate_Task.add(electronTask.copy()) -_modifiers.toReplaceWith(electronTask, _withULAndUpdate_Task) - -heepIDVarValueMaps = cms.EDProducer("ElectronHEEPIDValueMapProducer", - beamSpot = cms.InputTag("offlineBeamSpot"), - candVetosAOD = cms.vstring( - 'ELES', - 'NONE', - 'NONELES' - ), - candVetosMiniAOD = cms.vstring( - 'ELES', - 'NONE', - 'NONELES' - ), - candsAOD = cms.VInputTag("packedCandsForTkIso", "lostTracksForTkIso", "lostTracksForTkIso:eleTracks"), - candsMiniAOD = cms.VInputTag("packedPFCandidates", "lostTracks", "lostTracks:eleTracks"), - dataFormat = cms.int32(2), - ebRecHitsAOD = cms.InputTag("reducedEcalRecHitsEB"), - ebRecHitsMiniAOD = cms.InputTag("reducedEgamma","reducedEBRecHits"), - eeRecHitsAOD = cms.InputTag("reducedEcalRecHitsEB"), - eeRecHitsMiniAOD = cms.InputTag("reducedEgamma","reducedEERecHits"), - elesAOD = cms.InputTag("gedGsfElectrons"), - elesMiniAOD = cms.InputTag("slimmedElectrons"), - makeTrkIso04 = cms.bool(True), - trkIso04Config = cms.PSet( - barrelCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.4), - maxDZ = cms.double(0.1), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ), - endcapCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.4), - maxDZ = cms.double(0.5), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ) - ), - trkIsoConfig = cms.PSet( - barrelCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.3), - maxDZ = cms.double(0.1), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ), - endcapCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.3), - maxDZ = cms.double(0.5), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ) - ) -) - -_withTo106XAndUpdate_Task = cms.Task(heepIDVarValueMaps,slimmedElectronsTo106X) -_withTo106XAndUpdate_Task.add(electronTask.copy()) -heepIDVarValueMaps.dataFormat = 2 - -#for modifier in run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_94X2016, run2_nanoAOD_102Xv1, run2_nanoAOD_94XMiniAODv1: -# modifier.toReplaceWith(electronTask, _withTo106XAndUpdate_Task) -(run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_94XMiniAODv1).toReplaceWith(electronTask, _withTo106XAndUpdate_Task) - -#for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: -_withTo106XAndUpdateAnd80XLegacyScale_Task = cms.Task(bitmapVIDForEleSpring15,bitmapVIDForEleSum16) -_withTo106XAndUpdateAnd80XLegacyScale_Task.add(_withTo106XAndUpdate_Task.copy()) -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toReplaceWith(electronTask, _withTo106XAndUpdateAnd80XLegacyScale_Task) - -_withTo106XAndUpdateAnd94XScale_Task = _withTo106XAndUpdate_Task.copy() -#for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1: -# modifier.toReplaceWith(electronTask, _withTo106XAndUpdate_Task) -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toReplaceWith(electronTask, _withTo106XAndUpdate_Task) diff --git a/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py b/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py deleted file mode 100644 index d69745baaccec..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py +++ /dev/null @@ -1,98 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * - -# Bad/clone muon filters - tagging mode to keep the event -badGlobalMuonTagger = cms.EDFilter("BadGlobalMuonTagger", - muonPtCut = cms.double(20), - muons = cms.InputTag("slimmedMuons"), - selectClones = cms.bool(False), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -cloneGlobalMuonTagger = cms.EDFilter("BadGlobalMuonTagger", - muonPtCut = cms.double(20), - muons = cms.InputTag("slimmedMuons"), - selectClones = cms.bool(True), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -BadPFMuonTagger = cms.EDFilter("BadParticleFilter", - PFCandidates = cms.InputTag("particleFlow"), - algo = cms.int32(14), - filterType = cms.string('BadPFMuon'), - innerTrackRelErr = cms.double(1), - maxDR = cms.double(0.001), - mightGet = cms.optional.untracked.vstring, - minDzBestTrack = cms.double(-1), - minMuonPt = cms.double(100), - minMuonTrackRelErr = cms.double(2), - minPtDiffRel = cms.double(0), - muons = cms.InputTag("muons"), - segmentCompatibility = cms.double(0.3), - taggingMode = cms.bool(False), - vtx = cms.InputTag("offlinePrimaryVertices") -) - -# Bad charge hadron -BadChargedCandidateTagger = cms.EDFilter("BadParticleFilter", - PFCandidates = cms.InputTag("packedPFCandidates"), - algo = cms.int32(14), - filterType = cms.string('BadChargedCandidate'), - innerTrackRelErr = cms.double(1), - maxDR = cms.double(1e-05), - mightGet = cms.optional.untracked.vstring, - minDzBestTrack = cms.double(-1), - minMuonPt = cms.double(100), - minMuonTrackRelErr = cms.double(2), - minPtDiffRel = cms.double(1e-05), - muons = cms.InputTag("slimmedMuons"), - segmentCompatibility = cms.double(0.3), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -extraFlagsTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - Flag_BadGlobalMuon = ExtVar(cms.InputTag("badGlobalMuonTagger:notBadEvent"), bool, doc = "Bad muon flag"), - Flag_CloneGlobalMuon = ExtVar(cms.InputTag("cloneGlobalMuonTagger:notBadEvent"), bool, doc = "Clone muon flag"), - Flag_BadPFMuonFilter = ExtVar(cms.InputTag("BadPFMuonTagger"), bool, doc = "Bad PF muon flag"), - Flag_BadChargedCandidateFilter = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), - ) -) - -ecalBadCalibFilterNanoTagger = cms.EDFilter("EcalBadCalibFilter", - EcalRecHitSource = cms.InputTag("reducedEcalRecHitsEE"), - baddetEcal = cms.vuint32( - 872439604, 872422825, 872420274, 872423218, 872423215, - 872416066, 872435036, 872439336, 872420273, 872436907, - 872420147, 872439731, 872436657, 872420397, 872439732, - 872439339, 872439603, 872422436, 872439861, 872437051, - 872437052, 872420649, 872421950, 872437185, 872422564, - 872421566, 872421695, 872421955, 872421567, 872437184, - 872421951, 872421694, 872437056, 872437057, 872437313 - ), - debug = cms.bool(False), - ecalMinEt = cms.double(50.0), - taggingMode = cms.bool(True) -) - -# modify extraFlagsTable to store ecalBadCalibFilter decision which is re-run with updated bad crystal list for 2017 and 2018 samples -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(extraFlagsTable, variables= cms.PSet()).toModify(extraFlagsTable, variables = dict(Flag_ecalBadCalibFilterV2 = ExtVar(cms.InputTag("ecalBadCalibFilterNanoTagger"), bool, doc = "Bad ECAL calib flag (updatedxtal list)"))) - - -# empty task as default -extraFlagsProducersTask = cms.Task() -extraFlagsTableTask = cms.Task() - -## those need to be added only for some specific eras -extraFlagsProducersTask_80x = cms.Task(badGlobalMuonTagger,cloneGlobalMuonTagger,BadPFMuonTagger,BadChargedCandidateTagger) -extraFlagsProducersTask_102x = cms.Task(ecalBadCalibFilterNanoTagger) - -run2_miniAOD_80XLegacy.toReplaceWith(extraFlagsProducersTask, extraFlagsProducersTask_80x) -run2_miniAOD_80XLegacy.toReplaceWith(extraFlagsTableTask, cms.Task(extraFlagsTable)) - -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toReplaceWith(extraFlagsProducersTask, extraFlagsProducersTask_102x) -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toReplaceWith(extraFlagsTableTask, cms.Task(extraFlagsTable)) diff --git a/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py b/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py deleted file mode 100644 index f8ace9b242dd7..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py +++ /dev/null @@ -1,35 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import P3Vars,Var - - -leptonFSRphotons = cms.EDProducer("LeptonFSRProducer", - deltaROverEt2Max = cms.double(0.05), - eleEtaMax = cms.double(2.5), - elePtMin = cms.double(5), - electrons = cms.InputTag("linkedObjects","electrons"), - isolation = cms.double(2), - mightGet = cms.optional.untracked.vstring, - muonEtaMax = cms.double(2.4), - muonPtMin = cms.double(3), - muons = cms.InputTag("linkedObjects","muons"), - packedPFCandidates = cms.InputTag("packedPFCandidates"), - photonPtMin = cms.double(2), - slimmedElectrons = cms.InputTag("slimmedElectrons") -) - -fsrTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("leptonFSRphotons"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("FsrPhoton"), - doc = cms.string("Final state radiation photons emitted by muons or electrons"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(P3Vars, - relIso03 = Var("userFloat('relIso03')",float,doc="relative isolation in a 0.3 cone without CHS"), - dROverEt2 = Var("userFloat('dROverEt2')",float,doc="deltaR to associated muon divided by photon et2"), - muonIdx = Var("?hasUserCand('associatedMuon')?userCand('associatedMuon').key():-1",int, doc="index of associated muon"), - electronIdx = Var("?hasUserCand('associatedElectron')?userCand('associatedElectron').key():-1",int, doc="index of associated electron") - ) - ) - -fsrTablesTask = cms.Task(leptonFSRphotons,fsrTable) diff --git a/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py b/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py deleted file mode 100644 index 50fa0f67d4ae6..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py +++ /dev/null @@ -1,30 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar -from PhysicsTools.NanoAOD.nano_eras_cff import run2_nanoAOD_92X,run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1 - -genVertexTable = cms.EDProducer("SimpleXYZPointFlatTableProducer", - src = cms.InputTag("genParticles:xyz0"), - cut = cms.string(""), - name= cms.string("GenVtx"), - doc = cms.string("Gen vertex"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - x = Var("X", float, doc="gen vertex x", precision=10), - y = Var("Y", float, doc="gen vertex y", precision=10), - z = Var("Z", float, doc="gen vertex z", precision=16), - ) -) - -genVertexT0Table = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("GenVtx"), - extension = cms.bool(True), - variables = cms.PSet( - t0 = ExtVar( cms.InputTag("genParticles:t0"), "float", doc = "gen vertex t0", precision=12), - ) -) - -genVertexTablesTask = cms.Task(genVertexTable,genVertexT0Table) - -# GenVertex only stored in newer MiniAOD -(run2_nanoAOD_92X | run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toReplaceWith(genVertexTablesTask, cms.Task()) diff --git a/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py deleted file mode 100644 index 158763fc7d51d..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py +++ /dev/null @@ -1,30 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -genWeightsTable = cms.EDProducer("GenWeightsTableProducer", - genEvent = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator"), - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html - cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_hessian"), lhaid = cms.uint32(304400) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc_hessian_pdfas"), lhaid = cms.uint32(325300) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc"), lhaid = cms.uint32(316200) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4_mc_hessian"), lhaid = cms.uint32(325500) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4"), lhaid = cms.uint32(320900) ), - cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... - cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) - cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30_pdfas"), lhaid = cms.uint32(90400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30"), lhaid = cms.uint32(90900) ), - ), - namedWeightIDs = cms.vstring(), - namedWeightLabels = cms.vstring(), - lheWeightPrecision = cms.int32(14), - maxPdfWeights = cms.uint32(150), - keepAllPSWeights = cms.bool(False), - debug = cms.untracked.bool(False), -) - -genWeightsTableTask = cms.Task(genWeightsTable) diff --git a/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py b/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py deleted file mode 100644 index 1611729c8fbaf..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py +++ /dev/null @@ -1,86 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var - - - -##################### User floats producers, selectors ########################## - -finalGenParticles = cms.EDProducer("GenParticlePruner", - src = cms.InputTag("prunedGenParticles"), - select = cms.vstring( - "drop *", - "keep++ abs(pdgId) == 15 & (pt > 15 || isPromptDecayed() )",# keep full tau decay chain for some taus - #"drop status==1 & pt < 1", #drop soft stable particle in tau decay - "keep+ abs(pdgId) == 15 ", # keep first gen decay product for all tau - "+keep pdgId == 22 && status == 1 && (pt > 10 || isPromptFinalState())", # keep gamma above 10 GeV (or all prompt) and its first parent - "+keep abs(pdgId) == 11 || abs(pdgId) == 13 || abs(pdgId) == 15", #keep leptons, with at most one mother back in the history - "drop abs(pdgId)= 2212 && abs(pz) > 1000", #drop LHC protons accidentally added by previous keeps - "keep (400 < abs(pdgId) < 600) || (4000 < abs(pdgId) < 6000)", #keep all B and C hadrons - "keep abs(pdgId) == 12 || abs(pdgId) == 14 || abs(pdgId) == 16", # keep neutrinos - "keep status == 3 || (status > 20 && status < 30)", #keep matrix element summary - "keep isHardProcess() || fromHardProcessDecayed() || fromHardProcessFinalState() || (statusFlags().fromHardProcess() && statusFlags().isLastCopy())", #keep event summary based on status flags - "keep (status > 70 && status < 80 && pt > 15) ", # keep high pt partons right before hadronization - "keep abs(pdgId) == 23 || abs(pdgId) == 24 || abs(pdgId) == 25 || abs(pdgId) == 37 ", # keep VIP(articles)s - #"keep abs(pdgId) == 310 && abs(eta) < 2.5 && pt > 1 ", # keep K0 - "keep (1000001 <= abs(pdgId) <= 1000039 ) || ( 2000001 <= abs(pdgId) <= 2000015)", #keep SUSY fiction particles - - ) -) - - - -##################### Tables for final output and docs ########################## -genParticleTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalGenParticles"), - cut = cms.string(""), #we should not filter after pruning - name= cms.string("GenPart"), - doc = cms.string("interesting gen particles "), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet( - pt = Var("pt", float, precision=8), - phi = Var("phi", float,precision=8), - eta = Var("eta", float,precision=8), - mass = Var("?!((abs(pdgId)>=1 && abs(pdgId)<=5) || (abs(pdgId)>=11 && abs(pdgId)<=16) || pdgId==21 || pdgId==111 || abs(pdgId)==211 || abs(pdgId)==421 || abs(pdgId)==411 || (pdgId==22 && mass<1))?mass:0", float,precision="?((abs(pdgId)==6 || abs(pdgId)>1000000) && statusFlags().isLastCopy())?20:8",doc="Mass stored for all particles with the exception of quarks (except top), leptons/neutrinos, photons with mass < 1 GeV, gluons, pi0(111), pi+(211), D0(421), and D+(411). For these particles, you can lookup the value from PDG."), - pdgId = Var("pdgId", int, doc="PDG id"), - status = Var("status", int, doc="Particle status. 1=stable"), - genPartIdxMother = Var("?numberOfMothers>0?motherRef(0).key():-1", int, doc="index of the mother particle"), - statusFlags = (Var( - "statusFlags().isLastCopyBeforeFSR() * 16384 +" - "statusFlags().isLastCopy() * 8192 +" - "statusFlags().isFirstCopy() * 4096 +" - "statusFlags().fromHardProcessBeforeFSR() * 2048 +" - "statusFlags().isDirectHardProcessTauDecayProduct() * 1024 +" - "statusFlags().isHardProcessTauDecayProduct() * 512 +" - "statusFlags().fromHardProcess() * 256 +" - "statusFlags().isHardProcess() * 128 +" - "statusFlags().isDirectHadronDecayProduct() * 64 +" - "statusFlags().isDirectPromptTauDecayProduct() * 32 +" - "statusFlags().isDirectTauDecayProduct() * 16 +" - "statusFlags().isPromptTauDecayProduct() * 8 +" - "statusFlags().isTauDecayProduct() * 4 +" - "statusFlags().isDecayedLeptonHadron() * 2 +" - "statusFlags().isPrompt() * 1 ", - int, doc=("gen status flags stored bitwise, bits are: " - "0 : isPrompt, " - "1 : isDecayedLeptonHadron, " - "2 : isTauDecayProduct, " - "3 : isPromptTauDecayProduct, " - "4 : isDirectTauDecayProduct, " - "5 : isDirectPromptTauDecayProduct, " - "6 : isDirectHadronDecayProduct, " - "7 : isHardProcess, " - "8 : fromHardProcess, " - "9 : isHardProcessTauDecayProduct, " - "10 : isDirectHardProcessTauDecayProduct, " - "11 : fromHardProcessBeforeFSR, " - "12 : isFirstCopy, " - "13 : isLastCopy, " - "14 : isLastCopyBeforeFSR, ") - )), - ) -) - -genParticleTask = cms.Task(finalGenParticles) -genParticleTablesTask = cms.Task(genParticleTable) - diff --git a/PhysicsTools/NanoAOD/python/V10/globals_cff.py b/PhysicsTools/NanoAOD/python/V10/globals_cff.py deleted file mode 100644 index 9553556d2e86b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/globals_cff.py +++ /dev/null @@ -1,74 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar - -beamSpotTable = cms.EDProducer("SimpleBeamspotFlatTableProducer", - src = cms.InputTag("offlineBeamSpot"), - name = cms.string("BeamSpot"), - doc = cms.string("offlineBeamSpot, the offline reconstructed beamspot"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet( - type = Var("type()","int8",doc="BeamSpot type (Unknown = -1, Fake = 0, LHC = 1, Tracker = 2)"), - z = Var("position().z()",float,doc="BeamSpot center, z coordinate (cm)",precision=-1), - zError = Var("z0Error()",float,doc="Error on BeamSpot center, z coordinate (cm)",precision=-1), - sigmaZ = Var("sigmaZ()",float,doc="Width of BeamSpot in z (cm)",precision=-1), - sigmaZError = Var("sigmaZ0Error()",float,doc="Error on width of BeamSpot in z (cm)",precision=-1), - ), -) - -rhoTable = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("Rho"), - variables = cms.PSet( - fixedGridRhoAll = ExtVar( cms.InputTag("fixedGridRhoAll"), "double", doc = "rho from all PF Candidates, no foreground removal (for isolation of prompt photons)" ), - fixedGridRhoFastjetAll = ExtVar( cms.InputTag("fixedGridRhoFastjetAll"), "double", doc = "rho from all PF Candidates, used e.g. for JECs" ), - fixedGridRhoFastjetCentralNeutral = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralNeutral"), "double", doc = "rho from neutral PF Candidates with |eta| < 2.5, used e.g. for rho corrections of some lepton isolations" ), - fixedGridRhoFastjetCentralCalo = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralCalo"), "double", doc = "rho from calo towers with |eta| < 2.5, used e.g. egamma PFCluster isolation" ), - fixedGridRhoFastjetCentral = ExtVar( cms.InputTag("fixedGridRhoFastjetCentral"), "double", doc = "rho from all PF Candidates for central region, used e.g. for JECs" ), - fixedGridRhoFastjetCentralChargedPileUp = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralChargedPileUp"), "double", doc = "rho from charged PF Candidates for central region, used e.g. for JECs" ), - ) -) - -puTable = cms.EDProducer("NPUTablesProducer", - src = cms.InputTag("slimmedAddPileupInfo"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - zbins = cms.vdouble( [0.0,1.7,2.6,3.0,3.5,4.2,5.2,6.0,7.5,9.0,12.0] ), - savePtHatMax = cms.bool(False), -) - -genTable = cms.EDProducer("SimpleGenEventFlatTableProducer", - src = cms.InputTag("generator"), - cut = cms.string(""), - name= cms.string("Generator"), - doc = cms.string("Generator information"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - x1 = Var( "?hasPDF?pdf().x.first:-1", float, doc="x1 fraction of proton momentum carried by the first parton",precision=14 ), - x2 = Var( "?hasPDF?pdf().x.second:-1", float, doc="x2 fraction of proton momentum carried by the second parton",precision=14 ), - xpdf1 = Var( "?hasPDF?pdf().xPDF.first:-1", float, doc="x*pdf(x) for the first parton", precision=14 ), - xpdf2 = Var( "?hasPDF?pdf().xPDF.second:-1", float, doc="x*pdf(x) for the second parton", precision=14 ), - id1 = Var( "?hasPDF?pdf().id.first:-1", int, doc="id of first parton", precision=6 ), - id2 = Var( "?hasPDF?pdf().id.second:-1", int, doc="id of second parton", precision=6 ), - scalePDF = Var( "?hasPDF?pdf().scalePDF:-1", float, doc="Q2 scale for PDF", precision=14 ), - binvar = Var("?hasBinningValues()?binningValues()[0]:-1", float, doc="MC generation binning value", precision=14), - weight = Var("weight()", float,doc="MC generator weight", precision=14), - ), -) - -genFilterTable = cms.EDProducer("SimpleGenFilterFlatTableProducerLumi", - src = cms.InputTag("genFilterEfficiencyProducer"), - cut = cms.string(""), - name= cms.string("GenFilter"), - doc = cms.string("Generator filter information"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - numEventsTotal = Var("numEventsTotal()", int, doc="generator filter: total number of events", precision=6), - numEventsPassed = Var("numEventsPassed()", int, doc="generator filter: passed number of events", precision=6), - filterEfficiency = Var("filterEfficiency()", float, doc="generator filter: efficiency", precision=14), - filterEfficiencyError = Var("filterEfficiencyError()", float, doc="generator filter: efficiency error", precision=14), - ), -) - -globalTablesTask = cms.Task(beamSpotTable, rhoTable) -globalTablesMCTask = cms.Task(puTable,genTable,genFilterTable) diff --git a/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py b/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py deleted file mode 100644 index 9b87f0bb91d39..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py +++ /dev/null @@ -1,56 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar,P3Vars -from PhysicsTools.NanoAOD.nano_eras_cff import run2_miniAOD_80XLegacy - -finalIsolatedTracks = cms.EDProducer("IsolatedTrackCleaner", - tracks = cms.InputTag("isolatedTracks"), - cut = cms.string("((pt>5 && (abs(pdgId) == 11 || abs(pdgId) == 13)) || pt > 10) && (abs(pdgId) < 15 || abs(eta) < 2.5) && ((abs(dxy) < 0.2 && abs(dz) < 0.1) || pt>15) && ((pfIsolationDR03().chargedHadronIso < 5 && pt < 25) || pfIsolationDR03().chargedHadronIso/pt < 0.2)"), - finalLeptons = cms.VInputTag( - cms.InputTag("finalElectrons"), - cms.InputTag("finalLooseMuons"), - ), -) - -isoForIsoTk = cms.EDProducer("IsoTrackIsoValueMapProducer", - src = cms.InputTag("finalIsolatedTracks"), - relative = cms.bool(True), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt"), -) - -isFromLostTrackForIsoTk = cms.EDProducer("IsFromLostTrackMapProducer", - srcIsoTracks = cms.InputTag("finalIsolatedTracks"), - packedPFCandidates = cms.InputTag("packedPFCandidates"), - lostTracks = cms.InputTag("lostTracks"), -) - -isoTrackTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalIsolatedTracks"), - cut = cms.string(""), # filtered already above - name = cms.string("IsoTrack"), - doc = cms.string("isolated tracks after basic selection (" + finalIsolatedTracks.cut.value() + ") and lepton veto"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(P3Vars, - dz = Var("dz",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dxy = Var("dxy",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - pfRelIso03_chg = Var("pfIsolationDR03().chargedHadronIso/pt",float,doc="PF relative isolation dR=0.3, charged component",precision=10), - pfRelIso03_all = Var("(pfIsolationDR03().chargedHadronIso + max(pfIsolationDR03().neutralHadronIso + pfIsolationDR03().photonIso - pfIsolationDR03().puChargedHadronIso/2,0.0))/pt",float,doc="PF relative isolation dR=0.3, total (deltaBeta corrections)",precision=10), - isPFcand = Var("packedCandRef().isNonnull()",bool,doc="if isolated track is a PF candidate"), - fromPV = Var("fromPV", int, doc="isolated track comes from PV"), - pdgId = Var("pdgId",int,doc="PDG id of PF cand"), - isHighPurityTrack = Var("isHighPurityTrack",bool,doc="track is high purity"), - charge = Var("charge", int, doc="electric charge"), - ), - externalVariables = cms.PSet( - miniPFRelIso_chg = ExtVar("isoForIsoTk:miniIsoChg",float,doc="mini PF relative isolation, charged component",precision=10), - miniPFRelIso_all = ExtVar("isoForIsoTk:miniIsoAll",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)",precision=10), - isFromLostTrack = ExtVar("isFromLostTrackForIsoTk:isFromLostTrack",bool,doc="if isolated track comes from a lost track"), - ), -) - -isoTrackTask = cms.Task(finalIsolatedTracks,isoForIsoTk,isFromLostTrackForIsoTk) -isoTrackTablesTask = cms.Task(isoTrackTable) - -run2_miniAOD_80XLegacy.toReplaceWith(isoTrackTask, cms.Task()) -run2_miniAOD_80XLegacy.toReplaceWith(isoTrackTablesTask,cms.Task()) diff --git a/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py b/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py deleted file mode 100644 index 41d354cfe012a..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py +++ /dev/null @@ -1,143 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK8_cff import fatJetTable as _fatJetTable -from PhysicsTools.NanoAOD.V10.jetsAK8_cff import subJetTable as _subJetTable - -jetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Jet"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(True), # this is an extension table for the jets - variables = cms.PSet( - partonFlavour = Var("partonFlavour()", int, doc="flavour from parton matching"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - genJetIdx = Var("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen jet"), - ) -) -genJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJets"), - cut = cms.string("pt > 10"), - name = cms.string("GenJet"), - doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) - -patJetPartonsNano = cms.EDProducer('HadronAndPartonSelector', - src = cms.InputTag("generator"), - particles = cms.InputTag("prunedGenParticles"), - partonMode = cms.string("Auto"), - fullChainPhysPartons = cms.bool(True) -) - -genJetFlavourAssociation = cms.EDProducer("JetFlavourClustering", - jets = genJetTable.src, - bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), - cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), - partons = cms.InputTag("patJetPartonsNano","physicsPartons"), - leptons = cms.InputTag("patJetPartonsNano","leptons"), - jetAlgorithm = cms.string("AntiKt"), - rParam = cms.double(0.4), - ghostRescaling = cms.double(1e-18), - hadronFlavourHasPriority = cms.bool(False) -) - -genJetFlavourTable = cms.EDProducer("GenJetFlavourTableProducer", - name = genJetTable.name, - src = genJetTable.src, - cut = genJetTable.cut, - deltaR = cms.double(0.1), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), -) - -genJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJetsAK8"), - cut = cms.string("pt > 100."), - name = cms.string("GenJetAK8"), - doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) - -genJetAK8FlavourAssociation = cms.EDProducer("JetFlavourClustering", - jets = genJetAK8Table.src, - bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), - cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), - partons = cms.InputTag("patJetPartonsNano","physicsPartons"), - leptons = cms.InputTag("patJetPartonsNano","leptons"), - jetAlgorithm = cms.string("AntiKt"), - rParam = cms.double(0.8), - ghostRescaling = cms.double(1e-18), - hadronFlavourHasPriority = cms.bool(False) -) - -genJetAK8FlavourTable = cms.EDProducer("GenJetFlavourTableProducer", - name = genJetAK8Table.name, - src = genJetAK8Table.src, - cut = genJetAK8Table.cut, - deltaR = cms.double(0.1), - jetFlavourInfos = cms.InputTag("genJetAK8FlavourAssociation"), -) -fatJetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = _fatJetTable.src, - cut = _fatJetTable.cut, - name = _fatJetTable.name, - singleton = cms.bool(False), - extension = cms.bool(True), - variables = cms.PSet( - nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), - nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - genJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 100.?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen AK8 jet"), - ) -) - -genSubJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJetsAK8SoftDropSubJets"), - cut = cms.string(""), ## These don't get a pt cut, but in miniAOD only subjets from fat jets with pt > 100 are kept - name = cms.string("SubGenJetAK8"), - doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) -subjetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = _subJetTable.src, - cut = _subJetTable.cut, - name = _subJetTable.name, - singleton = cms.bool(False), - extension = cms.bool(True), - variables = cms.PSet( - nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), - nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - ) -) - - -jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable) -jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable) -jetMCTask = jetMCTaskak4.copy() -jetMCTask.add(jetMCTaskak8) - - -### Era dependent customization -run2_miniAOD_80XLegacy.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) - -_jetMCTaskak8 = jetMCTaskak8.copyAndExclude([genSubJetAK8Table]) - -_jetMC_pre94XTask = jetMCTaskak4.copy() -_jetMC_pre94XTask.add(genJetFlavourAssociation) -_jetMC_pre94XTask.add(_jetMCTaskak8) -run2_miniAOD_80XLegacy.toReplaceWith(jetMCTask, _jetMC_pre94XTask) diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py deleted file mode 100644 index fc573f596b20f..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py +++ /dev/null @@ -1,493 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -##################### User floats producers, selectors ########################## - -# Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1) -# (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above ) -jetCorrFactorsNano = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK4PFchs'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJets"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - -updatedJets = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetCorrFactorsNano")), - jetSource = cms.InputTag("slimmedJets"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -# -# JetID -# -looseJetId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('WINTER16'), - quality = cms.string('LOOSE'), - ), - src = cms.InputTag("updatedJets") -) -tightJetId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULCHS'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJets") -) -tightJetIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULCHS'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJets") -) -run2_jme_2016.toModify( tightJetId.filterParams, version = "RUN2UL16CHS" ) -run2_jme_2016.toModify( tightJetIdLepVeto.filterParams, version = "RUN2UL16CHS" ) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify( tightJetId.filterParams, version = "WINTER16" ) - modifier.toModify( tightJetIdLepVeto.filterParams, version = "WINTER16" ) -for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify( tightJetId.filterParams, version = "WINTER17" ) - modifier.toModify( tightJetIdLepVeto.filterParams, version = "WINTER17" ) -run2_nanoAOD_102Xv1.toModify( tightJetId.filterParams, version = "SUMMER18" ) -run2_nanoAOD_102Xv1.toModify( tightJetIdLepVeto.filterParams, version = "SUMMER18" ) - -bJetVars = cms.EDProducer("JetRegressionVarProducer", - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - src = cms.InputTag("updatedJets"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), - gpsrc = cms.InputTag("prunedGenParticles"), - #musrc = cms.InputTag("slimmedMuons"), - #elesrc = cms.InputTag("slimmedElectrons") -) - -jercVars = cms.EDProducer("BetaStarPackedCandidateVarProducer", - srcJet = cms.InputTag("updatedJets"), - srcPF = cms.InputTag("packedPFCandidates"), - maxDR = cms.double(0.4) -) - -updatedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJets"), - userFloats = cms.PSet( - leadTrackPt = cms.InputTag("bJetVars:leadTrackPt"), - leptonPtRel = cms.InputTag("bJetVars:leptonPtRel"), - leptonPtRatio = cms.InputTag("bJetVars:leptonPtRatio"), - leptonPtRelInv = cms.InputTag("bJetVars:leptonPtRelInv"), - leptonPtRelv0 = cms.InputTag("bJetVars:leptonPtRelv0"), - leptonPtRatiov0 = cms.InputTag("bJetVars:leptonPtRatiov0"), - leptonPtRelInvv0 = cms.InputTag("bJetVars:leptonPtRelInvv0"), - leptonDeltaR = cms.InputTag("bJetVars:leptonDeltaR"), - leptonPt = cms.InputTag("bJetVars:leptonPt"), - vtxPt = cms.InputTag("bJetVars:vtxPt"), - vtxMass = cms.InputTag("bJetVars:vtxMass"), - vtx3dL = cms.InputTag("bJetVars:vtx3dL"), - vtx3deL = cms.InputTag("bJetVars:vtx3deL"), - ptD = cms.InputTag("bJetVars:ptD"), - genPtwNu = cms.InputTag("bJetVars:genPtwNu"), - qgl = cms.InputTag('qgtagger:qgLikelihood'), - puIdNanoDisc = cms.InputTag('pileupJetIdNano:fullDiscriminant'), - chFPV0EF = cms.InputTag("jercVars:chargedFromPV0EnergyFraction"), - ), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetId"), - tightIdLepVeto = cms.InputTag("tightJetIdLepVeto"), - vtxNtrk = cms.InputTag("bJetVars:vtxNtrk"), - leptonPdgId = cms.InputTag("bJetVars:leptonPdgId"), - puIdNanoId = cms.InputTag('pileupJetIdNano:fullId'), - ), -) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify(updatedJetsWithUserData.userInts, - looseId = cms.InputTag("looseJetId"), - ) - - -finalJets = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsWithUserData"), - cut = cms.string("pt > 15") -) - - -##################### Tables for final output and docs ########################## - - -jetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Jet"), - doc = cms.string("slimmedJets, i.e. ak4 PFJets CHS with JECs applied, after basic selection (" + finalJets.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - externalVariables = cms.PSet( - bRegCorr = ExtVar(cms.InputTag("bjetNN:corr"),float, doc="pt correction for b-jet energy regression",precision=10), - bRegRes = ExtVar(cms.InputTag("bjetNN:res"),float, doc="res on pt corrected with b-jet regression",precision=6), - cRegCorr = ExtVar(cms.InputTag("cjetNN:corr"),float, doc="pt correction for c-jet energy regression",precision=10), - cRegRes = ExtVar(cms.InputTag("cjetNN:res"),float, doc="res on pt corrected with c-jet regression",precision=6), - ), - variables = cms.PSet(P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - nMuons = Var("?hasOverlaps('muons')?overlaps('muons').size():0", int, doc="number of muons in the jet"), - muonIdx1 = Var("?overlaps('muons').size()>0?overlaps('muons')[0].key():-1", int, doc="index of first matching muon"), - muonIdx2 = Var("?overlaps('muons').size()>1?overlaps('muons')[1].key():-1", int, doc="index of second matching muon"), - electronIdx1 = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of first matching electron"), - electronIdx2 = Var("?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1", int, doc="index of second matching electron"), - nElectrons = Var("?hasOverlaps('electrons')?overlaps('electrons').size():0", int, doc="number of electrons in the jet"), - btagDeepB = Var("?(bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc="DeepCSV b+bb tag discriminator",precision=10), - btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - btagDeepCvL = Var("?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probudsg')):-1", float,doc="DeepCSV c vs udsg discriminator",precision=10), - btagDeepCvB = Var("?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')):-1",float,doc="DeepCSV c vs b+bb discriminator",precision=10), - btagDeepFlavCvL = Var("?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg')):-1",float,doc="DeepJet c vs uds+g discriminator",precision=10), - btagDeepFlavCvB = Var("?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')):-1",float,doc="DeepJet c vs b+bb+lepb discriminator",precision=10), - btagDeepFlavQG = Var("?(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1",float,doc="DeepJet g vs uds discriminator",precision=10), - puIdDisc = Var("userFloat('puIdNanoDisc')", float,doc="Pileup ID discriminant with 106X (2018) training",precision=10), - puId = Var("userInt('puIdNanoId')", int,doc="Pileup ID flags with 106X (2018) training"), - jetId = Var("userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc="Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto"), - qgl = Var("?userFloat('qgl')>0?userFloat('qgl'):-1",float,doc="Quark vs Gluon likelihood discriminator",precision=10), - hfsigmaEtaEta = Var("userFloat('hfJetShowerShape:sigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10), - hfsigmaPhiPhi = Var("userFloat('hfJetShowerShape:sigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10), - hfcentralEtaStripSize = Var("userInt('hfJetShowerShape:centralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable) "), - hfadjacentEtaStripsSize = Var("userInt('hfJetShowerShape:adjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable) "), - nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6), - neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), - chFPV0EF = Var("userFloat('chFPV0EF')", float, doc="charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.", precision= 6), - ) -) - -#jets are not as precise as muons -jetTable.variables.pt.precision=10 - -### Era dependent customization -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1, run2_nanoAOD_106Xv1: - # Deprecated after 106X - modifier.toModify(jetTable.variables, - btagCMVA = Var("bDiscriminator('pfCombinedMVAV2BJetTags')",float,doc="CMVA V2 btag discriminator",precision=10), - btagDeepC = Var("bDiscriminator('pfDeepCSVJetTags:probc')",float,doc="DeepCSV charm btag discriminator",precision=10), - btagDeepFlavC = Var("bDiscriminator('pfDeepFlavourJetTags:probc')",float,doc="DeepFlavour charm tag discriminator",precision=10), - ) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify( jetTable.variables, jetId = Var("userInt('tightIdLepVeto')*4+userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight, bit3 is tightLepVeto")) - -run2_nanoAOD_102Xv1.toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 102X (2018) training") -run2_nanoAOD_102Xv1.toModify( jetTable.variables, puId = Var("userInt('pileupJetId:fullId')",int,doc="Pileup ID flags for pre-UL trainings")) -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016) training") -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2016) training") -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016APV) training") -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2016APV) training") -run2_jme_2017.toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2017) training") -run2_jme_2017.toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2017) training") -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify( jetTable.variables, puIdDisc = Var("userFloat('pileupJetId:fullDiscriminant')",float,doc="Pileup ID discriminant with 80X (2016) training",precision=10)) - modifier.toModify( jetTable.variables, puId = Var("userInt('pileupJetId:fullId')",int,doc="Pileup ID flags for pre-UL trainings")) -for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 94X (2017) training") - modifier.toModify( jetTable.variables, puId = Var("userInt('pileupJetId:fullId')",int,doc="Pileup ID flags for 2016/2017/2018 EOY trainings")) - -bjetNN = cms.EDProducer("BJetEnergyRegressionMVA", - backend = cms.string("ONNX"), - batch_eval = cms.bool(True), - src = cms.InputTag("linkedObjects","jets"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), - rhosrc = cms.InputTag("fixedGridRhoFastjetAll"), - - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2018.onnx"), - name = cms.string("JetRegNN"), - isClassifier = cms.bool(False), - variablesOrder = cms.vstring(["Jet_pt","Jet_eta","rho","Jet_mt","Jet_leadTrackPt","Jet_leptonPtRel","Jet_leptonDeltaR","Jet_neHEF", - "Jet_neEmEF","Jet_vtxPt","Jet_vtxMass","Jet_vtx3dL","Jet_vtxNtrk","Jet_vtx3deL", - "Jet_numDaughters_pt03","Jet_energyRing_dR0_em_Jet_rawEnergy","Jet_energyRing_dR1_em_Jet_rawEnergy", - "Jet_energyRing_dR2_em_Jet_rawEnergy","Jet_energyRing_dR3_em_Jet_rawEnergy","Jet_energyRing_dR4_em_Jet_rawEnergy", - "Jet_energyRing_dR0_neut_Jet_rawEnergy","Jet_energyRing_dR1_neut_Jet_rawEnergy","Jet_energyRing_dR2_neut_Jet_rawEnergy", - "Jet_energyRing_dR3_neut_Jet_rawEnergy","Jet_energyRing_dR4_neut_Jet_rawEnergy","Jet_energyRing_dR0_ch_Jet_rawEnergy", - "Jet_energyRing_dR1_ch_Jet_rawEnergy","Jet_energyRing_dR2_ch_Jet_rawEnergy","Jet_energyRing_dR3_ch_Jet_rawEnergy", - "Jet_energyRing_dR4_ch_Jet_rawEnergy","Jet_energyRing_dR0_mu_Jet_rawEnergy","Jet_energyRing_dR1_mu_Jet_rawEnergy", - "Jet_energyRing_dR2_mu_Jet_rawEnergy","Jet_energyRing_dR3_mu_Jet_rawEnergy","Jet_energyRing_dR4_mu_Jet_rawEnergy", - "Jet_chHEF","Jet_chEmEF","Jet_leptonPtRelInv","isEle","isMu","isOther","Jet_mass","Jet_ptd"]), - variables = cms.PSet( - Jet_pt = cms.string("pt*jecFactor('Uncorrected')"), - Jet_mt = cms.string("mt*jecFactor('Uncorrected')"), - Jet_eta = cms.string("eta"), - Jet_mass = cms.string("mass*jecFactor('Uncorrected')"), - Jet_ptd = cms.string("userFloat('ptD')"), - Jet_leadTrackPt = cms.string("userFloat('leadTrackPt')"), - Jet_vtxNtrk = cms.string("userInt('vtxNtrk')"), - Jet_vtxMass = cms.string("userFloat('vtxMass')"), - Jet_vtx3dL = cms.string("userFloat('vtx3dL')"), - Jet_vtx3deL = cms.string("userFloat('vtx3deL')"), - Jet_vtxPt = cms.string("userFloat('vtxPt')"), - #Jet_leptonPt = cms.string("userFloat('leptonPt')"), - Jet_leptonPtRel = cms.string("userFloat('leptonPtRelv0')"), - Jet_leptonPtRelInv = cms.string("userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"), - Jet_leptonDeltaR = cms.string("userFloat('leptonDeltaR')"), - #Jet_leptonPdgId = cms.string("userInt('leptonPdgId')"), - Jet_neHEF = cms.string("neutralHadronEnergyFraction()"), - Jet_neEmEF = cms.string("neutralEmEnergyFraction()"), - Jet_chHEF = cms.string("chargedHadronEnergyFraction()"), - Jet_chEmEF = cms.string("chargedEmEnergyFraction()"), - isMu = cms.string("?abs(userInt('leptonPdgId'))==13?1:0"), - isEle = cms.string("?abs(userInt('leptonPdgId'))==11?1:0"), - isOther = cms.string("?userInt('leptonPdgId')==0?1:0"), - ), - inputTensorName = cms.string("ffwd_inp:0"), - outputTensorName = cms.string("ffwd_out/BiasAdd:0"), - outputNames = cms.vstring(["corr","res"]), - outputFormulas = cms.vstring(["at(0)*0.27912887930870056+1.0545977354049683","0.5*(at(2)-at(1))*0.27912887930870056"]), -) - -cjetNN = cms.EDProducer("BJetEnergyRegressionMVA", - backend = cms.string("ONNX"), - batch_eval = cms.bool(True), - - src = cms.InputTag("linkedObjects","jets"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), - rhosrc = cms.InputTag("fixedGridRhoFastjetAll"), - - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2018.onnx"), - name = cms.string("JetRegNN"), - isClassifier = cms.bool(False), - variablesOrder = cms.vstring(["Jet_pt","Jet_eta","rho","Jet_mt","Jet_leadTrackPt","Jet_leptonPtRel","Jet_leptonDeltaR", - "Jet_neHEF","Jet_neEmEF","Jet_vtxPt","Jet_vtxMass","Jet_vtx3dL","Jet_vtxNtrk","Jet_vtx3deL", - "Jet_numDaughters_pt03","Jet_chEmEF","Jet_chHEF", "Jet_ptd","Jet_mass", - "Jet_energyRing_dR0_em_Jet_rawEnergy","Jet_energyRing_dR1_em_Jet_rawEnergy", - "Jet_energyRing_dR2_em_Jet_rawEnergy","Jet_energyRing_dR3_em_Jet_rawEnergy","Jet_energyRing_dR4_em_Jet_rawEnergy", - "Jet_energyRing_dR0_neut_Jet_rawEnergy","Jet_energyRing_dR1_neut_Jet_rawEnergy","Jet_energyRing_dR2_neut_Jet_rawEnergy", - "Jet_energyRing_dR3_neut_Jet_rawEnergy","Jet_energyRing_dR4_neut_Jet_rawEnergy","Jet_energyRing_dR0_ch_Jet_rawEnergy", - "Jet_energyRing_dR1_ch_Jet_rawEnergy","Jet_energyRing_dR2_ch_Jet_rawEnergy","Jet_energyRing_dR3_ch_Jet_rawEnergy", - "Jet_energyRing_dR4_ch_Jet_rawEnergy","Jet_energyRing_dR0_mu_Jet_rawEnergy","Jet_energyRing_dR1_mu_Jet_rawEnergy", - "Jet_energyRing_dR2_mu_Jet_rawEnergy","Jet_energyRing_dR3_mu_Jet_rawEnergy","Jet_energyRing_dR4_mu_Jet_rawEnergy"]), - variables = cms.PSet( - Jet_pt = cms.string("pt*jecFactor('Uncorrected')"), - Jet_mt = cms.string("mt*jecFactor('Uncorrected')"), - Jet_eta = cms.string("eta"), - Jet_mass = cms.string("mass*jecFactor('Uncorrected')"), - Jet_ptd = cms.string("userFloat('ptD')"), - Jet_leadTrackPt = cms.string("userFloat('leadTrackPt')"), - Jet_vtxNtrk = cms.string("userInt('vtxNtrk')"), - Jet_vtxMass = cms.string("userFloat('vtxMass')"), - Jet_vtx3dL = cms.string("userFloat('vtx3dL')"), - Jet_vtx3deL = cms.string("userFloat('vtx3deL')"), - Jet_vtxPt = cms.string("userFloat('vtxPt')"), - #Jet_leptonPt = cms.string("userFloat('leptonPt')"), - Jet_leptonPtRel = cms.string("userFloat('leptonPtRelv0')"), - Jet_leptonPtRelInv = cms.string("userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"), - Jet_leptonDeltaR = cms.string("userFloat('leptonDeltaR')"), - #Jet_leptonPdgId = cms.string("userInt('leptonPdgId')"), - Jet_neHEF = cms.string("neutralHadronEnergyFraction()"), - Jet_neEmEF = cms.string("neutralEmEnergyFraction()"), - Jet_chHEF = cms.string("chargedHadronEnergyFraction()"), - Jet_chEmEF = cms.string("chargedEmEnergyFraction()"), - isMu = cms.string("?abs(userInt('leptonPdgId'))==13?1:0"), - isEle = cms.string("?abs(userInt('leptonPdgId'))==11?1:0"), - isOther = cms.string("?userInt('leptonPdgId')==0?1:0"), - ), - inputTensorName = cms.string("ffwd_inp:0"), - outputTensorName = cms.string("ffwd_out/BiasAdd:0"), - outputNames = cms.vstring(["corr","res"]), - outputFormulas = cms.vstring(["at(0)*0.24325256049633026+0.993854820728302","0.5*(at(2)-at(1))*0.24325256049633026"]), -) - - -run2_jme_2016.toModify( bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2016.onnx") ) -run2_jme_2016.toModify( bjetNN,outputFormulas = cms.vstring(["at(0)*0.31976690888404846+1.047176718711853","0.5*(at(2)-at(1))*0.31976690888404846"])) - -run2_jme_2017.toModify( bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2017.onnx") ) -run2_jme_2017.toModify( bjetNN,outputFormulas = cms.vstring(["at(0)*0.28225210309028625+1.055067777633667","0.5*(at(2)-at(1))*0.28225210309028625"])) - -run2_jme_2016.toModify( cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2016.onnx") ) -run2_jme_2016.toModify( cjetNN,outputFormulas = cms.vstring(["at(0)*0.28862622380256653+0.9908722639083862","0.5*(at(2)-at(1))*0.28862622380256653"])) - -run2_jme_2017.toModify( cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2017.onnx") ) -run2_jme_2017.toModify( cjetNN,outputFormulas = cms.vstring(["at(0)*0.24718524515628815+0.9927206635475159","0.5*(at(2)-at(1))*0.24718524515628815"])) - - -# -# Quark-Gluon Likelihood (QGL) -# -qgtagger=cms.EDProducer("QGTagger", - jetsLabel = cms.string('QGL_AK4PFchs'), - srcJets = cms.InputTag("updatedJets"), - srcRho = cms.InputTag("fixedGridRhoFastjetAll"), - srcVertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"), - useQualityCuts = cms.bool(False) -) - -# -# PileUp ID -# -from RecoJets.JetProducers.PileupJetID_cfi import pileupJetId, _chsalgos_94x, _chsalgos_102x, _chsalgos_106X_UL16, _chsalgos_106X_UL16APV, _chsalgos_106X_UL17, _chsalgos_106X_UL18 -pileupJetIdNano=pileupJetId.clone(jets="updatedJets",algos = cms.VPSet(_chsalgos_106X_UL18),inputIsCorrected=True,applyJec=False,vertexes="offlineSlimmedPrimaryVertices") -run2_jme_2017.toModify(pileupJetIdNano, algos = _chsalgos_106X_UL17) -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(pileupJetIdNano, algos = _chsalgos_106X_UL16) -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(pileupJetIdNano, algos = _chsalgos_106X_UL16APV) -run2_nanoAOD_102Xv1.toModify(pileupJetIdNano, algos = _chsalgos_102x) -for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify(pileupJetIdNano, algos = _chsalgos_94x) - -############################################################## -## DeepInfoAK4CHS:Start -## - To be used in nanoAOD_customizeCommon() in nano_cff.py -############################################################### -from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection -def nanoAOD_addDeepInfoAK4CHS(process,addDeepBTag,addDeepFlavour): - _btagDiscriminators=[] - if addDeepBTag: - print("Updating process to run DeepCSV btag") - _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb','pfDeepCSVJetTags:probc'] - if addDeepFlavour: - print("Updating process to run DeepFlavour btag") - _btagDiscriminators += ['pfDeepFlavourJetTags:probb','pfDeepFlavourJetTags:probbb','pfDeepFlavourJetTags:problepb','pfDeepFlavourJetTags:probc'] - if len(_btagDiscriminators)==0: return process - print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators)) - updateJetCollection( - process, - jetSource = cms.InputTag('slimmedJets'), - jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual']), 'None'), - btagDiscriminators = _btagDiscriminators, - postfix = 'WithDeepInfo', - ) - process.load("Configuration.StandardSequences.MagneticField_cff") - process.jetCorrFactorsNano.src="selectedUpdatedPatJetsWithDeepInfo" - process.updatedJets.jetSource="selectedUpdatedPatJetsWithDeepInfo" - return process - -nanoAOD_addDeepInfoAK4CHS_switch = cms.PSet( - nanoAOD_addDeepBTag_switch = cms.untracked.bool(False), - nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(False), -) -run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfoAK4CHS_switch, nanoAOD_addDeepBTag_switch = cms.untracked.bool(True)) -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2).toModify(nanoAOD_addDeepInfoAK4CHS_switch, nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(True)) - -################################################ -## DeepInfoAK4CHS:End -################################################# - -################################################################################ -# JETS FOR MET type1 -################################################################################ -basicJetsForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET", - src = updatedJetsWithUserData.src, - jetCorrEtaMax = cms.double(9.9), - jetCorrLabel = cms.InputTag("L3Absolute"), - jetCorrLabelRes = cms.InputTag("L2L3Residual"), - offsetCorrLabel = cms.InputTag("L1FastJet"), - skipEM = cms.bool(False), - skipEMfractionThreshold = cms.double(0.9), - skipMuonSelection = cms.string('isGlobalMuon | isStandAloneMuon'), - skipMuons = cms.bool(True), - type1JetPtThreshold = cms.double(0.0), - calcMuonSubtrRawPtAsValueMap = cms.bool(True) -) - -updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPt") - -corrT1METJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = finalJets.src, - cut = cms.string("pt<15 && abs(eta)<9.9"), - name = cms.string("CorrT1METJet"), - doc = cms.string("Additional low-pt ak4 CHS jets for Type-1 MET re-correction"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet( - rawPt = Var("pt()*jecFactor('Uncorrected')",float,precision=10), - eta = Var("eta", float,precision=12), - phi = Var("phi", float, precision=12), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - ) -) - -corrT1METJetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) -jetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) - -jetForMETTask = cms.Task(basicJetsForMetForT1METNano,corrT1METJetTable) - -#before cross linking -jetUserDataTask = cms.Task(bJetVars,qgtagger,jercVars,tightJetId,tightJetIdLepVeto,pileupJetIdNano) - -# -# HF shower shape recomputation -# Only run if needed (i.e. if default MINIAOD info is missing or outdated because of new JECs...) -# -hfJetShowerShapeforNanoAOD = cms.EDProducer("HFJetShowerShape", - hfTowerEtaWidth = cms.double(0.175), - hfTowerPhiWidth = cms.double(0.175), - jetEtaThreshold = cms.double(2.9), - jetPtThreshold = cms.double(25), - jetReferenceRadius = cms.double(0.4), - jets = cms.InputTag("updatedJets"), - mightGet = cms.optional.untracked.vstring, - offsetPerPU = cms.double(0.4), - stripPtThreshold = cms.double(10), - vertexRecoEffcy = cms.double(0.7), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - widthPtThreshold = cms.double(3) -) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(updatedJetsWithUserData.userFloats, - hfsigmaEtaEta = cms.InputTag('hfJetShowerShapeforNanoAOD:sigmaEtaEta'), - hfsigmaPhiPhi = cms.InputTag('hfJetShowerShapeforNanoAOD:sigmaPhiPhi'), - ).toModify(updatedJetsWithUserData.userInts, - hfcentralEtaStripSize = cms.InputTag('hfJetShowerShapeforNanoAOD:centralEtaStripSize'), - hfadjacentEtaStripsSize = cms.InputTag('hfJetShowerShapeforNanoAOD:adjacentEtaStripsSize'), - ).toModify(jetTable.variables, hfsigmaEtaEta = Var("userFloat('hfsigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10) - ).toModify(jetTable.variables, hfsigmaPhiPhi = Var("userFloat('hfsigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10) - ).toModify(jetTable.variables, hfcentralEtaStripSize = Var("userInt('hfcentralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable)") - ).toModify(jetTable.variables, hfadjacentEtaStripsSize = Var("userInt('hfadjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable)") - ).toModify(jetUserDataTask, jetUserDataTask.add(hfJetShowerShapeforNanoAOD) - ) - -_jetUserDataTask2016 = cms.Task(jetUserDataTask.copy(), looseJetId) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toReplaceWith(jetUserDataTask,_jetUserDataTask2016) - -#before cross linking -jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,finalJets) - -#after cross linkining -jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable) diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py deleted file mode 100644 index 18455a36aad8b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py +++ /dev/null @@ -1,198 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -##################### User floats producers, selectors ########################## - -# Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1) -# (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above ) -jetPuppiCorrFactorsNano = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK4PFPuppi'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJetsPuppi"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - -updatedJetsPuppi = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetPuppiCorrFactorsNano")), - jetSource = cms.InputTag("slimmedJetsPuppi"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -tightJetPuppiId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJetsPuppi") -) -tightJetPuppiIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJetsPuppi") -) - -#HF shower shape recomputation -hfJetPuppiShowerShapeforNanoAOD = cms.EDProducer("HFJetShowerShape", - hfTowerEtaWidth = cms.double(0.175), - hfTowerPhiWidth = cms.double(0.175), - jetEtaThreshold = cms.double(2.9), - jetPtThreshold = cms.double(25), - jetReferenceRadius = cms.double(0.4), - jets = cms.InputTag("updatedJetsPuppi"), - mightGet = cms.optional.untracked.vstring, - offsetPerPU = cms.double(0.4), - stripPtThreshold = cms.double(10), - vertexRecoEffcy = cms.double(0.7), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - widthPtThreshold = cms.double(3) -) - -updatedJetsPuppiWithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJetsPuppi"), - userFloats = cms.PSet( - hfsigmaEtaEta = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:sigmaEtaEta'), - hfsigmaPhiPhi = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:sigmaPhiPhi'), - ), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetPuppiId"), - tightIdLepVeto = cms.InputTag("tightJetPuppiIdLepVeto"), - hfcentralEtaStripSize = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:centralEtaStripSize'), - hfadjacentEtaStripsSize = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:adjacentEtaStripsSize'), - ), -) - -finalJetsPuppi = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsPuppiWithUserData"), - cut = cms.string("pt > 15") -) - -##################### Tables for final output and docs ########################## -jetPuppiTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Jet"), - doc = cms.string("slimmedJetsPuppi, i.e. ak4 PFJets Puppi with JECs applied, after basic selection (" + finalJetsPuppi.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - externalVariables = cms.PSet(), - variables = cms.PSet(P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - nMuons = Var("?hasOverlaps('muons')?overlaps('muons').size():0", int, doc="number of muons in the jet"), - muonIdx1 = Var("?overlaps('muons').size()>0?overlaps('muons')[0].key():-1", int, doc="index of first matching muon"), - muonIdx2 = Var("?overlaps('muons').size()>1?overlaps('muons')[1].key():-1", int, doc="index of second matching muon"), - electronIdx1 = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of first matching electron"), - electronIdx2 = Var("?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1", int, doc="index of second matching electron"), - nElectrons = Var("?hasOverlaps('electrons')?overlaps('electrons').size():0", int, doc="number of electrons in the jet"), - btagDeepB = Var("?(bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc="DeepCSV b+bb tag discriminator",precision=10), - btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - btagDeepCvL = Var("?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probudsg')):-1", float,doc="DeepCSV c vs udsg discriminator",precision=10), - btagDeepCvB = Var("?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')):-1",float,doc="DeepCSV c vs b+bb discriminator",precision=10), - btagDeepFlavCvL = Var("?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg')):-1",float,doc="DeepJet c vs uds+g discriminator",precision=10), - btagDeepFlavCvB = Var("?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')):-1",float,doc="DeepJet c vs b+bb+lepb discriminator",precision=10), - btagDeepFlavQG = Var("?(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1",float,doc="DeepJet g vs uds discriminator",precision=10), - jetId = Var("userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc="Jet ID flag: bit2 is tight, bit3 is tightLepVeto"), - hfsigmaEtaEta = Var("userFloat('hfsigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10), - hfsigmaPhiPhi = Var("userFloat('hfsigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10), - hfcentralEtaStripSize = Var("userInt('hfcentralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable)"), - hfadjacentEtaStripsSize = Var("userInt('hfadjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable)"), - nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6), - neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), - ) -) - -#jets are not as precise as muons -jetPuppiTable.variables.pt.precision=10 - -################################################################################ -# JETS FOR MET type1 -################################################################################ -basicJetsPuppiForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET", - src = updatedJetsPuppiWithUserData.src, - jetCorrEtaMax = cms.double(9.9), - jetCorrLabel = cms.InputTag("L3Absolute"), - jetCorrLabelRes = cms.InputTag("L2L3Residual"), - offsetCorrLabel = cms.InputTag("L1FastJet"), - skipEM = cms.bool(False), - skipEMfractionThreshold = cms.double(0.9), - skipMuonSelection = cms.string('isGlobalMuon | isStandAloneMuon'), - skipMuons = cms.bool(True), - type1JetPtThreshold = cms.double(0.0), - calcMuonSubtrRawPtAsValueMap = cms.bool(True) -) - -updatedJetsPuppiWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsPuppiForMetForT1METNano:MuonSubtrRawPt") - -corrT1METJetPuppiTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = finalJetsPuppi.src, - cut = cms.string("pt<15 && abs(eta)<9.9"), - name = cms.string("CorrT1METJet"), - doc = cms.string("Additional low-pt ak4 Puppi jets for Type-1 MET re-correction"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet( - rawPt = Var("pt()*jecFactor('Uncorrected')",float,precision=10), - eta = Var("eta", float,precision=12), - phi = Var("phi", float, precision=12), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - ) -) - -corrT1METJetPuppiTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) -jetPuppiTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) - -jetPuppiForMETTask = cms.Task(basicJetsPuppiForMetForT1METNano,corrT1METJetPuppiTable) - -#before cross linking -jetPuppiUserDataTask = cms.Task(tightJetPuppiId, tightJetPuppiIdLepVeto, hfJetPuppiShowerShapeforNanoAOD) - -#before cross linking -jetPuppiTask = cms.Task(jetPuppiCorrFactorsNano,updatedJetsPuppi,jetPuppiUserDataTask,updatedJetsPuppiWithUserData,finalJetsPuppi) - -#after cross linkining -jetPuppiTablesTask = cms.Task(jetPuppiTable) diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py deleted file mode 100644 index 13f65792af45c..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py +++ /dev/null @@ -1,350 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -# Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1) -# (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above ) -jetCorrFactorsAK8 = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK8PFPuppi'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJetsAK8"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - -run2_miniAOD_80XLegacy.toModify(jetCorrFactorsAK8, payload = cms.string('AK8PFchs')) # ak8PFJetsCHS in 2016 80X miniAOD - -updatedJetsAK8 = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetCorrFactorsAK8")), - jetSource = cms.InputTag("slimmedJetsAK8"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -# -# JetID -# -looseJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('WINTER16'), - quality = cms.string('LOOSE'), - ), - src = cms.InputTag("updatedJetsAK8") -) -tightJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJetsAK8") -) -tightJetIdLepVetoAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJetsAK8") -) - -run2_jme_2016.toModify( tightJetIdAK8.filterParams, version = "RUN2UL16PUPPI" ) -run2_jme_2016.toModify( tightJetIdLepVetoAK8.filterParams, version = "RUN2UL16PUPPI" ) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify( tightJetIdAK8.filterParams, version = "WINTER16" ) - modifier.toModify( tightJetIdLepVetoAK8.filterParams, version = "WINTER16" ) -for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify( tightJetIdAK8.filterParams, version = "WINTER17PUPPI" ) - modifier.toModify( tightJetIdLepVetoAK8.filterParams, version = "WINTER17PUPPI" ) -run2_nanoAOD_102Xv1.toModify( tightJetIdAK8.filterParams, version = "SUMMER18PUPPI" ) -run2_nanoAOD_102Xv1.toModify( tightJetIdLepVetoAK8.filterParams, version = "SUMMER18PUPPI" ) - -updatedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJetsAK8"), - userFloats = cms.PSet(), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetIdAK8"), - tightIdLepVeto = cms.InputTag("tightJetIdLepVetoAK8"), - ), -) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify(updatedJetsAK8WithUserData.userInts, - looseId = cms.InputTag("looseJetIdAK8"), - ) - - -finalJetsAK8 = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsAK8WithUserData"), - cut = cms.string("pt > 170") -) - - -lepInAK8JetVars = cms.EDProducer("LepInJetProducer", - src = cms.InputTag("updatedJetsAK8WithUserData"), - srcEle = cms.InputTag("finalElectrons"), - srcMu = cms.InputTag("finalMuons") -) - -fatJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalJetsAK8"), - cut = cms.string(" pt > 170"), #probably already applied in miniaod - name = cms.string("FatJet"), - doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet(P4Vars, - jetId = Var("userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc="Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto"), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - tau1 = Var("userFloat('NjettinessAK8Puppi:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10), - tau2 = Var("userFloat('NjettinessAK8Puppi:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10), - tau3 = Var("userFloat('NjettinessAK8Puppi:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10), - tau4 = Var("userFloat('NjettinessAK8Puppi:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10), - n2b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN2')?userFloat('nb1AK8PuppiSoftDrop:ecfN2'):-99999.", float, doc="N2 with beta=1 (for jets with raw pT>250 GeV)", precision=10), - n3b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN3')?userFloat('nb1AK8PuppiSoftDrop:ecfN3'):-99999.", float, doc="N3 with beta=1 (for jets with raw pT>250 GeV)", precision=10), - msoftdrop = Var("groomedMass('SoftDropPuppi')",float, doc="Corrected soft drop mass with PUPPI",precision=10), - btagDeepB = Var("?(bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc="DeepCSV b+bb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - btagHbb = Var("bDiscriminator('pfBoostedDoubleSecondaryVertexAK8BJetTags')",float,doc="Higgs to BB tagger discriminator",precision=10), - btagDDBvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleBvLV2JetTags:probHbb')",float,doc="DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD",precision=10), - btagDDCvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvLV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD",precision=10), - btagDDCvBV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvBV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb",precision=10), - deepTag_TvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="DeepBoostedJet tagger top vs QCD discriminator",precision=10), - deepTag_WvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="DeepBoostedJet tagger W vs QCD discriminator",precision=10), - deepTag_ZvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="DeepBoostedJet tagger Z vs QCD discriminator",precision=10), - deepTag_H = Var("bDiscriminator('pfDeepBoostedJetTags:probHbb')+bDiscriminator('pfDeepBoostedJetTags:probHcc')+bDiscriminator('pfDeepBoostedJetTags:probHqqqq')",float,doc="DeepBoostedJet tagger H(bb,cc,4q) sum",precision=10), - deepTag_QCD = Var("bDiscriminator('pfDeepBoostedJetTags:probQCDbb')+bDiscriminator('pfDeepBoostedJetTags:probQCDcc')+bDiscriminator('pfDeepBoostedJetTags:probQCDb')+bDiscriminator('pfDeepBoostedJetTags:probQCDc')+bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc="DeepBoostedJet tagger QCD(bb,cc,b,c,others) sum",precision=10), - deepTag_QCDothers = Var("bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc="DeepBoostedJet tagger QCDothers value",precision=10), - deepTagMD_TvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator",precision=10), - deepTagMD_WvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator",precision=10), - deepTagMD_ZvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator",precision=10), - deepTagMD_ZHbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator",precision=10), - deepTagMD_ZbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator",precision=10), - deepTagMD_HbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:HbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator",precision=10), - deepTagMD_ZHccvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHccvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator",precision=10), - deepTagMD_H4qvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:H4qvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator",precision=10), - deepTagMD_bbvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:bbvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator",precision=10), - deepTagMD_ccvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ccvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator",precision=10), - particleNet_TvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:TvsQCD')",float,doc="ParticleNet tagger top vs QCD discriminator",precision=10), - particleNet_WvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:WvsQCD')",float,doc="ParticleNet tagger W vs QCD discriminator",precision=10), - particleNet_ZvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:ZvsQCD')",float,doc="ParticleNet tagger Z vs QCD discriminator",precision=10), - particleNet_HbbvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HbbvsQCD')",float,doc="ParticleNet tagger H(->bb) vs QCD discriminator",precision=10), - particleNet_HccvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HccvsQCD')",float,doc="ParticleNet tagger H(->cc) vs QCD discriminator",precision=10), - particleNet_H4qvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:H4qvsQCD')",float,doc="ParticleNet tagger H(->VV->qqqq) vs QCD discriminator",precision=10), - particleNet_QCD = Var("bDiscriminator('pfParticleNetJetTags:probQCDbb')+bDiscriminator('pfParticleNetJetTags:probQCDcc')+bDiscriminator('pfParticleNetJetTags:probQCDb')+bDiscriminator('pfParticleNetJetTags:probQCDc')+bDiscriminator('pfParticleNetJetTags:probQCDothers')",float,doc="ParticleNet tagger QCD(bb,cc,b,c,others) sum",precision=10), - particleNet_mass = Var("bDiscriminator('pfParticleNetMassRegressionJetTags:mass')",float,doc="ParticleNet mass regression",precision=10), - particleNetMD_Xbb = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXbb')",float,doc="Mass-decorrelated ParticleNet tagger raw X->bb score. For X->bb vs QCD tagging, use Xbb/(Xbb+QCD)",precision=10), - particleNetMD_Xcc = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXcc')",float,doc="Mass-decorrelated ParticleNet tagger raw X->cc score. For X->cc vs QCD tagging, use Xcc/(Xcc+QCD)",precision=10), - particleNetMD_Xqq = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXqq')",float,doc="Mass-decorrelated ParticleNet tagger raw X->qq (uds) score. For X->qq vs QCD tagging, use Xqq/(Xqq+QCD). For W vs QCD tagging, use (Xcc+Xqq)/(Xcc+Xqq+QCD)",precision=10), - particleNetMD_QCD = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDbb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDcc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDothers')",float,doc="Mass-decorrelated ParticleNet tagger raw QCD score",precision=10), - subJetIdx1 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>0?subjets('SoftDropPuppi')[0].key():-1", int, - doc="index of first subjet"), - subJetIdx2 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>1?subjets('SoftDropPuppi')[1].key():-1", int, - doc="index of second subjet"), - nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"), - ), - externalVariables = cms.PSet( - lsf3 = ExtVar(cms.InputTag("lepInAK8JetVars:lsf3"),float, doc="Lepton Subjet Fraction (3 subjets)",precision=10), - muonIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:muIdx3SJ"),int, doc="index of muon matched to jet"), - electronIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:eleIdx3SJ"),int,doc="index of electron matched to jet"), - ) -) - -### Era dependent customization -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1, run2_nanoAOD_106Xv1: - modifier.toModify( fatJetTable.variables.n2b1, expr = cms.string("userFloat('ak8PFJetsPuppiSoftDropValueMap:nb1AK8PuppiSoftDropN2')"),) - modifier.toModify( fatJetTable.variables.n3b1, expr = cms.string("userFloat('ak8PFJetsPuppiSoftDropValueMap:nb1AK8PuppiSoftDropN3')"),) - # Deprecated after 106X - modifier.toModify( fatJetTable.variables, - btagCMVA = Var("bDiscriminator('pfCombinedMVAV2BJetTags')",float,doc="CMVA V2 btag discriminator",precision=10), - btagDDBvL_noMD = Var("bDiscriminator('pfDeepDoubleBvLJetTags:probHbb')",float,doc="DeepDoubleX discriminator (no mass-decorrelation) for H(Z)->bb vs QCD",precision=10), - btagDDCvL_noMD = Var("bDiscriminator('pfDeepDoubleCvLJetTags:probHcc')",float,doc="DeepDoubleX discriminator (no mass-decorrelation) for H(Z)->cc vs QCD",precision=10), - btagDDCvB_noMD = Var("bDiscriminator('pfDeepDoubleCvBJetTags:probHcc')",float,doc="DeepDoubleX discriminator (no mass-decorrelation) for H(Z)->cc vs H(Z)->bb",precision=10), - btagDDBvL = Var("bDiscriminator('pfMassIndependentDeepDoubleBvLJetTags:probHbb')",float,doc="DeepDoubleX (mass-decorrelated) discriminator for H(Z)->bb vs QCD",precision=10), - btagDDCvL = Var("bDiscriminator('pfMassIndependentDeepDoubleCvLJetTags:probHcc')",float,doc="DeepDoubleX (mass-decorrelated) discriminator for H(Z)->cc vs QCD",precision=10), - btagDDCvB = Var("bDiscriminator('pfMassIndependentDeepDoubleCvBJetTags:probHcc')",float,doc="DeepDoubleX (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb",precision=10), - ) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, msoftdrop_chs = Var("userFloat('ak8PFJetsCHSSoftDropMass')",float, doc="Legacy uncorrected soft drop mass with CHS",precision=10)) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau1, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau1\')"),) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau2, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau2\')"),) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau3, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau3\')"),) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, tau4 = None) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, n2b1 = None) -run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, n3b1 = None) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify( fatJetTable.variables, jetId = Var("userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight")) - -############################################################## -## DeepInfoAK8:Start -## - To be used in nanoAOD_customizeCommon() in nano_cff.py -############################################################### -from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection -def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload): - _btagDiscriminators=[] - if addDeepBTag: - print("Updating process to run DeepCSV btag to AK8 jets") - _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb'] - if addDeepBoostedJet: - print("Updating process to run DeepBoostedJet on datasets before 103X") - from RecoBTag.ONNXRuntime.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll as pfDeepBoostedJetTagsAll - _btagDiscriminators += pfDeepBoostedJetTagsAll - if addParticleNet: - print("Updating process to run ParticleNet before it's included in MiniAOD") - from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetJetTagsAll as pfParticleNetJetTagsAll - _btagDiscriminators += pfParticleNetJetTagsAll - if addParticleNetMass: - from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs - _btagDiscriminators += _pfParticleNetMassRegressionOutputs - if addDeepDoubleX: - print("Updating process to run DeepDoubleX on datasets before 104X") - _btagDiscriminators += ['pfDeepDoubleBvLJetTags:probHbb', \ - 'pfDeepDoubleCvLJetTags:probHcc', \ - 'pfDeepDoubleCvBJetTags:probHcc', \ - 'pfMassIndependentDeepDoubleBvLJetTags:probHbb', 'pfMassIndependentDeepDoubleCvLJetTags:probHcc', 'pfMassIndependentDeepDoubleCvBJetTags:probHcc'] - if addDeepDoubleXV2: - print("Updating process to run DeepDoubleXv2 on datasets before 11X") - _btagDiscriminators += [ - 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb', - 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc', - 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' - ] - if len(_btagDiscriminators)==0: return process - print("Will recalculate the following discriminators on AK8 jets: "+", ".join(_btagDiscriminators)) - updateJetCollection( - process, - jetSource = cms.InputTag('slimmedJetsAK8'), - pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'), - svSource = cms.InputTag('slimmedSecondaryVertices'), - rParam = 0.8, - jetCorrections = (jecPayload.value(), cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'), - btagDiscriminators = _btagDiscriminators, - postfix='AK8WithDeepInfo', - printWarning = False - ) - process.jetCorrFactorsAK8.src="selectedUpdatedPatJetsAK8WithDeepInfo" - process.updatedJetsAK8.jetSource="selectedUpdatedPatJetsAK8WithDeepInfo" - return process - -nanoAOD_addDeepInfoAK8_switch = cms.PSet( - nanoAOD_addDeepBTag_switch = cms.untracked.bool(False), - nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(False), - nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(False), - nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(False), - nanoAOD_addParticleNet_switch = cms.untracked.bool(False), - nanoAOD_addParticleNetMass_switch = cms.untracked.bool(False), - jecPayload = cms.untracked.string('AK8PFPuppi') -) -# deepAK8 should not run on 80X, that contains ak8PFJetsCHS jets -run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfoAK8_switch, - nanoAOD_addDeepBTag_switch = True, - jecPayload = 'AK8PFchs' -) -# for 94X and 102X samples: needs to run DeepAK8, DeepDoubleX and ParticleNet -(run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify( - nanoAOD_addDeepInfoAK8_switch, - nanoAOD_addDeepBoostedJet_switch = True, - nanoAOD_addDeepDoubleX_switch = True, - nanoAOD_addDeepDoubleXV2_switch = True, - nanoAOD_addParticleNet_switch = True, - nanoAOD_addParticleNetMass_switch = True, -) -# for 106Xv1: only needs to run ParticleNet and DDXV2; DeepAK8, DeepDoubleX are already in MiniAOD -run2_nanoAOD_106Xv1.toModify( - nanoAOD_addDeepInfoAK8_switch, - nanoAOD_addDeepDoubleXV2_switch = True, - nanoAOD_addParticleNet_switch = True, - nanoAOD_addParticleNetMass_switch = True, -) -# for 106Xv2: only needs to run ParticleNet Mass regression; The rest are already in MiniAOD -run2_nanoAOD_106Xv2.toModify( - nanoAOD_addDeepInfoAK8_switch, - nanoAOD_addParticleNetMass_switch = True, -) -################################################ -## DeepInfoAK8:End -################################################# - -subJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"), - cut = cms.string(""), #probably already applied in miniaod - name = cms.string("SubJet"), - doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet(P4Vars, - btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - tau1 = Var("userFloat('NjettinessAK8Subjets:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10), - tau2 = Var("userFloat('NjettinessAK8Subjets:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10), - tau3 = Var("userFloat('NjettinessAK8Subjets:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10), - tau4 = Var("userFloat('NjettinessAK8Subjets:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10), - n2b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN2')", float, doc="N2 with beta=1", precision=10), - n3b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN3')", float, doc="N3 with beta=1", precision=10), - ) -) - -# Deprecation/backcomp -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, run2_nanoAOD_102Xv1, run2_nanoAOD_106Xv1: - # post 106X - modifier.toModify(subJetTable.variables, - btagCMVA = Var("bDiscriminator('pfCombinedMVAV2BJetTags')",float,doc="CMVA V2 btag discriminator",precision=10), - ) - -#jets are not as precise as muons -fatJetTable.variables.pt.precision=10 -subJetTable.variables.pt.precision=10 - -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, tau1 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, tau2 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, tau3 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, tau4 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, n2b1 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, n3b1 = None) -run2_miniAOD_80XLegacy.toModify( subJetTable.variables, btagCMVA = None, btagDeepB = None) - -jetAK8UserDataTask = cms.Task(tightJetIdAK8,tightJetIdLepVetoAK8) -_jetAK8UserDataTask2016 = jetAK8UserDataTask.copy() -_jetAK8UserDataTask2016.add(looseJetIdAK8) -for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toReplaceWith(jetAK8UserDataTask,_jetAK8UserDataTask2016) - -jetAK8Task = cms.Task(jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,finalJetsAK8) - -#after lepton collections have been run -jetAK8LepTask = cms.Task(lepInAK8JetVars) - -jetAK8TablesTask = cms.Task(fatJetTable,subJetTable) diff --git a/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py b/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py deleted file mode 100644 index 0abac8b885bcd..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py +++ /dev/null @@ -1,233 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import Var,CandVars - -################################################################################ -# Modules -################################################################################ - -modifiedLowPtElectrons = cms.EDProducer( - "ModifiedElectronProducer", - src = cms.InputTag("slimmedLowPtElectrons"), - modifierConfig = cms.PSet( - modifications = cms.VPSet(cms.PSet( - addExtraUserVars = cms.bool(True), - beamSpot = cms.InputTag("offlineBeamSpot"), - conversions = cms.InputTag("gsfTracksOpenConversions","gsfTracksOpenConversions"), - modifierName = cms.string('LowPtElectronModifier'), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices") - )) - ) -) - -updatedLowPtElectrons = cms.EDProducer( - "PATElectronUpdater", - src = cms.InputTag("modifiedLowPtElectrons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(True), - fixDxySign = cms.bool(False), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParamsB = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ), - miniIsoParamsE = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.015, - 0.015, 0.08, 0.0, 0.0 - ) -) - -isoForLowPtEle = cms.EDProducer( - "EleIsoValueMapProducer", - src = cms.InputTag("updatedLowPtElectrons"), - relative = cms.bool(True), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), - EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) - -updatedLowPtElectronsWithUserData = cms.EDProducer( - "PATElectronUserDataEmbedder", - src = cms.InputTag("updatedLowPtElectrons"), - userFloats = cms.PSet( - miniIsoChg = cms.InputTag("isoForLowPtEle:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForLowPtEle:miniIsoAll"), - ), - userIntFromBools = cms.PSet(), - userInts = cms.PSet(), - userCands = cms.PSet(), -) - -finalLowPtElectrons = cms.EDFilter( - "PATElectronRefSelector", - src = cms.InputTag("updatedLowPtElectronsWithUserData"), - cut = cms.string("pt > 1. && electronID('ID') > -0.25"), -) - -################################################################################ -# electronTable -################################################################################ - -lowPtElectronTable = cms.EDProducer( - "SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","lowPtElectrons"), - cut = cms.string(""), - name= cms.string("LowPtElectron"), - doc = cms.string("slimmedLowPtElectrons after basic selection (" + finalLowPtElectrons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the electrons - variables = cms.PSet( - # Basic variables - CandVars, - # Overlaps with PF electron - electronIdx = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of the overlapping PF electron (-1 if none)"), - # BDT scores and WPs - ID = Var("electronID('ID')",float,doc="ID, BDT (raw) score"), - unbiased = Var("electronID('unbiased')",float,doc="ElectronSeed, pT- and dxy- agnostic BDT (raw) score"), - ptbiased = Var("electronID('ptbiased')",float,doc="ElectronSeed, pT- and dxy- dependent BDT (raw) score"), - # Isolation - miniPFRelIso_chg = Var("userFloat('miniIsoChg')",float, - doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')",float, - doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - # Conversions - convVeto = Var("passConversionVeto()",bool,doc="pass conversion veto"), - convWP = Var("userInt('convOpen')*1 + userInt('convLoose')*2 + userInt('convTight')*4", - int,doc="conversion flag bit map: 1=Veto, 2=Loose, 3=Tight"), - convVtxRadius = Var("userFloat('convVtxRadius')",float,doc="conversion vertex radius (cm)",precision=7), - # Tracking - lostHits = Var("gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')","uint8",doc="number of missing inner hits"), - # Cluster-related - energyErr = Var("p4Error('P4_COMBINATION')",float,doc="energy error of the cluster-track combination",precision=6), - deltaEtaSC = Var("superCluster().eta()-eta()",float,doc="delta eta (SC,ele) with sign",precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the SC, calculated with full 5x5 region",precision=10), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the SC, calculated with full 5x5 region",precision=10), - eInvMinusPInv = Var("(1-eSuperClusterOverP())/ecalEnergy()",float,doc="1/E_SC - 1/p_trk",precision=10), - scEtOverPt = Var("(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc="(SC energy)/pt-1",precision=8), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - # Displacement - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - # Cross-referencing - #jetIdx - #photonIdx - ), -) - -################################################################################ -# electronTable (MC) -################################################################################ - -# Depends on tautaggerForMatching being run in electrons_cff -matchingLowPtElecPhoton = cms.EDProducer( - "GenJetGenPartMerger", - srcJet =cms.InputTag("particleLevel:leptons"), - srcPart=cms.InputTag("particleLevel:photons"), - cut = cms.string(""), - hasTauAnc=cms.InputTag("tautaggerForMatching"), -) - -lowPtElectronsMCMatchForTableAlt = cms.EDProducer( - "GenJetMatcherDRPtByDR", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = lowPtElectronTable.src, # final reco collection - matched = cms.InputTag("matchingLowPtElecPhoton:merged"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -lowPtElectronsMCMatchForTable = cms.EDProducer( - "MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = lowPtElectronTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11), # one or more PDG ID (11 = ele); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -from PhysicsTools.NanoAOD.V10.electrons_cff import electronMCTable -lowPtElectronMCTable = cms.EDProducer( - "CandMCMatchTableProducer", - src = lowPtElectronTable.src, - mcMapDressedLep = cms.InputTag("lowPtElectronsMCMatchForTableAlt"), - mcMap = cms.InputTag("lowPtElectronsMCMatchForTable"), - mapTauAnc = cms.InputTag("matchingLowPtElecPhoton:hasTauAnc"), - objName = lowPtElectronTable.name, - objType = electronMCTable.objType, - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 electrons or photons"), - genparticles = cms.InputTag("finalGenParticles"), -) - -################################################################################ -# Tasks -################################################################################ - -lowPtElectronTask = cms.Task(modifiedLowPtElectrons, - updatedLowPtElectrons, - isoForLowPtEle, - updatedLowPtElectronsWithUserData, - finalLowPtElectrons) - -lowPtElectronTablesTask = cms.Task(lowPtElectronTable) - -lowPtElectronMCTask = cms.Task( - matchingLowPtElecPhoton, - lowPtElectronsMCMatchForTable, - lowPtElectronsMCMatchForTableAlt, - lowPtElectronMCTable) - -################################################################################ -# Modifiers -################################################################################ - -( run2_miniAOD_80XLegacy | - run2_nanoAOD_94XMiniAODv1 | - run2_nanoAOD_94XMiniAODv2 | - run2_nanoAOD_94X2016 | - run2_nanoAOD_102Xv1 | - run2_nanoAOD_106Xv1 ).toReplaceWith(lowPtElectronTask,cms.Task()).toReplaceWith(lowPtElectronTablesTask,cms.Task()).toReplaceWith(lowPtElectronMCTask,cms.Task()) - -# To preserve "nano v9" functionality ... -# dependency that might be dropped -from RecoEgamma.EgammaTools.lowPtElectronModifier_cfi import lowPtElectronModifier -from RecoEgamma.EgammaElectronProducers.lowPtGsfElectrons_cfi import lowPtRegressionModifier - -run2_nanoAOD_106Xv2.toModify(modifiedLowPtElectrons.modifierConfig, - modifications = cms.VPSet(lowPtElectronModifier, - lowPtRegressionModifier)) - -run2_nanoAOD_106Xv2.toModify(updatedLowPtElectronsWithUserData.userFloats, - ID = cms.InputTag("lowPtPATElectronID")) - -run2_nanoAOD_106Xv2.toModify(finalLowPtElectrons, - cut = "pt > 1. && userFloat('ID') > -0.25") - -run2_nanoAOD_106Xv2.toModify(lowPtElectronTable.variables, - embeddedID = Var("electronID('ID')",float,doc="ID, BDT (raw) score"), - ID = Var("userFloat('ID')",float,doc="New ID, BDT (raw) score")) - -from RecoEgamma.EgammaElectronProducers.lowPtGsfElectronID_cfi import lowPtGsfElectronID -lowPtPATElectronID = lowPtGsfElectronID.clone( - usePAT = True, - electrons = "updatedLowPtElectrons", - unbiased = "", - ModelWeights = [ - 'RecoEgamma/ElectronIdentification/data/LowPtElectrons/LowPtElectrons_ID_2020Nov28.root', - ], -) - -_lowPtElectronTask = cms.Task(lowPtPATElectronID, lowPtElectronTask.copy()) - -run2_nanoAOD_106Xv2.toReplaceWith(lowPtElectronTask,_lowPtElectronTask) diff --git a/PhysicsTools/NanoAOD/python/V10/met_cff.py b/PhysicsTools/NanoAOD/python/V10/met_cff.py deleted file mode 100644 index 39cbc53522e12..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/met_cff.py +++ /dev/null @@ -1,166 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * - - -##################### Tables for final output and docs ########################## -metTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedMETs"), - name = cms.string("MET"), - doc = cms.string("slimmedMET, type-1 corrected PF MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(PTVars, - sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10), - covXX = Var("getSignificanceMatrix().At(0,0)",float,doc="xx element of met covariance matrix", precision=8), - covXY = Var("getSignificanceMatrix().At(0,1)",float,doc="xy element of met covariance matrix", precision=8), - covYY = Var("getSignificanceMatrix().At(1,1)",float,doc="yy element of met covariance matrix", precision=8), - significance = Var("metSignificance()", float, doc="MET significance",precision=10), - sumPtUnclustered = Var("metSumPtUnclustered()", float, doc="sumPt used for MET significance",precision=10), - MetUnclustEnUpDeltaX = Var("shiftedPx('UnclusteredEnUp')-px()", float, doc="Delta (METx_mod-METx) Unclustered Energy Up",precision=10), - MetUnclustEnUpDeltaY = Var("shiftedPy('UnclusteredEnUp')-py()", float, doc="Delta (METy_mod-METy) Unclustered Energy Up",precision=10), - - ), -) - - -rawMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("RawMET"), - doc = cms.string("raw PF MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("uncorPt", float, doc="pt", precision=10), - phi = Var("uncorPhi", float, doc="phi", precision=10), - sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10), - ), -) - - -caloMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("CaloMET"), - doc = cms.string("Offline CaloMET (muon corrected)"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("caloMETPt", float, doc="pt", precision=10), - phi = Var("caloMETPhi", float, doc="phi", precision=10), - sumEt = Var("caloMETSumEt", float, doc="scalar sum of Et", precision=10), - ), -) - -puppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedMETsPuppi"), - name = cms.string("PuppiMET"), - doc = cms.string("PUPPI MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(PTVars, - sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10), - ptJERUp = Var("shiftedPt('JetResUp')", float, doc="JER up pt",precision=10), - ptJERDown = Var("shiftedPt('JetResDown')", float, doc="JER down pt",precision=10), - phiJERUp = Var("shiftedPhi('JetResUp')", float, doc="JER up phi",precision=10), - phiJERDown = Var("shiftedPhi('JetResDown')", float, doc="JER down phi",precision=10), - ptJESUp = Var("shiftedPt('JetEnUp')", float, doc="JES up pt",precision=10), - ptJESDown = Var("shiftedPt('JetEnDown')", float, doc="JES down pt",precision=10), - phiJESUp = Var("shiftedPhi('JetEnUp')", float, doc="JES up phi",precision=10), - phiJESDown = Var("shiftedPhi('JetEnDown')", float, doc="JES down phi",precision=10), - ptUnclusteredUp = Var("shiftedPt('UnclusteredEnUp')", float, doc="Unclustered up pt",precision=10), - ptUnclusteredDown = Var("shiftedPt('UnclusteredEnDown')", float, doc="Unclustered down pt",precision=10), - phiUnclusteredUp = Var("shiftedPhi('UnclusteredEnUp')", float, doc="Unclustered up phi",precision=10), - phiUnclusteredDown = Var("shiftedPhi('UnclusteredEnDown')", float, doc="Unclustered down phi",precision=10), - ), -) - -rawPuppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = puppiMetTable.src, - name = cms.string("RawPuppiMET"), - doc = cms.string("raw Puppi MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("uncorPt", float, doc="pt", precision=10), - phi = Var("uncorPhi", float, doc="phi", precision=10), - sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10), - ),) - - -tkMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("TkMET"), - doc = cms.string("Track MET computed with tracks from PV0 ( pvAssociationQuality()>=4 ) "), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the TkMET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawTrk')", float, doc="raw track MET pt",precision=10), - phi = Var("corPhi('RawTrk')", float, doc="raw track MET phi",precision=10), - sumEt = Var("corSumEt('RawTrk')", float, doc="raw track scalar sum of Et",precision=10), - ), -) - -chsMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("ChsMET"), - doc = cms.string("PF MET computed with CHS PF candidates"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the TkMET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawChs')", float, doc="raw chs PF MET pt",precision=10), - phi = Var("corPhi('RawChs')", float, doc="raw chs PF MET phi",precision=10), - sumEt = Var("corSumEt('RawChs')", float, doc="raw chs PF scalar sum of Et",precision=10), - ), -) - -deepMetResolutionTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - # current deepMets are saved in slimmedMETs in MiniAOD, - # in the same way as chsMet/TkMET - src = metTable.src, - name = cms.string("DeepMETResolutionTune"), - doc = cms.string("Deep MET trained with resolution tune"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawDeepResolutionTune')", float, doc="DeepMET ResolutionTune pt",precision=-1), - phi = Var("corPhi('RawDeepResolutionTune')", float, doc="DeepmET ResolutionTune phi",precision=12), - ), -) - -deepMetResponseTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("DeepMETResponseTune"), - doc = cms.string("Deep MET trained with extra response tune"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawDeepResponseTune')", float, doc="DeepMET ResponseTune pt",precision=-1), - phi = Var("corPhi('RawDeepResponseTune')", float, doc="DeepMET ResponseTune phi",precision=12), - ), -) - -metFixEE2017Table = metTable.clone( - src = cms.InputTag("slimmedMETsFixEE2017"), - name = cms.string("METFixEE2017"), - doc = cms.string("Type-1 corrected PF MET, with fixEE2017 definition"), -) - -metMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("GenMET"), - doc = cms.string("Gen MET"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var("genMET.pt", float, doc="pt", precision=10), - phi = Var("genMET.phi", float, doc="phi", precision=10), - ), -) - - -metTablesTask = cms.Task( metTable, rawMetTable, caloMetTable, puppiMetTable, rawPuppiMetTable, tkMetTable, chsMetTable, deepMetResolutionTuneTable, deepMetResponseTuneTable ) -_withFixEE2017_task = cms.Task(metTablesTask.copy(), metFixEE2017Table) -#for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: -# modifier.toReplaceWith(metTablesTask,_withFixEE2017_task) # only in old miniAOD, the new ones will come from the UL rereco -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2).toReplaceWith(metTablesTask,_withFixEE2017_task) -metMCTask = cms.Task( metMCTable ) diff --git a/PhysicsTools/NanoAOD/python/V10/muons_cff.py b/PhysicsTools/NanoAOD/python/V10/muons_cff.py deleted file mode 100644 index 71380371ed648..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/muons_cff.py +++ /dev/null @@ -1,187 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -# this below is used only in some eras -slimmedMuonsUpdated = cms.EDProducer("PATMuonUpdater", - src = cms.InputTag("slimmedMuons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(False), - fixDxySign = cms.bool(True), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParams = cms.vdouble( - 0.05, 0.2, 10.0, 0.5, 0.0001, - 0.01, 0.01, 0.01, 0.0 - ), - recomputeMuonBasicSelectors = cms.bool(False), -) -run2_miniAOD_80XLegacy.toModify( slimmedMuonsUpdated, computeMiniIso = True, recomputeMuonBasicSelectors = True ) - -isoForMu = cms.EDProducer("MuonIsoValueMapProducer", - src = cms.InputTag("slimmedMuonsUpdated"), - relative = cms.bool(False), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) -run2_miniAOD_80XLegacy.toModify(isoForMu, EAFile_MiniIso = "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt") -run2_nanoAOD_94X2016.toModify(isoForMu, EAFile_MiniIso = "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt") - -ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer", - srcJet = cms.InputTag("updatedJetsPuppi"), - srcLep = cms.InputTag("slimmedMuonsUpdated"), - srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), -) - -slimmedMuonsWithUserData = cms.EDProducer("PATMuonUserDataEmbedder", - src = cms.InputTag("slimmedMuonsUpdated"), - userFloats = cms.PSet( - miniIsoChg = cms.InputTag("isoForMu:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForMu:miniIsoAll"), - ptRatio = cms.InputTag("ptRatioRelForMu:ptRatio"), - ptRel = cms.InputTag("ptRatioRelForMu:ptRel"), - jetNDauChargedMVASel = cms.InputTag("ptRatioRelForMu:jetNDauChargedMVASel"), - ), - userCands = cms.PSet( - jetForLepJetVar = cms.InputTag("ptRatioRelForMu:jetForLepJetVar") # warning: Ptr is null if no match is found - ), -) - -finalMuons = cms.EDFilter("PATMuonRefSelector", - src = cms.InputTag("slimmedMuonsWithUserData"), - cut = cms.string("pt > 15 || (pt > 3 && (passed('CutBasedIdLoose') || passed('SoftCutBasedId') || passed('SoftMvaId') || passed('CutBasedIdGlobalHighPt') || passed('CutBasedIdTrkHighPt')))") -) - -finalLooseMuons = cms.EDFilter("PATMuonRefSelector", # for isotrack cleaning - src = cms.InputTag("slimmedMuonsWithUserData"), - cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon") -) - -muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer", - src = cms.InputTag("linkedObjects","muons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2017.weights.xml"), - name = cms.string("muonMVATTH"), - isClassifier = cms.bool(True), - variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetDF","LepGood_jetPtRatio","LepGood_dxy","LepGood_sip3d","LepGood_dz","LepGood_segmentComp"]), - variables = cms.PSet( - LepGood_pt = cms.string("pt"), - LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"), - LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), - LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), - LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"), - LepGood_jetDF = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0"), - LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt)"), - LepGood_dxy = cms.string("log(abs(dB('PV2D')))"), - LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), - LepGood_dz = cms.string("log(abs(dB('PVDZ')))"), - LepGood_segmentComp = cms.string("segmentCompatibility"), - - ) -) - -muonMVALowPt = muonMVATTH.clone( - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_lowpt.weights.xml"), - name = cms.string("muonMVALowPt"), -) - -run2_muon_2016.toModify(muonMVATTH, - weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG_2016.weights.xml", - ) - -muonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","muons"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Muon"), - doc = cms.string("slimmedMuons after basic selection (" + finalMuons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(CandVars, - ptErr = Var("bestTrack().ptError()", float, doc = "ptError of the muon track", precision=6), - tunepRelPt = Var("tunePMuonBestTrack().pt/pt",float,doc="TuneP relative pt, tunePpt/pt",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - dxybs = Var("dB('BS2D')",float,doc="dxy (with sign) wrt the beam spot, in cm",precision=10), - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10), - sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV",precision=10), - segmentComp = Var("segmentCompatibility()", float, doc = "muon segment compatibility", precision=14), # keep higher precision since people have cuts with 3 digits on this - nStations = Var("numberOfMatchedStations", int, doc = "number of matched stations with default arbitration (segment & track)"), - nTrackerLayers = Var("?track.isNonnull?innerTrack().hitPattern().trackerLayersWithMeasurement():0", int, doc = "number of layers in the tracker"), - highPurity = Var("?track.isNonnull?innerTrack().quality('highPurity'):0", bool, doc = "inner track is high purity"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - tkRelIso = Var("isolationR03().sumPt/tunePMuonBestTrack().pt",float,doc="Tracker-based relative isolation dR=0.3 for highPt, trkIso/tunePpt",precision=6), - miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - pfRelIso03_chg = Var("pfIsolationR03().sumChargedHadronPt/pt",float,doc="PF relative isolation dR=0.3, charged component"), - pfRelIso03_all = Var("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.3, total (deltaBeta corrections)"), - pfRelIso04_all = Var("(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.4, total (deltaBeta corrections)"), - jetRelIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt",float,doc="Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8), - jetPtRelv2 = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0",float,doc="Relative momentum of the lepton with respect to the closest jet after subtracting the lepton",precision=8), - tightCharge = Var("?(muonBestTrack().ptError()/muonBestTrack().pt() < 0.2)?2:0",int,doc="Tight charge criterion using pterr/pt of muonBestTrack (0:fail, 2:pass)"), - looseId = Var("passed('CutBasedIdLoose')",bool, doc="muon is loose muon"), - isPFcand = Var("isPFMuon",bool,doc="muon is PF candidate"), - isGlobal = Var("isGlobalMuon",bool,doc="muon is global muon"), - isTracker = Var("isTrackerMuon",bool,doc="muon is tracker muon"), - isStandalone = Var("isStandAloneMuon",bool,doc="muon is a standalone muon"), - mediumId = Var("passed('CutBasedIdMedium')",bool,doc="cut-based ID, medium WP"), - mediumPromptId = Var("passed('CutBasedIdMediumPrompt')",bool,doc="cut-based ID, medium prompt WP"), - tightId = Var("passed('CutBasedIdTight')",bool,doc="cut-based ID, tight WP"), - softId = Var("passed('SoftCutBasedId')",bool,doc="soft cut-based ID"), - softMvaId = Var("passed('SoftMvaId')",bool,doc="soft MVA ID"), - softMva = Var("softMvaValue()",float,doc="soft MVA ID score",precision=6), - highPtId = Var("?passed('CutBasedIdGlobalHighPt')?2:passed('CutBasedIdTrkHighPt')","uint8",doc="high-pT cut-based ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)"), - pfIsoId = Var("passed('PFIsoVeryLoose')+passed('PFIsoLoose')+passed('PFIsoMedium')+passed('PFIsoTight')+passed('PFIsoVeryTight')+passed('PFIsoVeryVeryTight')","uint8",doc="PFIso ID from miniAOD selector (1=PFIsoVeryLoose, 2=PFIsoLoose, 3=PFIsoMedium, 4=PFIsoTight, 5=PFIsoVeryTight, 6=PFIsoVeryVeryTight)"), - tkIsoId = Var("?passed('TkIsoTight')?2:passed('TkIsoLoose')","uint8",doc="TkIso ID (1=TkIsoLoose, 2=TkIsoTight)"), - mvaId = Var("passed('MvaLoose')+passed('MvaMedium')+passed('MvaTight')+passed('MvaVTight')+passed('MvaVVTight')","uint8",doc="Mva ID from miniAOD selector (1=MvaLoose, 2=MvaMedium, 3=MvaTight, 4=MvaVTight, 5=MvaVVTight)"), - mvaLowPtId = Var("passed('LowPtMvaLoose')+passed('LowPtMvaMedium')","uint8", doc="Low Pt Mva ID from miniAOD selector (1=LowPtMvaLoose, 2=LowPtMvaMedium)"), - miniIsoId = Var("passed('MiniIsoLoose')+passed('MiniIsoMedium')+passed('MiniIsoTight')+passed('MiniIsoVeryTight')","uint8",doc="MiniIso ID from miniAOD selector (1=MiniIsoLoose, 2=MiniIsoMedium, 3=MiniIsoTight, 4=MiniIsoVeryTight)"), - multiIsoId = Var("?passed('MultiIsoMedium')?2:passed('MultiIsoLoose')","uint8",doc="MultiIsoId from miniAOD selector (1=MultiIsoLoose, 2=MultiIsoMedium)"), - puppiIsoId = Var("passed('PuppiIsoLoose')+passed('PuppiIsoMedium')+passed('PuppiIsoTight')", "uint8", doc="PuppiIsoId from miniAOD selector (1=Loose, 2=Medium, 3=Tight)"), - triggerIdLoose = Var("passed('TriggerIdLoose')",bool,doc="TriggerIdLoose ID"), - inTimeMuon = Var("passed('InTimeMuon')",bool,doc="inTimeMuon ID"), - jetNDauCharged = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0", "uint8", doc="number of charged daughters of the closest jet"), - ), - externalVariables = cms.PSet( - mvaTTH = ExtVar(cms.InputTag("muonMVATTH"),float, doc="TTH MVA lepton ID score",precision=14), - mvaLowPt = ExtVar(cms.InputTag("muonMVALowPt"),float, doc="Low pt muon ID score",precision=14), - fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:muFsrIndex"),int, doc="Index of the lowest-dR/ET2 among associated FSR photons"), - ), -) - - -#for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: -# modifier.toModify(muonTable.variables, puppiIsoId = None, softMva = None) -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2).toModify(muonTable.variables, puppiIsoId = None, softMva = None) - -run2_nanoAOD_102Xv1.toModify(muonTable.variables, puppiIsoId = None) - -# Revert back to AK4 CHS jets for Run 2 -run2_nanoAOD_ANY.toModify(ptRatioRelForMu,srcJet="updatedJets") - - -muonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = muonTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(13), # one or more PDG ID (13 = mu); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -muonMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = muonTable.src, - mcMap = cms.InputTag("muonsMCMatchForTable"), - objName = muonTable.name, - objType = muonTable.name, #cms.string("Muon"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 muons"), -) - -muonTask = cms.Task(slimmedMuonsUpdated,isoForMu,ptRatioRelForMu,slimmedMuonsWithUserData,finalMuons,finalLooseMuons ) -muonMCTask = cms.Task(muonsMCMatchForTable,muonMCTable) -muonTablesTask = cms.Task(muonMVATTH,muonMVALowPt,muonTable) diff --git a/PhysicsTools/NanoAOD/python/V10/nano_cff.py b/PhysicsTools/NanoAOD/python/V10/nano_cff.py index f7d58f2e495cb..2e982a9e042d6 100644 --- a/PhysicsTools/NanoAOD/python/V10/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/V10/nano_cff.py @@ -1,330 +1,14 @@ from __future__ import print_function import FWCore.ParameterSet.Config as cms -##these imports do not need to be copied, as they are very common definitions -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * -##these imports do need to be "frozen" for V10 -from PhysicsTools.NanoAOD.V10.jetsAK4_CHS_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK4_Puppi_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK8_cff import * -from PhysicsTools.NanoAOD.V10.jetMC_cff import * -from PhysicsTools.NanoAOD.V10.muons_cff import * -from PhysicsTools.NanoAOD.V10.taus_cff import * -from PhysicsTools.NanoAOD.V10.boostedTaus_cff import * -from PhysicsTools.NanoAOD.V10.electrons_cff import * -from PhysicsTools.NanoAOD.V10.lowPtElectrons_cff import * -from PhysicsTools.NanoAOD.V10.photons_cff import * -from PhysicsTools.NanoAOD.V10.globals_cff import * -from PhysicsTools.NanoAOD.V10.extraflags_cff import * -from PhysicsTools.NanoAOD.V10.ttbarCategorization_cff import * -from PhysicsTools.NanoAOD.V10.genparticles_cff import * -from PhysicsTools.NanoAOD.V10.particlelevel_cff import * -from PhysicsTools.NanoAOD.V10.genWeightsTable_cfi import * -from PhysicsTools.NanoAOD.V10.genVertex_cff import * -from PhysicsTools.NanoAOD.V10.vertices_cff import * -from PhysicsTools.NanoAOD.V10.met_cff import * -from PhysicsTools.NanoAOD.V10.triggerObjects_cff import * -from PhysicsTools.NanoAOD.V10.isotracks_cff import * -from PhysicsTools.NanoAOD.V10.protons_cff import * -from PhysicsTools.NanoAOD.V10.btagWeightTable_cff import * -from PhysicsTools.NanoAOD.V10.fsrPhotons_cff import * -from PhysicsTools.NanoAOD.V10.softActivity_cff import * +from PhysicsTools.NanoAOD.nano_cff import * -nanoMetadata = cms.EDProducer("UniqueStringProducer", - strings = cms.PSet( - tag = cms.string("untagged"), - ) -) -linkedObjects = cms.EDProducer("PATObjectCrossLinker", - jets=cms.InputTag("finalJetsPuppi"), - muons=cms.InputTag("finalMuons"), - electrons=cms.InputTag("finalElectrons"), - lowPtElectrons=cms.InputTag("finalLowPtElectrons"), - taus=cms.InputTag("finalTaus"), - photons=cms.InputTag("finalPhotons"), -) +def nanoAOD_customizeV10(process): + + # PUT here any old recipe that belonged to the V10 + # update the PhysicsTools/NanoAOD/python as needed -# Switch to AK4 CHS jets for Run-2 -run2_nanoAOD_ANY.toModify(linkedObjects, jets="finalJets") - -simpleCleanerTable = cms.EDProducer("NanoAODSimpleCrossCleaner", - name=cms.string("cleanmask"), - doc=cms.string("simple cleaning mask with priority to leptons"), - jets=cms.InputTag("linkedObjects","jets"), - muons=cms.InputTag("linkedObjects","muons"), - electrons=cms.InputTag("linkedObjects","electrons"), - lowPtElectrons=cms.InputTag("linkedObjects","lowPtElectrons"), - taus=cms.InputTag("linkedObjects","taus"), - photons=cms.InputTag("linkedObjects","photons"), - jetSel=cms.string("pt>15"), - muonSel=cms.string("track.isNonnull && isLooseMuon && isPFMuon && innerTrack.validFraction >= 0.49 && ( isGlobalMuon && globalTrack.normalizedChi2 < 3 && combinedQuality.chi2LocalPosition < 12 && combinedQuality.trkKink < 20 && segmentCompatibility >= 0.303 || segmentCompatibility >= 0.451 )"), - electronSel=cms.string(""), - lowPtElectronSel=cms.string(""), - tauSel=cms.string(""), - photonSel=cms.string(""), - jetName=cms.string("Jet"),muonName=cms.string("Muon"),electronName=cms.string("Electron"), - lowPtElectronName=cms.string("LowPtElectron"), - tauName=cms.string("Tau"),photonName=cms.string("Photon") -) - - -lhcInfoTable = cms.EDProducer("LHCInfoProducer", - precision = cms.int32(10), -) - -nanoTableTaskCommon = cms.Task( - cms.Task(nanoMetadata), - jetPuppiTask, jetPuppiForMETTask, jetAK8Task, - extraFlagsProducersTask, muonTask, tauTask, boostedTauTask, - electronTask , lowPtElectronTask, photonTask, - vertexTask, isoTrackTask, jetAK8LepTask, # must be after all the leptons - softActivityTask, - cms.Task(linkedObjects), - jetPuppiTablesTask, jetAK8TablesTask, - muonTablesTask, fsrTablesTask, tauTablesTask, boostedTauTablesTask, - electronTablesTask, lowPtElectronTablesTask, photonTablesTask, - globalTablesTask, vertexTablesTask, metTablesTask, simpleCleanerTable, extraFlagsTableTask, - isoTrackTablesTask,softActivityTablesTask -) - -# Replace AK4 Puppi with AK4 CHS for Run-2 -_nanoTableTaskCommonRun2 = nanoTableTaskCommon.copy() -_nanoTableTaskCommonRun2.replace(jetPuppiTask, jetTask) -_nanoTableTaskCommonRun2.replace(jetPuppiForMETTask, jetForMETTask) -_nanoTableTaskCommonRun2.replace(jetPuppiTablesTask, jetTablesTask) -run2_nanoAOD_ANY.toReplaceWith(nanoTableTaskCommon, _nanoTableTaskCommonRun2) - -nanoSequenceCommon = cms.Sequence(nanoTableTaskCommon) - -nanoSequenceOnlyFullSim = cms.Sequence(triggerObjectTablesTask) -nanoSequenceOnlyData = cms.Sequence(cms.Sequence(protonTablesTask) + lhcInfoTable) - -nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyData + nanoSequenceOnlyFullSim) - -nanoTableTaskFS = cms.Task( - genParticleTask, particleLevelTask, jetMCTask, muonMCTask, electronMCTask, lowPtElectronMCTask, photonMCTask, - tauMCTask, boostedTauMCTask, - metMCTable, ttbarCatMCProducersTask, globalTablesMCTask, cms.Task(btagWeightTable), ttbarCategoryTableTask, - genWeightsTableTask, genVertexTablesTask, genParticleTablesTask, genProtonTablesTask, particleLevelTablesTask -) - -nanoSequenceFS = cms.Sequence(nanoSequenceCommon + cms.Sequence(nanoTableTaskFS)) - -# GenVertex only stored in newer MiniAOD -nanoSequenceMC = nanoSequenceFS.copy() -nanoSequenceMC.insert(nanoSequenceFS.index(nanoSequenceCommon)+1,nanoSequenceOnlyFullSim) - -# modifier which adds new tauIDs (currently only deepTauId2017v2p1 is being added) -## might be an issue with V10 support in newer release -import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig -def nanoAOD_addTauIds(process, idsToRun=[]): - if idsToRun: #no-empty list of tauIDs to run - updatedTauName = "slimmedTausUpdated" - tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, - updatedTauName = updatedTauName, - postfix = "ForNano", - toKeep = idsToRun) - tauIdEmbedder.runTauID() - _tauTask = patTauMVAIDsTask.copy() - _tauTask.add(process.rerunMvaIsolationTaskForNano) - _tauTask.add(finalTaus) - process.finalTaus.src = updatedTauName - #remember to adjust the selection and tables with added IDs - - process.tauTask = _tauTask.copy() - - return process - -def nanoAOD_addBoostedTauIds(process, idsToRun=[]): - if idsToRun: #no-empty list of tauIDs to run - updatedBoostedTauName = "slimmedTausBoostedNewID" - boostedTauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, - originalTauName = "slimmedTausBoosted", - updatedTauName = updatedBoostedTauName, - postfix = "BoostedForNano", - toKeep = idsToRun) - boostedTauIdEmbedder.runTauID() - _boostedTauTask = process.rerunMvaIsolationTaskBoostedForNano.copy() - _boostedTauTask.add(getattr(process, updatedBoostedTauName)) - _boostedTauTask.add(process.finalBoostedTaus) - process.finalBoostedTaus.src = updatedBoostedTauName - #remember to adjust the selection and tables with added IDs - - process.boostedTauTask = _boostedTauTask.copy() - - return process - -from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD -def nanoAOD_recalibrateMETs(process,isData): - # add DeepMETs - nanoAOD_DeepMET_switch = cms.PSet( - ResponseTune_Graph = cms.untracked.string('RecoMET/METPUSubtraction/data/models/deepmet/deepmet_resp_v1_2018/model.graphdef') - ) - for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: - modifier.toModify(nanoAOD_DeepMET_switch, ResponseTune_Graph="RecoMET/METPUSubtraction/data/models/deepmet/deepmet_resp_v1_2016/model.graphdef") - - print("add DeepMET Producers") - process.load('RecoMET.METPUSubtraction.deepMETProducer_cfi') - process.deepMETsResolutionTune = process.deepMETProducer.clone() - process.deepMETsResponseTune = process.deepMETProducer.clone() - process.deepMETsResponseTune.graph_path = nanoAOD_DeepMET_switch.ResponseTune_Graph.value() - - runMetCorAndUncFromMiniAOD(process,isData=isData) - process.nanoSequenceCommon.insert(2,cms.Sequence(process.fullPatMetSequence)) - - - from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppiesFromMiniAOD - makePuppiesFromMiniAOD(process,True) - process.puppiNoLep.useExistingWeights = True - process.puppi.useExistingWeights = True - run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights = False) - run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights = False) - print("will make Puppies on top of MINIAOD") - -# makePuppiesFromMiniAOD(process,True) # call this before in the global customizer otherwise it would reset photon IDs in VID - nanoAOD_PuppiV15_switch = cms.PSet( - recoMetFromPFCs = cms.untracked.bool(False), - reclusterJets = cms.untracked.bool(False), - ) - run2_nanoAOD_106Xv1.toModify(nanoAOD_PuppiV15_switch,recoMetFromPFCs=True,reclusterJets=True) - if nanoAOD_PuppiV15_switch.reclusterJets: - from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets - from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask - task = getPatAlgosToolsTask(process) - addToProcessAndTask('ak4PuppiJets', ak4PFJets.clone (src = 'puppi', doAreaFastjet = True, jetPtMin = 10.), process, task) - from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection - addJetCollection(process, - labelName = 'Puppi', - jetSource = cms.InputTag('ak4PuppiJets'), - algo = 'AK', rParam=0.4, - genJetCollection=cms.InputTag('slimmedGenJets'), - jetCorrections = ('AK4PFPuppi', ['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual'], 'None'), - pfCandidates = cms.InputTag('packedPFCandidates'), - pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'), - svSource = cms.InputTag('slimmedSecondaryVertices'), - muSource =cms.InputTag( 'slimmedMuons'), - elSource = cms.InputTag('slimmedElectrons'), - genParticles= cms.InputTag('prunedGenParticles'), - getJetMCFlavour= False - ) - - process.patJetsPuppi.addGenPartonMatch = cms.bool(False) - process.patJetsPuppi.addGenJetMatch = cms.bool(False) - - print("nanoAOD_PuppiV15_switch.reclusterJets is true") - - runMetCorAndUncFromMiniAOD(process,isData=isData,metType="Puppi",postfix="Puppi",jetFlavor="AK4PFPuppi", recoMetFromPFCs=bool(nanoAOD_PuppiV15_switch.recoMetFromPFCs), reclusterJets=bool(nanoAOD_PuppiV15_switch.reclusterJets)) - process.nanoSequenceCommon.insert(2,cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi)) + process.nanoSequence = cms.Sequence(process.nanoSequence) + process.nanoSequenceMC = cms.Sequence(process.nanoSequenceMC) return process - -from PhysicsTools.SelectorUtils.tools.vid_id_tools import * -def nanoAOD_activateVID(process): - - switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD,electronTask) - for modname in electron_id_modules_WorkingPoints_nanoAOD.modules: - setupAllVIDIdsInModule(process,modname,setupVIDElectronSelection) - - electronTask_ = process.egmGsfElectronIDTask.copy() - electronTask_.add(electronTask.copy()) - process.electronTask = electronTask_.copy() - for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1: - modifier.toModify(process.electronMVAValueMapProducer, src = "slimmedElectronsUpdated") - modifier.toModify(process.egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated") - - switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD,photonTask) # do not call this to avoid resetting photon IDs in VID, if called before inside makePuppiesFromMiniAOD - for modname in photon_id_modules_WorkingPoints_nanoAOD.modules: - setupAllVIDIdsInModule(process,modname,setupVIDPhotonSelection) - - photonTask_ = process.egmPhotonIDTask.copy() - photonTask_.add(photonTask.copy()) - process.photonTask = photonTask_.copy() - for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1: - modifier.toModify(process.photonMVAValueMapProducer, src = "slimmedPhotonsTo106X") - modifier.toModify(process.egmPhotonIDs, physicsObjectSrc = "slimmedPhotonsTo106X") - return process - -from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD -def nanoAOD_runMETfixEE2017(process,isData): - runMetCorAndUncFromMiniAOD(process,isData=isData, - fixEE2017 = True, - fixEE2017Params = {'userawPt': True, 'ptThreshold':50.0, 'minEtaThreshold':2.65, 'maxEtaThreshold': 3.139}, - postfix = "FixEE2017") - process.nanoSequenceCommon.insert(2,process.fullPatMetSequenceFixEE2017) - - -def nanoAOD_customizeCommon(process): - - process = nanoAOD_activateVID(process) - - # This function is defined in jetsAK4_CHS_cff.py - process = nanoAOD_addDeepInfoAK4CHS(process, - addDeepBTag=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepBTag_switch, - addDeepFlavour=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepFlavourTag_switch - ) - - # This function is defined in jetsAK8_cff.py - process = nanoAOD_addDeepInfoAK8(process, - addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch, - addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch, - addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch, - addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch, - addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch, - addParticleNetMass=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNetMass_switch, - jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload - ) - - nanoAOD_tau_switch = cms.PSet( - idsToAdd = cms.vstring() - ) - (run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(nanoAOD_tau_switch, idsToAdd = ["deepTau2017v2p1"]) - (run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(process, lambda p : nanoAOD_addTauIds(p, nanoAOD_tau_switch.idsToAdd.value())) - (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(nanoAOD_tau_switch, idsToAdd = ["deepTau2018v2p5"]) - (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(process, lambda p : nanoAOD_addTauIds(p, nanoAOD_tau_switch.idsToAdd.value())) - nanoAOD_boostedTau_switch = cms.PSet( - idsToAdd = cms.vstring() - ) - run2_nanoAOD_106Xv2.toModify(nanoAOD_boostedTau_switch, idsToAdd = ["2017v2", "dR0p32017v2", "newDM2017v2","againstEle2018"]) - run2_nanoAOD_106Xv2.toModify(process, lambda p : nanoAOD_addBoostedTauIds(p, nanoAOD_boostedTau_switch.idsToAdd.value())) - - return process - -def nanoAOD_customizeData(process): - process = nanoAOD_customizeCommon(process) - for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1: - modifier.toModify(process, lambda p: nanoAOD_recalibrateMETs(p,isData=True)) - for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify(process, lambda p: nanoAOD_runMETfixEE2017(p,isData=True)) - return process - -def nanoAOD_customizeMC(process): - process = nanoAOD_customizeCommon(process) - for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1: - modifier.toModify(process, lambda p: nanoAOD_recalibrateMETs(p,isData=False)) - for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify(process, lambda p: nanoAOD_runMETfixEE2017(p,isData=False)) - return process - -###increasing the precision of selected GenParticles. -def nanoWmassGenCustomize(process): - pdgSelection="?(abs(pdgId) == 11|| abs(pdgId)==13 || abs(pdgId)==15 ||abs(pdgId)== 12 || abs(pdgId)== 14 || abs(pdgId)== 16|| abs(pdgId)== 24|| pdgId== 23)" - # Keep precision same as default RECO for selected particles - ptPrecision="{}?{}:{}".format(pdgSelection, CandVars.pt.precision.value(),genParticleTable.variables.pt.precision.value()) - process.genParticleTable.variables.pt.precision=cms.string(ptPrecision) - phiPrecision="{} ? {} : {}".format(pdgSelection, CandVars.phi.precision.value(), genParticleTable.variables.phi.precision.value()) - process.genParticleTable.variables.phi.precision=cms.string(phiPrecision) - etaPrecision="{} ? {} : {}".format(pdgSelection, CandVars.eta.precision.value(), genParticleTable.variables.eta.precision.value()) - process.genParticleTable.variables.eta.precision=cms.string(etaPrecision) - return process - -# lowPtElectrons do not exsit for old nano campaigns (i.e. before v9) -_modifiers = ( run2_miniAOD_80XLegacy | - run2_nanoAOD_94XMiniAODv1 | - run2_nanoAOD_94XMiniAODv2 | - run2_nanoAOD_94X2016 | - run2_nanoAOD_102Xv1 | - run2_nanoAOD_106Xv1 ) -_modifiers.toModify(linkedObjects,lowPtElectrons="") -_modifiers.toModify(simpleCleanerTable,lowPtElectrons="") diff --git a/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py b/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py deleted file mode 100644 index 8047841814296..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py +++ /dev/null @@ -1,158 +0,0 @@ -from PhysicsTools.NanoAOD.V10.taus_cff import * -from PhysicsTools.NanoAOD.V10.jetMC_cff import * -from PhysicsTools.NanoAOD.V10.globals_cff import genTable,genFilterTable -from PhysicsTools.NanoAOD.V10.met_cff import metMCTable -from PhysicsTools.NanoAOD.V10.genparticles_cff import * -from PhysicsTools.NanoAOD.V10.particlelevel_cff import * -from PhysicsTools.NanoAOD.V10.genWeightsTable_cfi import * -from PhysicsTools.NanoAOD.V10.genVertex_cff import * -from PhysicsTools.NanoAOD.V10.common_cff import Var,CandVars - -nanoMetadata = cms.EDProducer("UniqueStringProducer", - strings = cms.PSet( - tag = cms.string("untagged"), - ) -) - -nanogenSequence = cms.Sequence( - nanoMetadata+ - cms.Sequence(particleLevelTask)+ - genJetTable+ - patJetPartonsNano+ - genJetFlavourAssociation+ - genJetFlavourTable+ - genJetAK8Table+ - genJetAK8FlavourAssociation+ - genJetAK8FlavourTable+ - cms.Sequence(genTauTask)+ - genTable+ - genFilterTable+ - cms.Sequence(genParticleTablesTask)+ - cms.Sequence(genVertexTablesTask)+ - tautagger+ - rivetProducerHTXS+ - cms.Sequence(particleLevelTablesTask)+ - metMCTable+ - genWeightsTable -) - -def nanoGenCommonCustomize(process): - process.rivetMetTable.extension = False - process.lheInfoTable.storeLHEParticles = True - process.lheInfoTable.precision = 14 - process.genWeightsTable.keepAllPSWeights = True - process.genJetFlavourAssociation.jets = process.genJetTable.src - process.genJetFlavourTable.src = process.genJetTable.src - process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src - process.genJetAK8FlavourTable.src = process.genJetAK8Table.src - process.particleLevel.particleMaxEta = 999. - process.particleLevel.lepMinPt = 0. - process.particleLevel.lepMaxEta = 999. - process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" - # Same as default RECO - setGenPtPrecision(process, CandVars.pt.precision) - setGenEtaPrecision(process, CandVars.eta.precision) - setGenPhiPrecision(process, CandVars.phi.precision) - setGenMassPrecision(process, CandVars.mass.precision) - -def customizeNanoGENFromMini(process): - process.nanogenSequence.insert(0, process.genParticles2HepMCHiggsVtx) - process.nanogenSequence.insert(0, process.genParticles2HepMC) - process.nanogenSequence.insert(0, process.mergedGenParticles) - - process.metMCTable.src = "slimmedMETs" - process.metMCTable.variables.pt = Var("genMET.pt", float, doc="pt") - process.metMCTable.variables.phi = Var("genMET.phi", float, doc="phi") - process.metMCTable.variables.phi.precision = CandVars.phi.precision - - process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared" - process.genParticleTable.src = "prunedGenParticles" - process.patJetPartonsNano.particles = "prunedGenParticles" - process.particleLevel.src = "genParticles2HepMC:unsmeared" - - process.genJetTable.src = "slimmedGenJets" - process.genJetAK8Table.src = "slimmedGenJetsAK8" - process.tauGenJetsForNano.GenParticles = "prunedGenParticles" - process.genVisTaus.srcGenParticles = "prunedGenParticles" - - nanoGenCommonCustomize(process) - - return process - -def customizeNanoGEN(process): - process.metMCTable.src = "genMetTrue" - process.metMCTable.variables = cms.PSet(PTVars) - - process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" - process.genParticleTable.src = "genParticles" - process.patJetPartonsNano.particles = "genParticles" - process.particleLevel.src = "generatorSmeared" - - process.genJetTable.src = "ak4GenJets" - process.genJetAK8Table.src = "ak8GenJets" - process.tauGenJetsForNano.GenParticles = "genParticles" - process.genVisTaus.srcGenParticles = "genParticles" - - # In case customizeNanoGENFromMini has already been called - process.nanogenSequence.remove(process.genParticles2HepMCHiggsVtx) - process.nanogenSequence.remove(process.genParticles2HepMC) - process.nanogenSequence.remove(process.mergedGenParticles) - nanoGenCommonCustomize(process) - return process - -# Prune gen particles with tight conditions applied in usual NanoAOD -def pruneGenParticlesNano(process): - process.finalGenParticles.src = process.genParticleTable.src.getModuleLabel() - process.genParticleTable.src = "finalGenParticles" - process.nanogenSequence.insert(0, process.finalGenParticles) - return process - -# Prune gen particles with conditions applied in usual MiniAOD -def pruneGenParticlesMini(process): - if process.nanogenSequence.contains(process.mergedGenParticles): - raise ValueError("Applying the MiniAOD genParticle pruner to MiniAOD is redunant. " \ - "Use a different customization.") - from PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi import prunedGenParticles - process.prunedGenParticles = prunedGenParticles.clone() - process.prunedGenParticles.src = "genParticles" - process.genParticleTable.src = "prunedGenParticles" - - process.nanogenSequence.insert(0, process.prunedGenParticles) - return process - -def setGenFullPrecision(process): - process = setGenPtPrecision(process, 23) - process = setGenEtaPrecision(process, 23) - process = setGenPhiPrecision(process, 23) - process = setGenMassPrecision(process, 23) - return process - -def setGenPtPrecision(process, precision): - process.genParticleTable.variables.pt.precision = precision - process.genJetTable.variables.pt.precision = precision - process.metMCTable.variables.pt.precision = precision - return process - -def setGenEtaPrecision(process, precision): - process.genParticleTable.variables.eta.precision = precision - process.genJetTable.variables.eta.precision = precision - return process - -def setGenPhiPrecision(process, precision): - process.genParticleTable.variables.phi.precision = precision - process.genJetTable.variables.phi.precision = precision - process.metMCTable.variables.phi.precision = precision - return process - -def setGenMassPrecision(process, precision): - process.genParticleTable.variables.mass.precision = precision - process.genJetTable.variables.mass.precision = precision - return process - -def setLHEFullPrecision(process): - process.lheInfoTable.precision = 23 - return process - -def setGenWeightsFullPrecision(process): - process.genWeightsTable.lheWeightPrecision = 23 - return process diff --git a/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py b/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py deleted file mode 100644 index 8167f108efbf8..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py +++ /dev/null @@ -1,180 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * - - - -##################### User floats producers, selectors ########################## - -mergedGenParticles = cms.EDProducer("MergedGenParticleProducer", - inputPruned = cms.InputTag("prunedGenParticles"), - inputPacked = cms.InputTag("packedGenParticles"), -) - -genParticles2HepMC = cms.EDProducer("GenParticles2HepMCConverter", - genParticles = cms.InputTag("mergedGenParticles"), - genEventInfo = cms.InputTag("generator"), - signalParticlePdgIds = cms.vint32(), -) - -genParticles2HepMCHiggsVtx = cms.EDProducer("GenParticles2HepMCConverter", - genParticles = cms.InputTag("mergedGenParticles"), - genEventInfo = cms.InputTag("generator"), - signalParticlePdgIds = cms.vint32(25), ## for the Higgs analysis -) - - -particleLevel = cms.EDProducer("ParticleLevelProducer", - src = cms.InputTag("genParticles2HepMC:unsmeared"), - - doJetClustering = cms.bool(False), # Not needed as Rivet jets aren't used currently - usePromptFinalStates = cms.bool(True), # for leptons, photons, neutrinos - excludePromptLeptonsFromJetClustering = cms.bool(False), - excludeNeutrinosFromJetClustering = cms.bool(True), - - particleMinPt = cms.double(0.), - particleMaxEta = cms.double(5.), # HF range. Maximum 6.0 on MiniAOD - - lepConeSize = cms.double(0.1), # for photon dressing - lepMinPt = cms.double(1.), - lepMaxEta = cms.double(2.5), - - jetConeSize = cms.double(0.4), - jetMinPt = cms.double(10.), - jetMaxEta = cms.double(999.), - - fatJetConeSize = cms.double(0.8), - fatJetMinPt = cms.double(170.), - fatJetMaxEta = cms.double(999.), - - phoIsoConeSize = cms.double(0.4), - phoMaxRelIso = cms.double(0.5), - phoMinPt = cms.double(1.), - phoMaxEta = cms.double(2.5), -) - -rivetProducerHTXS = cms.EDProducer('HTXSRivetProducer', - HepMCCollection = cms.InputTag('genParticles2HepMCHiggsVtx','unsmeared'), - LHERunInfo = cms.InputTag('externalLHEProducer'), - ProductionMode = cms.string('AUTO'), -) - - -##################### Tables for final output and docs ########################## -rivetLeptonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:leptons"), - cut = cms.string("pt > 15"), - name= cms.string("GenDressedLepton"), - doc = cms.string("Dressed leptons from Rivet-based ParticleLevelProducer"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table - externalVariables = cms.PSet( - hasTauAnc = ExtVar(cms.InputTag("tautagger"),bool, doc="true if Dressed lepton has a tau as ancestor"), - ), - variables = cms.PSet( - P4Vars, - pdgId = Var("pdgId", int, doc="PDG id"), - ) -) - -rivetPhotonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:photons"), - cut = cms.string("pt > 10"), - name= cms.string("GenIsolatedPhoton"), - doc = cms.string("Isolated photons from Rivet-based ParticleLevelProducer"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table - variables = cms.PSet( - P4Vars - ) -) - -tautagger = cms.EDProducer("GenJetTauTaggerProducer", - src = rivetLeptonTable.src, -) - -#rivetJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:jets"), -# cut = cms.string(""), -# name= cms.string("RivetJet"), -# doc = cms.string("AK4 jets from Rivet-based ParticleLevelProducer"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), -# variables = cms.PSet( -# # Identical to GenJets, so we just extend their flavor information -# P4Vars, -# hadronFlavour = Var("pdgId", int, doc="PDG id"), -# ) -#) - -#rivetFatJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:fatjets"), -# cut = cms.string(""), -# name= cms.string("GenFatJet"), -# doc = cms.string("AK8 jets from Rivet-based ParticleLevelProducer"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), # this is the main table -# variables = cms.PSet( -# P4Vars, -# hadronFlavour = Var("pdgId", int, doc="PDG id"), -# ) -#) - -#rivetTagTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:tags"), -# cut = cms.string(""), -# name= cms.string("RivetTag"), -# doc = cms.string("Tag particles from Rivet-based ParticleLevelProducer, momenta scaled down by 10e-20"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), # this is the main table -# variables = cms.PSet( -# P4Vars, -# pdgId = Var("pdgId", int, doc="PDG id"), -# ) -#) - -rivetMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:mets"), - name = cms.string("MET"), - doc = cms.string("MET from Rivet-based ParticleLevelProducer in fiducial volume abs(eta)<5"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(True), # this is the main table - variables = cms.PSet( - fiducialGenPt = Var("pt", float, precision=10), - fiducialGenPhi = Var("phi", float, precision=10), - ), -) - -HTXSCategoryTable = cms.EDProducer("SimpleHTXSFlatTableProducer", - src = cms.InputTag("rivetProducerHTXS","HiggsClassification"), - cut = cms.string(""), - name = cms.string("HTXS"), - doc = cms.string("HTXS classification"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables=cms.PSet( - stage_0 = Var("stage0_cat",int, doc="HTXS stage-0 category"), - stage_1_pTjet30 = Var("stage1_cat_pTjet30GeV",int, doc="HTXS stage-1 category (jet pt>30 GeV)"), - stage_1_pTjet25 = Var("stage1_cat_pTjet25GeV",int, doc="HTXS stage-1 category (jet pt>25 GeV)"), - stage1_1_cat_pTjet30GeV = Var("stage1_1_cat_pTjet30GeV",int,doc="HTXS stage-1.1 category(jet pt>30 GeV)"), - stage1_1_cat_pTjet25GeV = Var("stage1_1_cat_pTjet25GeV",int,doc="HTXS stage-1.1 category(jet pt>25 GeV)"), - stage1_1_fine_cat_pTjet30GeV = Var("stage1_1_fine_cat_pTjet30GeV",int,doc="HTXS stage-1.1-fine category(jet pt>30 GeV)"), - stage1_1_fine_cat_pTjet25GeV = Var("stage1_1_fine_cat_pTjet25GeV",int,doc="HTXS stage-1.1-fine category(jet pt>25 GeV)"), - stage1_2_cat_pTjet30GeV = Var("stage1_2_cat_pTjet30GeV",int,doc="HTXS stage-1.2 category(jet pt>30 GeV)"), - stage1_2_cat_pTjet25GeV = Var("stage1_2_cat_pTjet25GeV",int,doc="HTXS stage-1.2 category(jet pt>25 GeV)"), - stage1_2_fine_cat_pTjet30GeV = Var("stage1_2_fine_cat_pTjet30GeV",int,doc="HTXS stage-1.2-fine category(jet pt>30 GeV)"), - stage1_2_fine_cat_pTjet25GeV = Var("stage1_2_fine_cat_pTjet25GeV",int,doc="HTXS stage-1.2-fine category(jet pt>25 GeV)"), - Higgs_pt = Var("higgs.Pt()",float, doc="pt of the Higgs boson as identified in HTXS", precision=14), - Higgs_y = Var("higgs.Rapidity()",float, doc="rapidity of the Higgs boson as identified in HTXS", precision=12), - njets30 = Var("jets30.size()","uint8", doc="number of jets with pt>30 GeV as identified in HTXS"), - njets25 = Var("jets25.size()","uint8", doc="number of jets with pt>25 GeV as identified in HTXS"), - ) -) - -lheInfoTable = cms.EDProducer("LHETablesProducer", - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - precision = cms.int32(14), - storeLHEParticles = cms.bool(True) - ) - -particleLevelTask = cms.Task(mergedGenParticles,genParticles2HepMC,particleLevel,tautagger,genParticles2HepMCHiggsVtx,rivetProducerHTXS) -particleLevelTablesTask = cms.Task(rivetLeptonTable,rivetPhotonTable,rivetMetTable,HTXSCategoryTable,lheInfoTable) diff --git a/PhysicsTools/NanoAOD/python/V10/photons_cff.py b/PhysicsTools/NanoAOD/python/V10/photons_cff.py deleted file mode 100644 index 13e93df49fa34..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/photons_cff.py +++ /dev/null @@ -1,403 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -from math import ceil,log - - -photon_id_modules_WorkingPoints_nanoAOD = cms.PSet( - modules = cms.vstring( - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_TrueVtx_cff', - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1p1_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff', - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff', - ), - WorkingPoints = cms.vstring( - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose", - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium", - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight", - ) -) -photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2 = cms.PSet( - modules = photon_id_modules_WorkingPoints_nanoAOD.modules, - WorkingPoints = cms.vstring( - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose", - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium", - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight", - ) -) - -def make_bitmapVID_docstring(id_modules_working_points_pset): - pset = id_modules_working_points_pset - - for modname in pset.modules: - ids = __import__(modname, globals(), locals(), ['idName','cutFlow']) - for name in dir(ids): - _id = getattr(ids,name) - if hasattr(_id,'idName') and hasattr(_id,'cutFlow'): - if (len(pset.WorkingPoints)>0 and _id.idName == pset.WorkingPoints[0].split(':')[-1]): - cut_names = ','.join([cut.cutName.value() for cut in _id.cutFlow]) - n_bits_per_cut = int(ceil(log(len(pset.WorkingPoints)+1,2))) - return 'VID compressed bitmap (%s), %d bits per cut'%(cut_names, n_bits_per_cut) - raise ValueError("Something is wrong in the photon ID modules parameter set!") - -bitmapVIDForPho = cms.EDProducer("PhoVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedPhotons"), - srcForID = cms.InputTag("reducedEgamma","reducedGedPhotons"), - WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD.WorkingPoints, -) - -bitmapVIDForPhoSpring16V2p2 = cms.EDProducer("PhoVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedPhotons"), - WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2.WorkingPoints, -) - -isoForPho = cms.EDProducer("PhoIsoValueMapProducer", - src = cms.InputTag("slimmedPhotons"), - relative = cms.bool(False), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - mapIsoChg = cms.InputTag("photonIDValueMapProducer:phoChargedIsolation"), - mapIsoNeu = cms.InputTag("photonIDValueMapProducer:phoNeutralHadronIsolation"), - mapIsoPho = cms.InputTag("photonIDValueMapProducer:phoPhotonIsolation"), - EAFile_PFIso_Chg = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfChargedHadrons_90percentBased_V2.txt"), - EAFile_PFIso_Neu = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfNeutralHadrons_90percentBased_V2.txt"), - EAFile_PFIso_Pho = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_V2.txt"), -) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toModify(isoForPho, - EAFile_PFIso_Chg = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfChargedHadrons_90percentBased.txt"), - EAFile_PFIso_Neu = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfNeutralHadrons_90percentBased.txt"), - EAFile_PFIso_Pho = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfPhotons_90percentBased.txt"), - ) - -seedGainPho = cms.EDProducer("PhotonSeedGainProducer", src = cms.InputTag("slimmedPhotons")) - -calibratedPatPhotonsNano = cms.EDProducer("CalibratedPatPhotonProducer", - correctionFile = cms.string('EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain'), - mightGet = cms.optional.untracked.vstring, - minEtToCalibrate = cms.double(5.0), - produceCalibratedObjs = cms.bool(False), - recHitCollectionEB = cms.InputTag("reducedEgamma","reducedEBRecHits"), - recHitCollectionEE = cms.InputTag("reducedEgamma","reducedEERecHits"), - semiDeterministic = cms.bool(True), - src = cms.InputTag("slimmedPhotons"), - valueMapsStored = cms.vstring( - 'energyScaleStatUp', - 'energyScaleStatDown', - 'energyScaleSystUp', - 'energyScaleSystDown', - 'energyScaleGainUp', - 'energyScaleGainDown', - 'energySigmaRhoUp', - 'energySigmaRhoDown', - 'energySigmaPhiUp', - 'energySigmaPhiDown', - 'energyScaleUp', - 'energyScaleDown', - 'energySigmaUp', - 'energySigmaDown', - 'energyScaleValue', - 'energySigmaValue', - 'energySmearNrSigma', - 'ecalEnergyPreCorr', - 'ecalEnergyErrPreCorr', - 'ecalEnergyPostCorr', - 'ecalEnergyErrPostCorr' - ) -) - -(run2_egamma_2016 & tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain") -) - -(run2_egamma_2016 & ~tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_postVFP_RunFineEtaR9Gain"), -) - -run2_egamma_2017.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_24Feb2020_runEtaR9Gain_v2") -) - -run2_egamma_2018.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain") -) - -run2_nanoAOD_102Xv1.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_Step2Closure_CoarseEtaR9Gain_v2") -) - -run2_nanoAOD_94XMiniAODv1.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc") -) - -run2_nanoAOD_94XMiniAODv2.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_17Nov2017_v1_ele_unc") -) - -run2_miniAOD_80XLegacy.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Legacy2016_07Aug2017_FineEtaR9_v3_ele_unc") -) - - -slimmedPhotonsWithUserData = cms.EDProducer("PATPhotonUserDataEmbedder", - src = cms.InputTag("slimmedPhotons"), - parentSrcs = cms.VInputTag("reducedEgamma:reducedGedPhotons"), - userFloats = cms.PSet( - mvaID = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values"), - PFIsoChg = cms.InputTag("isoForPho:PFIsoChg"), - PFIsoAll = cms.InputTag("isoForPho:PFIsoAll"), - ), - userIntFromBools = cms.PSet( - cutbasedID_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose"), - cutbasedID_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium"), - cutbasedID_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight"), - mvaID_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp90"), - mvaID_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp80"), - cutbasedIDV1_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-loose"), - cutbasedIDV1_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-medium"), - cutbasedIDV1_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-tight"), - ), - userInts = cms.PSet( - VIDNestedWPBitmap = cms.InputTag("bitmapVIDForPho"), - seedGain = cms.InputTag("seedGainPho"), - ) -) - - -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(slimmedPhotonsWithUserData.userFloats, - ecalEnergyErrPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyErrPostCorr"), - ecalEnergyPreCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPreCorr"), - ecalEnergyPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPostCorr"), - energyScaleUpNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleUp"), - energyScaleDownNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleDown"), - energySigmaUpNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaUp"), - energySigmaDownNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaDown"), - ) - - -run2_nanoAOD_94X2016.toModify(slimmedPhotonsWithUserData.userFloats, - ecalEnergyErrPostCorrNew = None, - ecalEnergyPreCorrNew = None, - ecalEnergyPostCorrNew = None, - energyScaleUpNew = None, - energyScaleDownNew = None, - energySigmaUpNew = None, - energySigmaDownNew = None - ) - - -finalPhotons = cms.EDFilter("PATPhotonRefSelector", - src = cms.InputTag("slimmedPhotonsWithUserData"), - cut = cms.string("pt > 5 ") -) - -photonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","photons"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Photon"), - doc = cms.string("slimmedPhotons after basic selection (" + finalPhotons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the photons - variables = cms.PSet(P3Vars, - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - electronIdx = Var("?hasUserCand('electron')?userCand('electron').key():-1", int, doc="index of the associated electron (-1 if none)"), - energyErr = Var("getCorrectedEnergyError('regression2')",float,doc="energy error of the cluster from regression",precision=6), - energyRaw = Var("superCluster().rawEnergy()",float,doc="raw energy of photon supercluster", precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the supercluster, calculated with full 5x5 region",precision=8), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=8), - sipip = Var("showerShapeVariables().sigmaIphiIphi", float, doc="sigmaIphiIphi of the supercluster", precision=8), - sieip = Var("full5x5_showerShapeVariables().sigmaIetaIphi",float,doc="sigma_IetaIphi of the supercluster, calculated with full 5x5 region",precision=8), - s4 = Var("full5x5_showerShapeVariables().e2x2/full5x5_showerShapeVariables().e5x5",float,doc="e2x2/e5x5 of the supercluster, calculated with full 5x5 region",precision=8), - etaWidth = Var("superCluster().etaWidth()",float,doc="Width of the photon supercluster in eta", precision=8), - phiWidth = Var("superCluster().phiWidth()",float,doc="Width of the photon supercluster in phi", precision=8), - cutBased = Var( - "userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')", - int, - doc="cut-based ID bitmap, Fall17V2, (0:fail, 1:loose, 2:medium, 3:tight)", - ), - cutBased_Fall17V1Bitmap = Var( - "userInt('cutbasedIDV1_loose')+2*userInt('cutbasedIDV1_medium')+4*userInt('cutbasedIDV1_tight')", - int, - doc="cut-based ID bitmap, Fall17V1, 2^(0:loose, 1:medium, 2:tight).", - ), - vidNestedWPBitmap = Var( - "userInt('VIDNestedWPBitmap')", - int, - doc="Fall17V2 " + make_bitmapVID_docstring(photon_id_modules_WorkingPoints_nanoAOD), - ), - electronVeto = Var("passElectronVeto()",bool,doc="pass electron veto"), - pixelSeed = Var("hasPixelSeed()",bool,doc="has pixel seed"), - mvaID = Var("userFloat('mvaID')",float,doc="MVA ID score, Fall17V2",precision=10), - mvaID_WP90 = Var("userInt('mvaID_WP90')",bool,doc="MVA ID WP90, Fall17V2"), - mvaID_WP80 = Var("userInt('mvaID_WP80')",bool,doc="MVA ID WP80, Fall17V2"), - pfPhoIso03 = Var("photonIso()",float,doc="PF absolute isolation dR=0.3, photon component (uncorrected)"), - pfChargedIsoPFPV = Var("chargedHadronPFPVIso()",float,doc="PF absolute isolation dR=0.3, charged component (PF PV only)"), - pfChargedIsoWorstVtx = Var("chargedHadronWorstVtxIso()",float,doc="PF absolute isolation dR=0.3, charged component (Vertex with largest isolation)"), - pfRelIso03_chg = Var("userFloat('PFIsoChg')/pt",float,doc="PF relative isolation dR=0.3, charged component (with rho*EA PU corrections)"), - pfRelIso03_all = Var("userFloat('PFIsoAll')/pt",float,doc="PF relative isolation dR=0.3, total (with rho*EA PU corrections)"), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - isScEtaEB = Var("abs(superCluster().eta()) < 1.4442",bool,doc="is supercluster eta within barrel acceptance"), - isScEtaEE = Var("abs(superCluster().eta()) > 1.566 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), - seedGain = Var("userInt('seedGain')","uint8",doc="Gain of the seed crystal"), - # position of photon is best approximated by position of seed cluster, not the SC centroid - x_calo = Var("superCluster().seed().position().x()",float,doc="photon supercluster position on calorimeter, x coordinate (cm)",precision=10), - y_calo = Var("superCluster().seed().position().y()",float,doc="photon supercluster position on calorimeter, y coordinate (cm)",precision=10), - z_calo = Var("superCluster().seed().position().z()",float,doc="photon supercluster position on calorimeter, z coordinate (cm)",precision=10), - # ES variables - esEffSigmaRR = Var("full5x5_showerShapeVariables().effSigmaRR()", float, doc="preshower sigmaRR"), - esEnergyOverRawE = Var("superCluster().preshowerEnergy()/superCluster().rawEnergy()", float, doc="ratio of preshower energy to raw supercluster energy"), - haloTaggerMVAVal = Var("haloTaggerMVAVal()",float,doc="Value of MVA based BDT based beam halo tagger in the Ecal endcap (valid for pT > 200 GeV)",precision=8), - ) -) - - -#these eras need to make the energy correction, hence the "New" -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(photonTable.variables, - pt = Var("pt*userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalEnergyErrPostCorrNew')",float,doc="energy error of the cluster from regression",precision=6), - eCorr = Var("userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')",float,doc="ratio of the calibrated energy/miniaod energy"), - hoe = Var("hadTowOverEm()",float,doc="H over E (Run2)",precision=8), - ) - -#these eras have the energy correction in the mini -run2_nanoAOD_94X2016.toModify(photonTable.variables, - pt = Var("pt*userFloat('ecalEnergyPostCorr')/userFloat('ecalEnergyPreCorr')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalEnergyErrPostCorr')",float,doc="energy error of the cluster from regression",precision=6), - eCorr = Var("userFloat('ecalEnergyPostCorr')/userFloat('ecalEnergyPreCorr')",float,doc="ratio of the calibrated energy/miniaod energy"), - - ) - -(run2_nanoAOD_94X2016 | run2_miniAOD_80XLegacy).toModify(slimmedPhotonsWithUserData.userFloats, - mvaID_Spring16nonTrigV1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values"), - ).toModify(slimmedPhotonsWithUserData.userIntFromBools, - cutID_Spring16_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose"), - cutID_Spring16_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium"), - cutID_Spring16_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight"), - mvaID_Spring16nonTrigV1_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp90"), - mvaID_Spring16nonTrigV1_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp80"), - ).toModify(slimmedPhotonsWithUserData.userInts, - VIDNestedWPBitmap_Spring16V2p2 = cms.InputTag("bitmapVIDForPhoSpring16V2p2"), - ).toModify(photonTable.variables, - cutBased_Spring16V2p2 = Var( - "userInt('cutID_Spring16_loose')+userInt('cutID_Spring16_medium')+userInt('cutID_Spring16_tight')", - int, - doc="cut-based ID bitmap, Spring16V2p2, (0:fail, 1:loose, 2:medium, 3:tight)" - ), - vidNestedWPBitmap_Spring16V2p2 = Var( - "userInt('VIDNestedWPBitmap_Spring16V2p2')", - int, - doc="Spring16V2p2 " + make_bitmapVID_docstring(photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2) - ), - mvaID_Spring16nonTrigV1 = Var( - "userFloat('mvaID_Spring16nonTrigV1')", - float, - doc="MVA ID score, Spring16nonTrigV1", - precision=10 - ), - ) - -photonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = photonTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -photonMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = photonTable.src, - mcMap = cms.InputTag("photonsMCMatchForTable"), - objName = photonTable.name, - objType = photonTable.name, #cms.string("Photon"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 photons or electrons"), -) - -from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma8XObjectUpdateModifier,egamma9X105XUpdateModifier,prependEgamma8XObjectUpdateModifier -#we have dataformat changes to 106X so to read older releases we use egamma updators -slimmedPhotonsTo106X = cms.EDProducer("ModifiedPhotonProducer", - src = cms.InputTag("slimmedPhotons"), - modifierConfig = cms.PSet( modifications = cms.VPSet(egamma9X105XUpdateModifier) ) -) -#might as well fix 80X while we're at it although the differences are not so relavent for nano -run2_miniAOD_80XLegacy.toModify( slimmedPhotonsTo106X.modifierConfig.modifications, prependEgamma8XObjectUpdateModifier ) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1).toModify(bitmapVIDForPho, src = "slimmedPhotonsTo106X").toModify(bitmapVIDForPhoSpring16V2p2, src = "slimmedPhotonsTo106X").toModify(isoForPho, src = "slimmedPhotonsTo106X").toModify(calibratedPatPhotonsNano, src = "slimmedPhotonsTo106X").toModify(slimmedPhotonsWithUserData, src = "slimmedPhotonsTo106X").toModify(seedGainPho, src = "slimmedPhotonsTo106X") - -##adding 4 most imp scale & smearing variables to table -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(photonTable.variables, - dEscaleUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleUpNew')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleDownNew')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaUpNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaDownNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - ) - -(run2_nanoAOD_94X2016).toModify(photonTable.variables, - dEscaleUp=Var("userFloat('ecalEnergyPostCorr') - userFloat('energyScaleUp')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalEnergyPostCorr') - userFloat('energyScaleDown')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalEnergyPostCorr') - userFloat('energySigmaUp')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalEnergyPostCorr') - userFloat('energySigmaDown')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - ) - -photonTask = cms.Task(bitmapVIDForPho, isoForPho, seedGainPho, calibratedPatPhotonsNano, slimmedPhotonsWithUserData, finalPhotons) -photonTablesTask = cms.Task(photonTable) -photonMCTask = cms.Task(photonsMCMatchForTable, photonMCTable) - - -photonIDValueMapProducer = cms.EDProducer("PhotonIDValueMapProducer", - ebReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedEBRecHits"), - eeReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedEERecHits"), - esReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedESRecHits"), - isAOD = cms.bool(False), - mightGet = cms.optional.untracked.vstring, - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - pfCandidates = cms.InputTag("packedPFCandidates"), - src = cms.InputTag("slimmedPhotons","","@skipCurrentProcess"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -egmPhotonIsolation = cms.EDProducer("CITKPFIsolationSumProducer", - isolationConeDefinitions = cms.VPSet( - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('h+'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ), - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('h0'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ), - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('gamma'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ) - ), - mightGet = cms.optional.untracked.vstring, - srcForIsolationCone = cms.InputTag("packedPFCandidates"), - srcToIsolate = cms.InputTag("slimmedPhotons") -) - -_withUpdatePho_Task = cms.Task(egmPhotonIsolation,photonIDValueMapProducer,slimmedPhotonsTo106X, photonTask.copy()) - -(run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_94XMiniAODv1).toReplaceWith(photonTask, _withUpdatePho_Task) - -_withSpring16V2p2_Task = cms.Task(bitmapVIDForPhoSpring16V2p2, _withUpdatePho_Task.copy()) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016).toReplaceWith(photonTask, _withSpring16V2p2_Task) diff --git a/PhysicsTools/NanoAOD/python/V10/protons_cff.py b/PhysicsTools/NanoAOD/python/V10/protons_cff.py deleted file mode 100644 index a9278dcd32eaa..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/protons_cff.py +++ /dev/null @@ -1,73 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar -from PhysicsTools.NanoAOD.genProtonTable_cfi import genProtonTable as _genproton -from PhysicsTools.NanoAOD.nano_eras_cff import * -from RecoPPS.ProtonReconstruction.ppsFilteredProtonProducer_cfi import * - -singleRPProtons = True - -filteredProtons = ppsFilteredProtonProducer.clone( - protons_single_rp = cms.PSet( - include = cms.bool(singleRPProtons) - ) -) - -protonTable = cms.EDProducer("ProtonProducer", - tagRecoProtonsMulti = cms.InputTag("filteredProtons", "multiRP"), - tagTrackLite = cms.InputTag("ctppsLocalTrackLiteProducer"), - storeSingleRPProtons = cms.bool(singleRPProtons) -) -protonTable.tagRecoProtonsSingle = cms.InputTag("filteredProtons" if singleRPProtons else "ctppsProtons","singleRP") - - -multiRPTable = cms.EDProducer("SimpleProtonTrackFlatTableProducer", - src = cms.InputTag("filteredProtons","multiRP"), - cut = cms.string(""), - name = cms.string("Proton_multiRP"), - doc = cms.string("bon"), - singleton = cms.bool(False), - extension = cms.bool(False), - skipNonExistingSrc = cms.bool(True), - variables = cms.PSet( - xi = Var("xi",float,doc="xi or dp/p",precision=12), - thetaX = Var("thetaX",float,doc="theta x",precision=13), - thetaY = Var("thetaY",float,doc="theta y",precision=13), - t = Var("t",float,doc="Mandelstam variable t",precision=13), - time = Var("time()",float,doc="time",precision=16), - timeUnc = Var("timeError",float,doc="time uncertainty",precision=13), - ), - externalVariables = cms.PSet( - arm = ExtVar("protonTable:arm",int,doc="0 = sector45, 1 = sector56"), - ), -) - -singleRPTable = cms.EDProducer("SimpleProtonTrackFlatTableProducer", - src = cms.InputTag("filteredProtons","singleRP"), - cut = cms.string(""), - name = cms.string("Proton_singleRP"), - doc = cms.string("bon"), - singleton = cms.bool(False), - extension = cms.bool(False), - skipNonExistingSrc = cms.bool(True), - variables = cms.PSet( - xi = Var("xi",float,doc="xi or dp/p",precision=12), - thetaY = Var("thetaY",float,doc="th y",precision=10), - ), - externalVariables = cms.PSet( - decRPId = ExtVar("protonTable:protonRPId",int,doc="Detector ID",precision=8), - ), -) - -protonTablesTask = cms.Task(filteredProtons,protonTable,multiRPTable) -if singleRPProtons: protonTablesTask.add(singleRPTable) - -# GEN-level signal/PU protons collection -genProtonTable = _genproton.clone( - cut = cms.string('(pdgId == 2212) && (abs(pz) > 5200) && (abs(pz) < 6467.5)') # xi in [0.015, 0.2] -) - -genProtonTablesTask = cms.Task(genProtonTable) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1).toReplaceWith(protonTablesTask, cms.Task()) -# input GEN-level PU protons collection only introduced for UL and 12_X_Y -(run2_miniAOD_80XLegacy | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1).toReplaceWith(genProtonTablesTask, cms.Task()) diff --git a/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py b/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py deleted file mode 100644 index 584b4de182eb0..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py +++ /dev/null @@ -1,75 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - - -chsForSATkJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string('charge()!=0 && pvAssociationQuality()>=5 && vertexRef().key()==0')) -softActivityJets = cms.EDProducer("FastjetJetProducer", - Active_Area_Repeats = cms.int32(1), - GhostArea = cms.double(0.01), - Ghost_EtaMax = cms.double(5.0), - Rho_EtaMax = cms.double(4.4), - applyWeight = cms.bool(False), - doAreaDiskApprox = cms.bool(False), - doAreaFastjet = cms.bool(False), - doPUOffsetCorr = cms.bool(False), - doPVCorrection = cms.bool(False), - doRhoFastjet = cms.bool(False), - inputEMin = cms.double(0.0), - inputEtMin = cms.double(0.0), - jetAlgorithm = cms.string('AntiKt'), - jetPtMin = cms.double(1), - jetType = cms.string('PFJet'), - maxBadEcalCells = cms.uint32(9999999), - maxBadHcalCells = cms.uint32(9999999), - maxProblematicEcalCells = cms.uint32(9999999), - maxProblematicHcalCells = cms.uint32(9999999), - maxRecoveredEcalCells = cms.uint32(9999999), - maxRecoveredHcalCells = cms.uint32(9999999), - minSeed = cms.uint32(14327), - nSigmaPU = cms.double(1.0), - rParam = cms.double(0.4), - radiusPU = cms.double(0.5), - src = cms.InputTag("chsForSATkJets"), - srcPVs = cms.InputTag(""), - useDeterministicSeed = cms.bool(True), - voronoiRfact = cms.double(-0.9) -) -softActivityJets10 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>10')) -softActivityJets5 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>5')) -softActivityJets2 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>2')) - - -##### Soft Activity tables -saJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("softActivityJets"), - cut = cms.string(""), - maxLen = cms.uint32(6), - name = cms.string("SoftActivityJet"), - doc = cms.string("jets clustered from charged candidates compatible with primary vertex (" + chsForSATkJets.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet(P3Vars, - ) -) - -saJetTable.variables.pt.precision=10 -saJetTable.variables.eta.precision=8 -saJetTable.variables.phi.precision=8 - -saTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - SoftActivityJetHT = ExtVar( cms.InputTag("softActivityJets"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>1" ), - SoftActivityJetHT10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt , pt >10" ), - SoftActivityJetHT5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>5" ), - SoftActivityJetHT2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt >2" ), - SoftActivityJetNjets10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatesize", doc = "number of soft activity jet pt, pt >2" ), - SoftActivityJetNjets5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatesize", doc = "number of soft activity jet pt, pt >5" ), - SoftActivityJetNjets2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatesize", doc = "number of soft activity jet pt, pt >10" ), - - ) -) - -softActivityTask = cms.Task(chsForSATkJets,softActivityJets,softActivityJets2,softActivityJets5,softActivityJets10) -softActivityTablesTask = cms.Task(saJetTable,saTable) diff --git a/PhysicsTools/NanoAOD/python/V10/taus_cff.py b/PhysicsTools/NanoAOD/python/V10/taus_cff.py deleted file mode 100644 index 9659b1f76b14a..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/taus_cff.py +++ /dev/null @@ -1,318 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,P4Vars -from PhysicsTools.JetMCAlgos.TauGenJets_cfi import tauGenJets -from PhysicsTools.JetMCAlgos.TauGenJetsDecayModeSelectorAllHadrons_cfi import tauGenJetsSelectorAllHadrons - -##################### Updated tau collection with MVA-based tau-Ids rerun ####### -# Used only in some eras -from PhysicsTools.NanoAOD.V10.taus_updatedMVAIds_cff import * - -##################### User floats producers, selectors ########################## - -# Original DeepTau v2p5 in 12_4_X doesn't include WPs in MINIAOD -# Import thresholds here to define WPs manually from raw scores -from RecoTauTag.RecoTau.tauIdWPsDefs import WORKING_POINTS_v2p5 - -finalTaus = cms.EDFilter("PATTauRefSelector", - src = cms.InputTag("slimmedTaus"), - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || (tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum'))<2.5) || tauID('byVVVLooseDeepTau2017v2p1VSjet') || tauID('byVVVLooseDeepTau2018v2p5VSjet'))") -) - -(run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(finalTaus, - src = cms.InputTag("slimmedTausUpdated"), - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT2015') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2') || tauID('byVVVLooseDeepTau2017v2p1VSjet'))") - ) - -(run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_92X).toModify(finalTaus, - src = cms.InputTag("slimmedTausUpdated"), - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v1') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2') || tauID('byVVVLooseDeepTau2017v2p1VSjet'))") - ) -run2_miniAOD_80XLegacy.toModify(finalTaus, - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT'))") - ) - -run3_nanoAOD_124.toModify(finalTaus, - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || (tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum'))<2.5) || tauID('byVVVLooseDeepTau2017v2p1VSjet') || (tauID('byDeepTau2018v2p5VSjetraw') > {}))".format(WORKING_POINTS_v2p5["jet"]["VVVLoose"])) - ) - -##################### Tables for final output and docs ########################## -def _tauIdWPMask(pattern, choices, doc="", from_raw=False, wp_thrs=None): - if from_raw: - assert wp_thrs is not None, "wp_thrs argument in _tauIdWPMask() is None, expect it to be dict-like" - - var_definition = [] - for wp_name in choices: - if not isinstance(wp_thrs[wp_name], float): - raise TypeError("Threshold for WP=%s is not a float number." % wp_name) - wp_definition = "test_bit(tauID('{}')-{}+1,0)".format(pattern, wp_thrs[wp_name]) - var_definition.append(wp_definition) - var_definition = " + ".join(var_definition) - else: - var_definition = " + ".join(["tauID('%s')" % (pattern % c) for c in choices]) - - doc = doc + ": "+", ".join(["%d = %s" % (i,c) for (i,c) in enumerate(choices, start=1)]) - return Var(var_definition, "uint8", doc=doc) - -tauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","taus"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Tau"), - doc = cms.string("slimmedTaus after basic selection (" + finalTaus.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet() # PSet defined below in era dependent way -) -_tauVarsBase = cms.PSet(P4Vars, - charge = Var("charge", int, doc="electric charge"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - decayMode = Var("decayMode()",int), - idDecayModeOldDMs = Var("tauID('decayModeFinding')", bool), - - leadTkPtOverTauPt = Var("leadChargedHadrCand.pt/pt ",float, doc="pt of the leading track divided by tau pt",precision=10), - leadTkDeltaEta = Var("leadChargedHadrCand.eta - eta ",float, doc="eta of the leading track, minus tau eta",precision=8), - leadTkDeltaPhi = Var("deltaPhi(leadChargedHadrCand.phi, phi) ",float, doc="phi of the leading track, minus tau phi",precision=8), - - dxy = Var("leadChargedHadrCand().dxy()",float, doc="d_{xy} of lead track with respect to PV, in cm (with sign)",precision=10), - dz = Var("leadChargedHadrCand().dz()",float, doc="d_{z} of lead track with respect to PV, in cm (with sign)",precision=14), - - # these are too many, we may have to suppress some - rawIso = Var( "tauID('byCombinedIsolationDeltaBetaCorrRaw3Hits')", float, doc = "combined isolation (deltaBeta corrections)", precision=10), - rawIsodR03 = Var( "(tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum')))", float, doc = "combined isolation (deltaBeta corrections, dR=0.3)", precision=10), - chargedIso = Var( "tauID('chargedIsoPtSum')", float, doc = "charged isolation", precision=10), - neutralIso = Var( "tauID('neutralIsoPtSum')", float, doc = "neutral (photon) isolation", precision=10), - puCorr = Var( "tauID('puCorrPtSum')", float, doc = "pileup correction", precision=10), - photonsOutsideSignalCone = Var( "tauID('photonPtSumOutsideSignalCone')", float, doc = "sum of photons outside signal cone", precision=10), - - idAntiMu = _tauIdWPMask("againstMuon%s3", choices=("Loose","Tight"), doc= "Anti-muon discriminator V3: "), - idAntiEleDeadECal = Var("tauID('againstElectronDeadECAL')", bool, doc = "Anti-electron dead-ECal discriminator"), - -# isoCI3hit = Var( "tauID("byCombinedIsolationDeltaBetaCorrRaw3Hits")" doc="byCombinedIsolationDeltaBetaCorrRaw3Hits raw output discriminator"), -# photonOutsideSigCone = Var( "tauID("photonPtSumOutsideSignalCone")" doc="photonPtSumOutsideSignalCone raw output discriminator"), - -) - -_mvaIsoVars2015 = cms.PSet( - rawMVAnewDM = Var( "tauID('byIsolationMVArun2v1DBnewDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - rawMVAoldDMdR03 = Var( "tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - idMVAnewDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBnewDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBnewDMwLT ID working point (2015)"), - idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)"), - idMVAoldDMdR03 = _tauIdWPMask( "by%sIsolationMVArun2v1DBdR03oldDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2015)") -) -_mvaIsoVars2015Reduced = cms.PSet( - rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2015')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2015", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)"), -) -_mvaIsoVars2017v1 = cms.PSet( - rawMVAoldDM2017v1 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10), - idMVAoldDM2017v1 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)") -) -_mvaIsoVars2017v2 = cms.PSet( - rawMVAnewDM2017v2 = Var( "tauID('byIsolationMVArun2v1DBnewDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBnewDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAoldDM2017v2 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAoldDMdR032017v2 = Var( "tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBdR03oldDMwLT raw output discriminator (2017v2)",precision=10), - idMVAnewDM2017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBnewDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v2)"), - idMVAoldDMdR032017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBdR03oldDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2017v2)") -) -_mvaAntiEVars2015 = cms.PSet( - rawAntiEle = Var("tauID('againstElectronMVA6Raw')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2015)", precision=10), - rawAntiEleCat = Var("tauID('againstElectronMVA6category')", int, doc="Anti-electron MVA discriminator V6 category (2015"), - idAntiEle = _tauIdWPMask("againstElectron%sMVA6", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2015)"), -) -_deepTauVars2017v2p1 = cms.PSet( - rawDeepTau2017v2p1VSe = Var("tauID('byDeepTau2017v2p1VSeraw')", float, doc="byDeepTau2017v2p1VSe raw output discriminator (deepTau2017v2p1)", precision=10), - rawDeepTau2017v2p1VSmu = Var("tauID('byDeepTau2017v2p1VSmuraw')", float, doc="byDeepTau2017v2p1VSmu raw output discriminator (deepTau2017v2p1)", precision=10), - rawDeepTau2017v2p1VSjet = Var("tauID('byDeepTau2017v2p1VSjetraw')", float, doc="byDeepTau2017v2p1VSjet raw output discriminator (deepTau2017v2p1)", precision=10), - idDeepTau2017v2p1VSe = _tauIdWPMask("by%sDeepTau2017v2p1VSe", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2017v2p1VSe ID working points (deepTau2017v2p1)"), - idDeepTau2017v2p1VSmu = _tauIdWPMask("by%sDeepTau2017v2p1VSmu", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2017v2p1VSmu ID working points (deepTau2017v2p1)"), - idDeepTau2017v2p1VSjet = _tauIdWPMask("by%sDeepTau2017v2p1VSjet", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2017v2p1VSjet ID working points (deepTau2017v2p1)"), -) -_deepTauVars2018v2p5 = cms.PSet( - rawDeepTau2018v2p5VSe = Var("tauID('byDeepTau2018v2p5VSeraw')", float, doc="byDeepTau2018v2p5VSe raw output discriminator (deepTau2018v2p5)", precision=10), - rawDeepTau2018v2p5VSmu = Var("tauID('byDeepTau2018v2p5VSmuraw')", float, doc="byDeepTau2018v2p5VSmu raw output discriminator (deepTau2018v2p5)", precision=10), - rawDeepTau2018v2p5VSjet = Var("tauID('byDeepTau2018v2p5VSjetraw')", float, doc="byDeepTau2018v2p5VSjet raw output discriminator (deepTau2018v2p5)", precision=10), - idDeepTau2018v2p5VSe = _tauIdWPMask("by%sDeepTau2018v2p5VSe", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSe ID working points (deepTau2018v2p5)"), - idDeepTau2018v2p5VSmu = _tauIdWPMask("by%sDeepTau2018v2p5VSmu", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2018v2p5VSmu ID working points (deepTau2018v2p5)"), - idDeepTau2018v2p5VSjet = _tauIdWPMask("by%sDeepTau2018v2p5VSjet", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSjet ID working points (deepTau2018v2p5)"), -) - -_variablesMiniV2 = cms.PSet( - _tauVarsBase, - _deepTauVars2017v2p1, - _deepTauVars2018v2p5 -) -_variablesMiniV1 = cms.PSet( - _variablesMiniV2, - _mvaIsoVars2017v2 -) -_variablesMiniV1.rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10) -_variablesMiniV1.rawMVAoldDM2017v1 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v1')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10) -_variablesMiniV1.idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", - choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)") -_variablesMiniV1.idMVAoldDM2017v1 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2017v1", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)") -_variables80X = cms.PSet( - _tauVarsBase, - _mvaAntiEVars2015, - _mvaIsoVars2015 -) - -tauTable.variables = _variablesMiniV2 - -(run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(tauTable, - variables = cms.PSet(tauTable.variables, _mvaIsoVars2015Reduced, _mvaIsoVars2017v1, _mvaIsoVars2017v2) - ) - -(run2_nanoAOD_94XMiniAODv1).toModify(tauTable, - variables = _variablesMiniV1 - ) - -run2_miniAOD_80XLegacy.toModify(tauTable, - variables = _variables80X -) - -(run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(tauTable.variables, - rawAntiEle2018 = Var("tauID('againstElectronMVA6Raw2018')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10), - rawAntiEleCat2018 = Var("tauID('againstElectronMVA6category2018')", int, doc="Anti-electron MVA discriminator V6 category (2018)"), - idAntiEle2018 = _tauIdWPMask("againstElectron%sMVA62018", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2018)"), - rawAntiEle = Var("tauID('againstElectronMVA6Raw')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2015)", precision=10), - rawAntiEleCat = Var("tauID('againstElectronMVA6category')", int, doc="Anti-electron MVA discriminator V6 category (2015"), - idAntiEle = _tauIdWPMask("againstElectron%sMVA6", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2015)") - ) - - -(run2_miniAOD_80XLegacy | run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(tauTable.variables, - idDecayMode = Var("tauID('decayModeFinding')", bool), - idDecayModeNewDMs = Var("tauID('decayModeFindingNewDMs')", bool), - idDecayModeOldDMs = None - ) -run2_miniAOD_80XLegacy.toModify(tauTable.variables, - idAntiEleDeadECal = None) - -(run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify( - tauTable.variables, - idAntiEleDeadECal = Var("tauID('againstElectronDeadECALForNano')", bool, doc = "Anti-electron dead-ECal discriminator"), - rawDeepTau2018v2p5VSe = None, - rawDeepTau2018v2p5VSmu = None, - rawDeepTau2018v2p5VSjet = None, - idDeepTau2018v2p5VSe = None, - idDeepTau2018v2p5VSmu = None, - idDeepTau2018v2p5VSjet = None -) - -run3_nanoAOD_124.toModify( - tauTable.variables, - idDeepTau2018v2p5VSe = _tauIdWPMask("byDeepTau2018v2p5VSeraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSe ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["e"]), - idDeepTau2018v2p5VSmu = _tauIdWPMask("byDeepTau2018v2p5VSmuraw", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2018v2p5VSmu ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["mu"]), - idDeepTau2018v2p5VSjet = _tauIdWPMask("byDeepTau2018v2p5VSjetraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSjet ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["jet"]) -) - - -tauGenJetsForNano = tauGenJets.clone( - GenParticles = "finalGenParticles", - includeNeutrinos = False -) - -tauGenJetsSelectorAllHadronsForNano = tauGenJetsSelectorAllHadrons.clone( - src = "tauGenJetsForNano" -) - -genVisTaus = cms.EDProducer("GenVisTauProducer", - src = cms.InputTag("tauGenJetsSelectorAllHadronsForNano"), - srcGenParticles = cms.InputTag("finalGenParticles") -) - -genVisTauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("genVisTaus"), - cut = cms.string("pt > 10."), - name = cms.string("GenVisTau"), - doc = cms.string("gen hadronic taus "), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for generator level hadronic tau decays - variables = cms.PSet( - pt = Var("pt", float,precision=8), - phi = Var("phi", float,precision=8), - eta = Var("eta", float,precision=8), - mass = Var("mass", float,precision=8), - charge = Var("charge", int), - status = Var("status", int, doc="Hadronic tau decay mode. 0=OneProng0PiZero, 1=OneProng1PiZero, 2=OneProng2PiZero, 10=ThreeProng0PiZero, 11=ThreeProng1PiZero, 15=Other"), - genPartIdxMother = Var("?numberOfMothers>0?motherRef(0).key():-1", int, doc="index of the mother particle"), - ) -) - -tausMCMatchLepTauForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = tauTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,13), # one or more PDG ID (11 = electron, 13 = muon); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -tausMCMatchHadTauForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = tauTable.src, # final reco collection - matched = cms.InputTag("genVisTaus"), # generator level hadronic tau decays - mcPdgId = cms.vint32(15), # one or more PDG ID (15 = tau); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), # CV: no *not* require certain status code for matching (status code corresponds to decay mode for hadronic tau decays) - maxDeltaR = cms.double(0.3), # Maximum deltaR for the match - maxDPtRel = cms.double(1.), # Maximum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -tauMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = tauTable.src, - mcMap = cms.InputTag("tausMCMatchLepTauForTable"), - mcMapVisTau = cms.InputTag("tausMCMatchHadTauForTable"), - objName = tauTable.name, - objType = tauTable.name, #cms.string("Tau"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==2 taus"), -) - - -tauTask = cms.Task(finalTaus) - -for era in [run2_nanoAOD_92X, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2, \ - run2_nanoAOD_94X2016, run2_nanoAOD_102Xv1, run2_nanoAOD_106Xv1]: - era.toReplaceWith(tauTask, cms.Task(patTauMVAIDsTask,finalTaus)) - -tauTablesTask = cms.Task(tauTable) - -genTauTask = cms.Task(tauGenJetsForNano,tauGenJetsSelectorAllHadronsForNano,genVisTaus,genVisTauTable) -tauMCTask = cms.Task(genTauTask,tausMCMatchLepTauForTable,tausMCMatchHadTauForTable,tauMCTable) - diff --git a/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py b/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py deleted file mode 100644 index 8601bec102681..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py +++ /dev/null @@ -1,441 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -##################### Updated tau collection with MVA-based tau-Ids rerun ####### -# Used only in some eras -from RecoTauTag.Configuration.loadRecoTauTagMVAsFromPrepDB_cfi import * -from RecoTauTag.RecoTau.PATTauDiscriminationByMVAIsolationRun2_cff import * -from RecoTauTag.RecoTau.TauDiscriminatorTools import noPrediscriminants - -from PhysicsTools.NanoAOD.nano_eras_cff import * - -### MVAIso 2017v2 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw = patDiscriminationByIsolationMVArun2v1raw.clone( - PATTauProducer = cms.InputTag('slimmedTaus'), - Prediscriminants = noPrediscriminants, - loadMVAfromDB = cms.bool(True), - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ"), # option you want to use for your training (i.e., which variables are used to compute the BDT score) - verbosity = cms.int32(0) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT = patDiscriminationByIsolationMVArun2v1.clone( - PATTauProducer = cms.InputTag('slimmedTaus'), - Prediscriminants = noPrediscriminants, - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw'), - loadMVAfromDB = cms.bool(True), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_VVLoose", - "_VLoose", - "_Loose", - "_Medium", - "_Tight", - "_VTight", - "_VVTight" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT -) -## DBnewDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT"), # name of the training you want to use - mvaOpt = cms.string("DBnewDMwLTwGJ") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ) -) -# MVAIso DBnewDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw, - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT -) -## DBoldDMdR0p3 -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ"), # option you want to use for your training (i.e., which variables are used to compute the BDT score) - srcChargedIsoPtSum = cms.string('chargedIsoPtSumdR03'), - srcFootprintCorrection = cms.string('footprintCorrectiondR03'), - srcNeutralIsoPtSum = cms.string('neutralIsoPtSumdR03'), - srcPUcorrPtSum = cms.string('puCorrPtSum'), - srcPhotonPtSumOutsideSignalCone = cms.string('photonPtSumOutsideSignalConedR03') -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ) -) -# MVAIso DBoldDMdR0p3 Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw, - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT -) -### MVAIso 2017v1 for Nano on top of MiniAODv1 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_WPEff95", - "_WPEff90", - "_WPEff80", - "_WPEff70", - "_WPEff60", - "_WPEff50", - "_WPEff40" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1Task = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1 -) -### MVAIso 2015 for Nano on top of MiniAODv2 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLT") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_WPEff90", - "_WPEff80", - "_WPEff70", - "_WPEff60", - "_WPEff50", - "_WPEff40" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015Task = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015 -) - - -### Define new anit-e discriminants (2018) -antiElectronDiscrMVA6_version = "MVA" -## Raw -from RecoTauTag.RecoTau.patTauDiscriminationAgainstElectronMVA6_cfi import patTauDiscriminationAgainstElectronMVA6 -patTauDiscriminationByElectronRejectionMVA62018Raw = patTauDiscriminationAgainstElectronMVA6.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants, #already selected for MiniAOD - srcElectrons = 'slimmedElectrons', - vetoEcalCracks = False, #keep tau candidates in EB-EE cracks - mvaName_NoEleMatch_wGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_BL', - mvaName_NoEleMatch_wGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_EC', - mvaName_NoEleMatch_woGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_BL', - mvaName_NoEleMatch_woGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_EC', - mvaName_wGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_BL', - mvaName_wGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_EC', - mvaName_woGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_BL', - mvaName_woGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_EC' -) -## anti-e 2018 WPs -from RecoTauTag.RecoTau.PATTauDiscriminantCutMultiplexer_cfi import patTauDiscriminantCutMultiplexer -# VLoose -patTauDiscriminationByElectronRejectionMVA62018 = patTauDiscriminantCutMultiplexer.clone( - PATTauProducer = patTauDiscriminationByElectronRejectionMVA62018Raw.PATTauProducer, - Prediscriminants = patTauDiscriminationByElectronRejectionMVA62018Raw.Prediscriminants, - toMultiplex = cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw"), - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(2), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(5), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(7), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(8), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(10), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(13), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(15), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_EC'), - variable = cms.string('pt') - ) - ), - rawValues = cms.vstring( - "discriminator", - "category" - ), - workingPoints = cms.vstring( - "_VLoose", - "_Loose", - "_Medium", - "_Tight", - "_VTight" - ) -) -### Define v1 anit-e discriminants (2015) -antiElectronDiscrMVA6v1_version = "MVA6v1" -## Raw -patTauDiscriminationByElectronRejectionMVA62015Raw = patTauDiscriminationAgainstElectronMVA6.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants, #already selected for MiniAOD - srcElectrons = 'slimmedElectrons', - vetoEcalCracks = True, #don't keep tau candidates in EB-EE cracks for v1 - mvaName_NoEleMatch_wGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_wGwoGSF_BL', - mvaName_NoEleMatch_wGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_wGwoGSF_EC', - mvaName_NoEleMatch_woGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_woGwoGSF_BL', - mvaName_NoEleMatch_woGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_woGwoGSF_EC', - mvaName_wGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_wGwGSF_BL', - mvaName_wGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_wGwGSF_EC', - mvaName_woGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_woGwGSF_BL', - mvaName_woGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_woGwGSF_EC' -) -## anti-e v1 WPs -patTauDiscriminationByElectronRejectionMVA62015 = patTauDiscriminationByElectronRejectionMVA62018.clone( - PATTauProducer = patTauDiscriminationByElectronRejectionMVA62015Raw.PATTauProducer, - Prediscriminants = patTauDiscriminationByElectronRejectionMVA62015Raw.Prediscriminants, - toMultiplex = cms.InputTag("patTauDiscriminationByElectronRejectionMVA62015Raw"), - rawValues = cms.vstring( - "discriminator", - "category" - ), - workingPoints = cms.vstring( - "_WPEff99", - "_WPEff96", - "_WPEff91", - "_WPEff85", - "_WPEff79" - ) -) -for m in patTauDiscriminationByElectronRejectionMVA62015.mapping: - m.cut = m.cut.value().replace(antiElectronDiscrMVA6_version, antiElectronDiscrMVA6v1_version + "_gbr") -### Put all anti-e tau-IDs into a sequence -_patTauDiscriminationByElectronRejection2018Task = cms.Task( - patTauDiscriminationByElectronRejectionMVA62018Raw, - patTauDiscriminationByElectronRejectionMVA62018 -) -_patTauDiscriminationByElectronRejection2015Task = cms.Task( - patTauDiscriminationByElectronRejectionMVA62015Raw, - patTauDiscriminationByElectronRejectionMVA62015 -) -patTauDiscriminationByElectronRejectionTask = _patTauDiscriminationByElectronRejection2015Task.copy() -for era in [run2_nanoAOD_92X,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,\ - run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1]: - era.toReplaceWith(patTauDiscriminationByElectronRejectionTask, - _patTauDiscriminationByElectronRejection2018Task) - - -### put all new MVA tau-Id stuff to one Sequence -_patTauMVAIDsTask2017v2 = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask, - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask, - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTTask, - patTauDiscriminationByElectronRejectionTask -) -patTauMVAIDsTask = _patTauMVAIDsTask2017v2.copy() -patTauMVAIDsTask.add(patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015Task) - -_patTauMVAIDsTaskWith2017v1 = _patTauMVAIDsTask2017v2.copy() -_patTauMVAIDsTaskWith2017v1.add(patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1Task) -for era in [run2_nanoAOD_94XMiniAODv1,]: - era.toReplaceWith(patTauMVAIDsTask,_patTauMVAIDsTaskWith2017v1) - -# embed new MVA tau-Ids into new tau collection -def tauIDMVAinputs(module, wp): - return cms.PSet(inputTag = cms.InputTag(module), workingPointIndex = cms.int32(-1 if wp=="raw" else -2 if wp=="category" else globals()[module].workingPoints.index(wp))) -slimmedTausUpdated = cms.EDProducer("PATTauIDEmbedder", - src = cms.InputTag('slimmedTaus'), - tauIDSources = cms.PSet() # PSet defined below in era dependent way -) -_tauIDSources2017v2 = cms.PSet( - #oldDM - byIsolationMVArun2v1DBoldDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "raw"), - byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VLoose"), - byLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Loose"), - byMediumIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Medium"), - byTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Tight"), - byVTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VTight"), - byVVTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VVTight"), - #newDM - byIsolationMVArun2v1DBnewDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "raw"), - byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VLoose"), - byLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Loose"), - byMediumIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Medium"), - byTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Tight"), - byVTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VTight"), - byVVTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VVTight"), - #oldDMdR0p3 - byIsolationMVArun2v1DBdR03oldDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "raw"), - byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VLoose"), - byLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Loose"), - byMediumIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Medium"), - byTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Tight"), - byVTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VTight"), - byVVTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VVTight") -) -_tauIDSources2017v1 = cms.PSet( - byIsolationMVArun2v1DBoldDMwLTraw2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "raw"), - byVVLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff95"), - byVLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff90"), - byLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff80"), - byMediumIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff70"), - byTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff60"), - byVTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff50"), - byVVTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff40") -) -_tauIDSourcesWith2017v1 = cms.PSet( - _tauIDSources2017v2.clone(), - _tauIDSources2017v1 -) -_tauIDSources2015 = cms.PSet( - byIsolationMVArun2v1DBoldDMwLTraw2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "raw"), - byVLooseIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff90"), - byLooseIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff80"), - byMediumIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff70"), - byTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff60"), - byVTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff50"), - byVVTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff40") -) -_tauIDSourcesWith2015 = cms.PSet( - _tauIDSources2017v2.clone(), - _tauIDSources2015 -) -slimmedTausUpdated.tauIDSources=_tauIDSourcesWith2015 - -for era in [run2_nanoAOD_94XMiniAODv1,]: - era.toModify(slimmedTausUpdated, - tauIDSources = _tauIDSourcesWith2017v1 - ) - -_antiETauIDSources2018 = cms.PSet( - againstElectronMVA6Raw2018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "raw"), - againstElectronMVA6category2018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "category"), - againstElectronVLooseMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_VLoose"), - againstElectronLooseMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Loose"), - againstElectronMediumMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Medium"), - againstElectronTightMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Tight"), - againstElectronVTightMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_VTight") -) -_tauIDSourcesWithAntiE2018 = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - _antiETauIDSources2018 -) -_antiETauIDSources2015 = cms.PSet( - againstElectronMVA6Raw2015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "raw"), - againstElectronMVA6category2015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "category"), - againstElectronVLooseMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff99"), - againstElectronLooseMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff96"), - againstElectronMediumMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff91"), - againstElectronTightMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff85"), - againstElectronVTightMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff79") -) -_tauIDSourcesWithAntiE2015 = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - _antiETauIDSources2015 -) -slimmedTausUpdated.tauIDSources=_tauIDSourcesWithAntiE2015 -for era in [run2_nanoAOD_92X,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,\ - run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1]: - era.toModify(slimmedTausUpdated, - tauIDSources = _tauIDSourcesWithAntiE2018 - ) - -## anti-electron in dead-ECal regions -from RecoTauTag.RecoTau.patTauDiscriminationAgainstElectronDeadECAL_cfi import patTauDiscriminationAgainstElectronDeadECAL -patTauDiscriminationAgainstElectronDeadECALForNano = patTauDiscriminationAgainstElectronDeadECAL.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants -) -_patTauMVAIDsTaskWithAntiEdeadECal = patTauMVAIDsTask.copy() -_patTauMVAIDsTaskWithAntiEdeadECal.add(patTauDiscriminationAgainstElectronDeadECALForNano) -_tauIDSourcesWithAntiEdeadECal = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - againstElectronDeadECALForNano = cms.PSet( - inputTag = cms.InputTag("patTauDiscriminationAgainstElectronDeadECALForNano"), - workingPointIndex = cms.int32(-99) - ) -) - -_modifers = (run2_miniAOD_80XLegacy | run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_94X2016 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1) -_modifers.toReplaceWith(patTauMVAIDsTask,_patTauMVAIDsTaskWithAntiEdeadECal) -_modifers.toModify(slimmedTausUpdated, - tauIDSources = _tauIDSourcesWithAntiEdeadECal - ) - -patTauMVAIDsTask.add(slimmedTausUpdated) - diff --git a/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py b/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py deleted file mode 100644 index 4e7c16cc8476b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py +++ /dev/null @@ -1,320 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar -import copy - -unpackedPatTrigger = cms.EDProducer("PATTriggerObjectStandAloneUnpacker", - patTriggerObjectsStandAlone = cms.InputTag('slimmedPatTrigger'), - triggerResults = cms.InputTag('TriggerResults::HLT'), - unpackFilterLabels = cms.bool(True) -) -# ERA-dependent configuration -run2_miniAOD_80XLegacy.toModify( - unpackedPatTrigger, - patTriggerObjectsStandAlone = "selectedPatTrigger", - unpackFilterLabels = False -) - -triggerObjectTable = cms.EDProducer("TriggerObjectTableProducer", - name= cms.string("TrigObj"), - src = cms.InputTag("unpackedPatTrigger"), - l1EG = cms.InputTag("caloStage2Digis","EGamma"), - l1Sum = cms.InputTag("caloStage2Digis","EtSum"), - l1Jet = cms.InputTag("caloStage2Digis","Jet"), - l1Muon = cms.InputTag("gmtStage2Digis","Muon"), - l1Tau = cms.InputTag("caloStage2Digis","Tau"), - selections = cms.VPSet( - cms.PSet( - name = cms.string("Electron (PixelMatched e/gamma)"), # this selects also photons for the moment! - id = cms.int32(11), - sel = cms.string("type(92) && pt > 7 && coll('hltEgammaCandidates') && filter('*PixelMatchFilter')"), - l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), - #l2seed = cms.string("type(92) && coll('')"), l2deltaR = cms.double(0.5), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('*CaloIdLTrackIdLIsoVL*TrackIso*Filter') + " \ - "2*filter('hltEle*WPTight*TrackIsoFilter*') + " \ - "4*filter('hltEle*WPLoose*TrackIsoFilter') + " \ - "8*filter('*OverlapFilter*IsoEle*PFTau*') + " \ - "16*filter('hltEle*Ele*CaloIdLTrackIdLIsoVL*Filter') + " \ - "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \ - "64*filter('hlt*OverlapFilterIsoEle*PFTau*') + " \ - "128*filter('hltEle*Ele*Ele*CaloIdLTrackIdLDphiLeg*Filter') + " \ - "256*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "512*max(filter('hltL3fL1DoubleMu*EG*Filter*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "1024*min(filter('hltEle32L1DoubleEGWPTightGsfTrackIsoFilter'),filter('hltEGL1SingleEGOrFilter')) + " \ - "2048*filter('hltEle*CaloIdVTGsfTrkIdTGsfDphiFilter') + " \ - "4096*path('HLT_Ele*PFJet*') + " \ - "8192*max(filter('hltEG175HEFilter'),filter('hltEG200HEFilter'))"), - qualityBitsDoc = cms.string("1 = CaloIdL_TrackIdL_IsoVL, 2 = 1e (WPTight), 4 = 1e (WPLoose), 8 = OverlapFilter PFTau, 16 = 2e, 32 = 1e-1mu, 64 = 1e-1tau, 128 = 3e, 256 = 2e-1mu, 512 = 1e-2mu, 1024 = 1e (32_L1DoubleEG_AND_L1SingleEGOr), 2048 = 1e (CaloIdVT_GsfTrkIdT), 4096 = 1e (PFJet), 8192 = 1e (Photon175_OR_Photon200)"), - ), - cms.PSet( - name = cms.string("Photon"), - id = cms.int32(22), - sel = cms.string("type(92) && pt > 20 && coll('hltEgammaCandidates')"), - l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), - #l2seed = cms.string("type(92) && coll('')"), l2deltaR = cms.double(0.5), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('hltEG33L1EG26HEFilter') + " \ - "2*filter('hltEG50HEFilter') + " \ - "4*filter('hltEG75HEFilter') + " \ - "8*filter('hltEG90HEFilter') + " \ - "16*filter('hltEG120HEFilter') + " \ - "32*filter('hltEG150HEFilter') + " \ - "64*filter('hltEG175HEFilter') + " \ - "128*filter('hltEG200HEFilter') + " \ - "256*filter('hltHtEcal800') + " \ - "512*filter('hltEG110EBTightIDTightIsoTrackIsoFilter') + " \ - "1024*filter('hltEG120EBTightIDTightIsoTrackIsoFilter')"), - qualityBitsDoc = cms.string("Single Photon filters: 1 = hltEG33L1EG26HEFilter, 2 = hltEG50HEFilter, 4 = hltEG75HEFilter, 8 = hltEG90HEFilter, 16 = hltEG120HEFilter, 32 = hltEG150HEFilter, 64 = hltEG175HEFilter, 128 = hltEG200HEFilter, 256 = hltHtEcal800, 512 = hltEG110EBTightIDTightIsoTrackIsoFilter, 1024 = hltEG120EBTightIDTightIsoTrackIsoFilter"), - ), - cms.PSet( - name = cms.string("Muon"), - id = cms.int32(13), - sel = cms.string("type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"), - l1seed = cms.string("type(-81)"), l1deltaR = cms.double(0.5), - l2seed = cms.string("type(83) && coll('hltL2MuonCandidates')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('*RelTrkIsoVVLFiltered0p4') + " \ - "2*max(filter('hltL3crIso*Filtered0p07'),filter('hltL3crIso*Filtered0p08')) + " \ - "4*filter('*OverlapFilterIsoMu*PFTau*') + " \ - "8*max(max(filter('hltL3crIsoL1*SingleMu*Filtered0p07'),filter('hltL3crIsoL1sMu*Filtered0p07')),max(filter('hltL3crIsoL1*SingleMu*Filtered0p08'),filter('hltL3crIsoL1sMu*Filtered0p08'))) + " \ - "16*filter('hltDiMuon*Filtered*') + " \ - "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \ - "64*filter('hlt*OverlapFilterIsoMu*PFTau*') + " \ - "128*filter('hltL3fL1TripleMu*') + " \ - "256*max(filter('hltL3fL1DoubleMu*EG*Filtered*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "512*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*')) + " \ - "2048*max(filter('hltL3fL1sMu*L3Filtered100*'),filter('hltL3fL1sMu*TkFiltered100*'))"), - qualityBitsDoc = cms.string("1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = 1mu, 16 = 2mu, 32 = 1mu-1e, 64 = 1mu-1tau, 128 = 3mu, 256 = 2mu-1e, 512 = 1mu-2e, 1024 = 1mu (Mu50), 2048 = 1mu (Mu100)"), - ), - cms.PSet( - name = cms.string("Tau"), - id = cms.int32(15), - sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseChargedIso*') || filter('*MediumChargedIso*') || filter('*DeepTau*') || filter('*TightChargedIso*') || filter('*TightOOSCPhotons*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilterIsoMu*') || filter('*OverlapFilterIsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') || filter('*DoublePFTau*') || filter('*SinglePFTau*') || filter('hlt*SelectedPFTau') || filter('*DisplPFTau*') )"), #All trigger objects from a Tau collection + passing at least one filter - l1seed = cms.string("type(-100)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(84) && coll('hltL2TauJetsL1IsoTauSeeded')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('*LooseChargedIso*') + " \ - "2*filter('*MediumChargedIso*') + " \ - "4*filter('*TightChargedIso*') + " \ - "8*filter('*DeepTau*') + " \ - "16*filter('*TightOOSCPhotons*') + " \ - "32*filter('*Hps*') + " \ - "64*filter('hlt*DoublePFTau*TrackPt1*ChargedIsolation*Dz02*') + " \ - "128*filter('hlt*DoublePFTau*DeepTau*L1HLTMatched') + " \ - "256*filter('hlt*OverlapFilterIsoEle*WPTightGsf*PFTau*') + " \ - "512*filter('hlt*OverlapFilterIsoMu*PFTau*') + " \ - "1024*filter('hlt*SelectedPFTau*L1HLTMatched') + " \ - "2048*filter('hlt*DoublePFTau*TrackPt1*ChargedIso*') + " \ - "4096*filter('hlt*DoublePFTau*Track*ChargedIso*AgainstMuon') + " \ - "8192*filter('hltHpsSinglePFTau*HLTMatched') + " \ - "16384*filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*') + " \ - "32768*filter('hlt*Double*ChargedIsoDisplPFTau*Dxy*') + " \ - "65536*filter('*Monitoring') + " \ - "131072*filter('*Reg') + " \ - "262144*filter('*L1Seeded') + " \ - "524288*filter('*1Prong')"), - qualityBitsDoc = cms.string("1 = LooseChargedIso, 2 = MediumChargedIso, 4 = TightChargedIso, 8 = DeepTau, 16 = TightID OOSC photons, 32 = HPS, 64 = charged iso di-tau, 128 = deeptau di-tau, 256 = e-tau, 512 = mu-tau, 1024 = single-tau/tau+MET, 2048 = run 2 VBF+ditau, 4096 = run 3 VBF+ditau, 8192 = run 3 double PF jets + ditau, 16384 = di-tau + PFJet, 32768 = Displaced Tau, 65536 = Monitoring, 131072 = regional paths, 262144 = L1 seeded paths, 524288 = 1 prong tau paths"), - ), - cms.PSet( - name = cms.string("BoostedTau"), - id = cms.int32(1515), - sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected') && filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) && coll('hltAK8CaloJetsCorrectedIDPassed')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')" - ), - qualityBitsDoc = cms.string("Bit 0 for HLT_AK8PFJetX_SoftDropMass40_PFAK8ParticleNetTauTau0p30"), - ), - cms.PSet( - name = cms.string("Jet"), - id = cms.int32(1), - sel = cms.string("( type(0) || type(85) || type(86) || type(-99) )"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) || type(86) || type(-99)"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * filter('*CrossCleaned*LooseChargedIsoPFTau*') + " \ - "2 * filter('hltBTagCaloCSVp087Triple') + " \ - "4 * filter('hltDoubleCentralJet90') + " \ - "8 * filter('hltDoublePFCentralJetLooseID90') + " \ - "16 * filter('hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet') + " \ - "32 * filter('hltQuadCentralJet30') + " \ - "64 * filter('hltQuadPFCentralJetLooseID30') + " \ - "128 * max(filter('hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF'), filter('hltL1sQuadJetCIorTripleJetVBFIorHTT')) + " \ - "256 * filter('hltQuadCentralJet45') + " \ - "512 * filter('hltQuadPFCentralJetLooseID45') + " \ - "1024 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet')) + " \ - "2048 * max(filter('hltBTagCaloCSVp05Double'), filter('hltBTagCaloDeepCSVp17Double')) + " \ - "4096 * filter('hltPFCentralJetLooseIDQuad30') + " \ - "8192 * filter('hlt1PFCentralJetLooseID75') + " \ - "16384 * filter('hlt2PFCentralJetLooseID60') + " \ - "32768 * filter('hlt3PFCentralJetLooseID45') + " \ - "65536 * filter('hlt4PFCentralJetLooseID40') + " \ - "131072 * max(filter('hltBTagPFCSVp070Triple'), max(filter('hltBTagPFDeepCSVp24Triple'), filter('hltBTagPFDeepCSV4p5Triple')) )+ " \ - "262144 * filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*') + " \ - "524288 * filter('*CrossCleaned*MediumDeepTauDitauWPPFTau*') + " \ - "1048576 * filter('*CrossCleanedUsingDiJetCorrChecker*') + " \ - "2097152 * filter('hltHpsOverlapFilterDeepTauPFTau*PFJet*')" - ), - qualityBitsDoc = cms.string( - "Jet bits: bit 0 for VBF cross-cleaned from loose iso PFTau, bit 1 for hltBTagCaloCSVp087Triple, bit 2 for hltDoubleCentralJet90, bit 3 for hltDoublePFCentralJetLooseID90," \ - " bit 4 for hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, bit 5 for hltQuadCentralJet30, bit 6 for hltQuadPFCentralJetLooseID30," \ - " bit 7 for hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT," \ - " bit 8 for hltQuadCentralJet45, bit 9 for hltQuadPFCentralJetLooseID45," \ - " bit 10 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet" \ - " bit 11 for hltBTagCaloCSVp05Double or hltBTagCaloDeepCSVp17Double, bit 12 for hltPFCentralJetLooseIDQuad30, bit 13 for hlt1PFCentralJetLooseID75," \ - " bit 14 for hlt2PFCentralJetLooseID60, bit 15 for hlt3PFCentralJetLooseID45, bit 16 for hlt4PFCentralJetLooseID40," \ - " bit 17 for hltBTagPFCSVp070Triple or hltBTagPFDeepCSVp24Triple or hltBTagPFDeepCSV4p5Triple,"\ - " bit 18 for Double tau + jet,"\ - " bit 19 for VBF cross-cleaned from medium deeptau PFTau,"\ - " bit 20 for VBF cross-cleaned using dijet correlation checker,"\ - " bit 21 for monitoring muon + tau + jet") - ), - cms.PSet( - name = cms.string("FatJet"), - id = cms.int32(6), - sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected')"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) && coll('hltAK8CaloJetsCorrectedIDPassed')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string("0"), qualityBitsDoc = cms.string(""), - ), - cms.PSet( - name = cms.string("MET"), - id = cms.int32(2), - sel = cms.string("type(87) && pt > 30 && coll('hltPFMETProducer')"), - l1seed = cms.string("type(-87) && coll('L1ETM')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-87) && coll('L1ETMHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type( 87) && coll('hltMetClean')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string("0"), qualityBitsDoc = cms.string(""), - ), - cms.PSet( - name = cms.string("HT"), - id = cms.int32(3), - sel = cms.string("type(89) || type(-89)"), - l1seed = cms.string("type(-89) && coll('L1HTT')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-89) && coll('L1HTTHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type(89) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * filter('hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet') + " \ - "2 * max(filter('hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF'), filter('hltL1sQuadJetCIorTripleJetVBFIorHTT')) + " \ - "4 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet')) + " \ - "8 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \ - "16 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))" - ), - qualityBitsDoc = cms.string( - "HT bits: bit 0 for hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, bit 1 for hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT, " \ - "bit 2 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet, " \ - "bit 3 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 4 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330" - ), - ), - cms.PSet( - name = cms.string("MHT"), - id = cms.int32(4), - sel = cms.string("type(90)"), - l1seed = cms.string("type(-90) && coll('L1HTM')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-90) && coll('L1HTMHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type(90) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \ - "2 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))" - ), - qualityBitsDoc = cms.string - ( - "MHT bits: bit 0 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 1 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330" - ), - ), - - ), -) - -# ERA-dependent configuration -# Tune filter and collection names to 2016 HLT menus -# FIXME: check non-lepton objects and cross check leptons -selections2016 = copy.deepcopy(triggerObjectTable.selections) -for sel in selections2016: - if sel.name=='Muon': - sel.sel = cms.string("type(83) && pt > 5 && (coll('hlt*L3MuonCandidates') || coll('hlt*TkMuonCands') || coll('hlt*TrkMuonCands'))") - sel.qualityBits = cms.string("filter('*RelTrkIso*Filtered0p4') + 2*filter('hltL3cr*IsoFiltered0p09') + 4*filter('*OverlapFilter*IsoMu*PFTau*') + 8*filter('hltL3f*IsoFiltered0p09') + 1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*'))") - sel.qualityBitsDoc = cms.string("1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = IsoTkMu, 1024 = 1mu (Mu50)") - elif sel.name=='Tau': - sel.sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseIso*') || filter('*MediumIso*') || filter('*MediumComb*Iso*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilter*IsoMu*') || filter('*OverlapFilter*IsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )") - sel.qualityBits = cms.string("(filter('*LooseIso*')-filter('*VLooseIso*'))+2*filter('*Medium*Iso*')+4*filter('*VLooseIso*')+8*0+16*filter('hltL2TauIsoFilter')+32*filter('*OverlapFilter*IsoMu*')+64*filter('*OverlapFilter*IsoEle*')+128*filter('*L1HLTMatched*')+256*filter('*Dz02*')") - sel.qualityBitsDoc = cms.string("1 = LooseIso, 2 = Medium(Comb)Iso, 4 = VLooseIso, 8 = None, 16 = L2p5 pixel iso, 32 = OverlapFilter IsoMu, 64 = OverlapFilter IsoEle, 128 = L1-HLT matched, 256 = Dz") - -run2_HLTconditions_2016.toModify( - triggerObjectTable, - selections = selections2016 -) - -prefiringweight = cms.EDProducer('L1PrefiringWeightProducer', - TheMuons = cms.InputTag('slimmedMuons'), - ThePhotons = cms.InputTag('slimmedPhotons'), - TheJets = cms.InputTag('slimmedJets'), - L1Maps = cms.string('L1PrefiringMaps.root'), - L1MuonParametrizations = cms.string('L1MuonPrefiringParametriations.root'), - DataEraECAL = cms.string('2017BtoF'), - DataEraMuon = cms.string('2016'), - UseJetEMPt = cms.bool(False), - PrefiringRateSystematicUnctyECAL = cms.double(0.2), - PrefiringRateSystematicUnctyMuon = cms.double(0.2), - JetMaxMuonFraction = cms.double(0.5), - mightGet = cms.optional.untracked.vstring -) -#Next lines are for UL2016 maps -(run2_muon_2016 & tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string("UL2016preVFP"), DataEraMuon = cms.string("2016preVFP")) -(run2_muon_2016 & ~tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string("UL2016postVFP"), DataEraMuon = cms.string("2016postVFP")) -#Next line is for UL2017 maps -run2_jme_2017.toModify( prefiringweight, DataEraECAL = cms.string("UL2017BtoF"), DataEraMuon = cms.string("20172018")) -#Next line is for UL2018 maps -run2_muon_2018.toModify( prefiringweight, DataEraECAL = cms.string("None"), DataEraMuon = cms.string("20172018")) - -#For pre-UL 2017 reprocessing, one should use the original maps and no muon jet protection -for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2: - modifier.toModify( prefiringweight, DataEraECAL = cms.string("2017BtoF"), DataEraMuon = cms.string("20172018")) - modifier.toModify( prefiringweight, JetMaxMuonFraction = cms.double(-1.) ) -#For pre-UL 2016 reprocessing, same thing -run2_nanoAOD_94X2016.toModify( prefiringweight, DataEraECAL = cms.string("2016BtoH"), DataEraMuon = cms.string("2016") ) -run2_nanoAOD_94X2016.toModify( prefiringweight, JetMaxMuonFraction = cms.double(-1.) ) - -l1PreFiringEventWeightTable = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("L1PreFiringWeight"), - variables = cms.PSet( - Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProb"), "float", doc = "L1 pre-firing event correction weight (1-probability)", precision=8), - Up = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbUp"), "float", doc = "L1 pre-firing event correction weight (1-probability), up var.", precision=8), - Dn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbDown"), "float", doc = "L1 pre-firing event correction weight (1-probability), down var.", precision=8), - Muon_Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuon"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability)", precision=8), - Muon_SystUp = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonSystUp"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), up var. syst.", precision=8), - Muon_SystDn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonSystDown"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), down var. syst.", precision=8), - Muon_StatUp = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonStatUp"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), up var. stat.", precision=8), - Muon_StatDn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonStatDown"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), down var. stat.", precision=8), - ECAL_Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECAL"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability)", precision=8), - ECAL_Up = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECALUp"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability), up var.", precision=8), - ECAL_Dn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECALDown"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability), down var.", precision=8), - ) -) - -l1bits=cms.EDProducer("L1TriggerResultsConverter", - src=cms.InputTag("gtStage2Digis"), - legacyL1=cms.bool(False), - storeUnprefireableBit=cms.bool(True), - src_ext=cms.InputTag("simGtExtUnprefireable")) - -triggerObjectTablesTask = cms.Task( unpackedPatTrigger,triggerObjectTable,l1bits) - -_triggerObjectTablesTask_withL1PreFiring = triggerObjectTablesTask.copy() -_triggerObjectTablesTask_withL1PreFiring.add(prefiringweight,l1PreFiringEventWeightTable) -(run2_HLTconditions_2016 | run2_HLTconditions_2017 | run2_HLTconditions_2018).toReplaceWith(triggerObjectTablesTask,_triggerObjectTablesTask_withL1PreFiring) - -(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(l1bits, storeUnprefireableBit=False) diff --git a/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py b/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py deleted file mode 100644 index d66c9655b463e..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py +++ /dev/null @@ -1,62 +0,0 @@ -from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy - - -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * - - -##################### User floats producers, selectors ########################## - -matchGenBHadron = cms.EDProducer("GenHFHadronMatcher", - flavour = cms.int32(5), - genParticles = cms.InputTag("prunedGenParticles"), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), - noBBbarResonances = cms.bool(False), - onlyJetClusteredHadrons = cms.bool(True) -) - -## Plugin for analysing C hadrons -# MUST use the same particle collection as in selectedHadronsAndPartons -matchGenCHadron = cms.EDProducer("GenHFHadronMatcher", - flavour = cms.int32(4), - genParticles = cms.InputTag("prunedGenParticles"), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), - noBBbarResonances = cms.bool(False), - onlyJetClusteredHadrons = cms.bool(True) -) - -## Producer for ttbar categorisation ID -categorizeGenTtbar = cms.EDProducer("GenTtbarCategorizer", - genBHadFlavour = cms.InputTag("matchGenBHadron","genBHadFlavour"), - genBHadFromTopWeakDecay = cms.InputTag("matchGenBHadron","genBHadFromTopWeakDecay"), - genBHadIndex = cms.InputTag("matchGenBHadron","genBHadIndex"), - genBHadJetIndex = cms.InputTag("matchGenBHadron","genBHadJetIndex"), - genBHadLeptonHadronIndex = cms.InputTag("matchGenBHadron","genBHadLeptonHadronIndex"), - genBHadLeptonViaTau = cms.InputTag("matchGenBHadron","genBHadLeptonViaTau"), - genBHadPlusMothers = cms.InputTag("matchGenBHadron","genBHadPlusMothers"), - genBHadPlusMothersIndices = cms.InputTag("matchGenBHadron","genBHadPlusMothersIndices"), - genCHadBHadronId = cms.InputTag("matchGenCHadron","genCHadBHadronId"), - genCHadFlavour = cms.InputTag("matchGenCHadron","genCHadFlavour"), - genCHadFromTopWeakDecay = cms.InputTag("matchGenCHadron","genCHadFromTopWeakDecay"), - genCHadJetIndex = cms.InputTag("matchGenCHadron","genCHadJetIndex"), - genJetAbsEtaMax = cms.double(2.4), - genJetPtMin = cms.double(20), - genJets = cms.InputTag("slimmedGenJets"), - mightGet = cms.optional.untracked.vstring -) - - -### Era dependent customization -run2_miniAOD_80XLegacy.toModify( matchGenBHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) -run2_miniAOD_80XLegacy.toModify( matchGenCHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) - - -##################### Tables for final output and docs ########################## -ttbarCategoryTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - genTtbarId = ExtVar( cms.InputTag("categorizeGenTtbar:genTtbarId"), "int", doc = "ttbar categorization") - ) -) - -ttbarCategoryTableTask = cms.Task(ttbarCategoryTable) -ttbarCatMCProducersTask = cms.Task(matchGenBHadron,matchGenCHadron,categorizeGenTtbar) diff --git a/PhysicsTools/NanoAOD/python/V10/vertices_cff.py b/PhysicsTools/NanoAOD/python/V10/vertices_cff.py deleted file mode 100644 index 971c1e76c4c9c..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/vertices_cff.py +++ /dev/null @@ -1,45 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,P4Vars - - - -##################### User floats producers, selectors ########################## - - -##################### Tables for final output and docs ########################## -vertexTable = cms.EDProducer("VertexTableProducer", - pvSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - goodPvCut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"), - svSrc = cms.InputTag("slimmedSecondaryVertices"), - svCut = cms.string(""), - dlenMin = cms.double(0), - dlenSigMin = cms.double(3), - pvName = cms.string("PV"), - svName = cms.string("SV"), - svDoc = cms.string("secondary vertices from IVF algorithm"), -) - -svCandidateTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("vertexTable"), - cut = cms.string(""), #DO NOT further cut here, use vertexTable.svCut - name = cms.string("SV"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(True), - variables = cms.PSet(P4Vars, - x = Var("position().x()", float, doc = "secondary vertex X position, in cm",precision=10), - y = Var("position().y()", float, doc = "secondary vertex Y position, in cm",precision=10), - z = Var("position().z()", float, doc = "secondary vertex Z position, in cm",precision=14), - ndof = Var("vertexNdof()", float, doc = "number of degrees of freedom",precision=8), - chi2 = Var("vertexNormalizedChi2()", float, doc = "reduced chi2, i.e. chi/ndof",precision=8), - ntracks = Var("numberOfDaughters()", "uint8", doc = "number of tracks"), - ), -) -svCandidateTable.variables.pt.precision=10 -svCandidateTable.variables.phi.precision=12 - - -#before cross linking -vertexTask = cms.Task() -#after cross linkining -vertexTablesTask = cms.Task( vertexTable, svCandidateTable ) - diff --git a/PhysicsTools/NanoAOD/python/nano_eras_cff.py b/PhysicsTools/NanoAOD/python/nano_eras_cff.py index c10aa119c52be..350790253906a 100644 --- a/PhysicsTools/NanoAOD/python/nano_eras_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_eras_cff.py @@ -22,7 +22,6 @@ from Configuration.Eras.Modifier_run3_nanoAOD_devel_cff import run3_nanoAOD_devel from Configuration.Eras.Modifier_run3_nanoAOD_122_cff import run3_nanoAOD_122 -from Configuration.Eras.Modifier_run3_nanoAOD_124_cff import run3_nanoAOD_124 run2_nanoAOD_ANY = ( run2_miniAOD_80XLegacy | run2_nanoAOD_92X | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1 | run2_nanoAOD_106Xv2 diff --git a/PhysicsTools/NanoAOD/python/taus_cff.py b/PhysicsTools/NanoAOD/python/taus_cff.py index 7e879154f0a2d..106ae3e842230 100644 --- a/PhysicsTools/NanoAOD/python/taus_cff.py +++ b/PhysicsTools/NanoAOD/python/taus_cff.py @@ -32,10 +32,6 @@ cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT'))") ) -run3_nanoAOD_124.toModify(finalTaus, - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || (tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum'))<2.5) || tauID('byVVVLooseDeepTau2017v2p1VSjet') || (tauID('byDeepTau2018v2p5VSjetraw') > {}))".format(WORKING_POINTS_v2p5["jet"]["VVVLoose"])) - ) - ##################### Tables for final output and docs ########################## def _tauIdWPMask(pattern, choices, doc="", from_raw=False, wp_thrs=None): if from_raw: @@ -227,23 +223,6 @@ def _tauIdWPMask(pattern, choices, doc="", from_raw=False, wp_thrs=None): idDeepTau2018v2p5VSjet = None ) -run3_nanoAOD_124.toModify( - tauTable.variables, - idDeepTau2018v2p5VSe = _tauIdWPMask("byDeepTau2018v2p5VSeraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSe ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["e"]), - idDeepTau2018v2p5VSmu = _tauIdWPMask("byDeepTau2018v2p5VSmuraw", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2018v2p5VSmu ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["mu"]), - idDeepTau2018v2p5VSjet = _tauIdWPMask("byDeepTau2018v2p5VSjetraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSjet ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["jet"]) -) - - tauGenJetsForNano = tauGenJets.clone( GenParticles = "finalGenParticles", includeNeutrinos = False