CMS 3D CMS Logo

Functions | Variables
nano_cff Namespace Reference

Functions

def nanoAOD_activateVID (process)
 
def nanoAOD_addBoostedTauIds (process)
 
def nanoAOD_addDeepInfo (process, addDeepBTag, addDeepFlavour)
 
def nanoAOD_addDeepInfoAK8 (process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload)
 
def nanoAOD_addDeepMET (process, addDeepMETProducer, ResponseTune_Graph)
 
def nanoAOD_addTauIds (process)
 
def nanoAOD_customizeCommon (process)
 
def nanoAOD_customizeData (process)
 
def nanoAOD_customizeMC (process)
 
def nanoAOD_recalibrateMETs (process, isData)
 
def nanoAOD_runMETfixEE2017 (process, isData)
 
def nanoWmassGenCustomize (process)
 

Variables

 _102x_sequence
 
 _80x_sequence
 Era dependent customization. More...
 
 bool
 
 btagSFdir
 
 btagWeightTable
 
 cut
 
 discNames
 
 discShortNames
 
 doc
 
 electronName
 
 electrons
 
 electronSel
 
 extraFlagsTable
 
 Flag_ecalBadCalibFilterV2
 
 jetName
 
 jets
 
 jetSel
 
 l1bits
 
 legacyL1
 
 lhcInfoTable
 
 lheInfo
 
 lheInfoTable
 
 linkedObjects
 
 measurementTypesB
 
 measurementTypesC
 
 measurementTypesUDSG
 
 muonName
 
 muons
 
 muonSel
 
 name
 
 nanoMetadata
 
 nanoSequence
 
 nanoSequenceCommon
 
 nanoSequenceFS
 
 nanoSequenceMC
 
 nanoSequenceOnlyData
 
 nanoSequenceOnlyFullSim
 
 operatingPoints
 
 photonName
 
 photons
 
 photonSel
 
 precision
 
 simpleCleanerTable
 
 src
 
 src_ext
 
 storeLHEParticles
 
 storeUnprefireableBit
 
 strings
 
 sysTypes
 
 tag
 
 tauName
 
 taus
 
 tauSel
 
 variables
 
 weightFiles
 

Function Documentation

def nano_cff.nanoAOD_activateVID (   process)

Definition at line 277 of file nano_cff.py.

References vid_id_tools.setupAllVIDIdsInModule(), vid_id_tools.switchOnVIDElectronIdProducer(), and vid_id_tools.switchOnVIDPhotonIdProducer().

Referenced by nanoAOD_customizeCommon().

277 def nanoAOD_activateVID(process):
278  switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD)
279  for modname in electron_id_modules_WorkingPoints_nanoAOD.modules:
280  setupAllVIDIdsInModule(process,modname,setupVIDElectronSelection)
281  process.electronSequence.insert(process.electronSequence.index(process.bitmapVIDForEle),process.egmGsfElectronIDSequence)
282  for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
283  modifier.toModify(process.electronMVAValueMapProducer, srcMiniAOD = "slimmedElectronsUpdated")
284  modifier.toModify(process.egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated")
285 
286  run2_nanoAOD_106Xv2.toModify(process.electronMVAValueMapProducer, src = "slimmedElectrons")
287  run2_nanoAOD_106Xv2.toModify(process.egmGsfElectronIDs, physicsObjectSrc = "slimmedElectrons")
288  switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD) # do not call this to avoid resetting photon IDs in VID, if called before inside makePuppiesFromMiniAOD
289  for modname in photon_id_modules_WorkingPoints_nanoAOD.modules:
290  setupAllVIDIdsInModule(process,modname,setupVIDPhotonSelection)
291  process.photonSequence.insert(process.photonSequence.index(bitmapVIDForPho),process.egmPhotonIDSequence)
292  for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016 ,run2_nanoAOD_102Xv1:
293  modifier.toModify(process.photonMVAValueMapProducer, srcMiniAOD = "slimmedPhotonsTo106X")
294  modifier.toModify(process.egmPhotonIDs, physicsObjectSrc = "slimmedPhotonsTo106X")
295  return process
296 
def switchOnVIDElectronIdProducer(process, dataFormat, task=None)
Electrons.
Definition: vid_id_tools.py:66
def setupAllVIDIdsInModule(process, id_module_name, setupFunction, patProducer=None, addUserData=True, task=None)
Definition: vid_id_tools.py:49
def nanoAOD_activateVID(process)
Definition: nano_cff.py:277
def switchOnVIDPhotonIdProducer(process, dataFormat, task=None)
Photons.
def nano_cff.nanoAOD_addBoostedTauIds (   process)

Definition at line 155 of file nano_cff.py.

Referenced by nanoAOD_customizeCommon().

156  updatedBoostedTauName = "slimmedTausBoostedNewID"
157  boostedTauIdEmbedder = tauIdConfig.TauIDEmbedder(process, cms, debug=False,
158  originalTauName = "slimmedTausBoosted",
159  updatedTauName = updatedBoostedTauName,
160  postfix="Boosted",
161  toKeep = [ "2017v2", "dR0p32017v2", "newDM2017v2", "againstEle2018",])
162  boostedTauIdEmbedder.runTauID()
163  process.boostedTauSequence.insert(process.boostedTauSequence.index(process.finalBoostedTaus),
164  process.rerunMvaIsolationSequenceBoosted)
165 
166  process.boostedTauSequence.insert(process.boostedTauSequence.index(process.finalBoostedTaus),
167  getattr(process, updatedBoostedTauName))
168 
169  return process
170 
171 
def nanoAOD_addBoostedTauIds(process)
Definition: nano_cff.py:155
def nano_cff.nanoAOD_addDeepInfo (   process,
  addDeepBTag,
  addDeepFlavour 
)

Definition at line 173 of file nano_cff.py.

References join(), and edm.print().

Referenced by nanoAOD_customizeCommon().

173 def nanoAOD_addDeepInfo(process,addDeepBTag,addDeepFlavour):
174  _btagDiscriminators=[]
175  if addDeepBTag:
176  print("Updating process to run DeepCSV btag")
177  _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb','pfDeepCSVJetTags:probc']
178  if addDeepFlavour:
179  print("Updating process to run DeepFlavour btag")
180  _btagDiscriminators += ['pfDeepFlavourJetTags:probb','pfDeepFlavourJetTags:probbb','pfDeepFlavourJetTags:problepb','pfDeepFlavourJetTags:probc']
181  if len(_btagDiscriminators)==0: return process
182  print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators))
183  updateJetCollection(
184  process,
185  jetSource = cms.InputTag('slimmedJets'),
186  jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual']), 'None'),
187  btagDiscriminators = _btagDiscriminators,
188  postfix = 'WithDeepInfo',
189  )
190  process.load("Configuration.StandardSequences.MagneticField_cff")
191  process.jetCorrFactorsNano.src="selectedUpdatedPatJetsWithDeepInfo"
192  process.updatedJets.jetSource="selectedUpdatedPatJetsWithDeepInfo"
193  return process
194 
def nanoAOD_addDeepInfo(process, addDeepBTag, addDeepFlavour)
Definition: nano_cff.py:173
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def nano_cff.nanoAOD_addDeepInfoAK8 (   process,
  addDeepBTag,
  addDeepBoostedJet,
  addDeepDoubleX,
  addDeepDoubleXV2,
  addParticleNet,
  addParticleNetMass,
  jecPayload 
)

Definition at line 297 of file nano_cff.py.

References join(), and edm.print().

Referenced by nanoAOD_customizeCommon().

297 def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload):
298  _btagDiscriminators=[]
299  if addDeepBTag:
300  print("Updating process to run DeepCSV btag to AK8 jets")
301  _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb']
302  if addDeepBoostedJet:
303  print("Updating process to run DeepBoostedJet on datasets before 103X")
304  from RecoBTag.ONNXRuntime.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll as pfDeepBoostedJetTagsAll
305  _btagDiscriminators += pfDeepBoostedJetTagsAll
306  if addParticleNet:
307  print("Updating process to run ParticleNet before it's included in MiniAOD")
308  from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetJetTagsAll as pfParticleNetJetTagsAll
309  _btagDiscriminators += pfParticleNetJetTagsAll
310  if addParticleNetMass:
311  from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs
312  _btagDiscriminators += _pfParticleNetMassRegressionOutputs
313  if addDeepDoubleX:
314  print("Updating process to run DeepDoubleX on datasets before 104X")
315  _btagDiscriminators += ['pfDeepDoubleBvLJetTags:probHbb', \
316  'pfDeepDoubleCvLJetTags:probHcc', \
317  'pfDeepDoubleCvBJetTags:probHcc', \
318  'pfMassIndependentDeepDoubleBvLJetTags:probHbb', 'pfMassIndependentDeepDoubleCvLJetTags:probHcc', 'pfMassIndependentDeepDoubleCvBJetTags:probHcc']
319  if addDeepDoubleXV2:
320  print("Updating process to run DeepDoubleXv2 on datasets before 11X")
321  _btagDiscriminators += [
322  'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
323  'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
324  'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc'
325  ]
326  if len(_btagDiscriminators)==0: return process
327  print("Will recalculate the following discriminators on AK8 jets: "+", ".join(_btagDiscriminators))
328  updateJetCollection(
329  process,
330  jetSource = cms.InputTag('slimmedJetsAK8'),
331  pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
332  svSource = cms.InputTag('slimmedSecondaryVertices'),
333  rParam = 0.8,
334  jetCorrections = (jecPayload.value(), cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
335  btagDiscriminators = _btagDiscriminators,
336  postfix='AK8WithDeepInfo',
337  printWarning = False
338  )
339  process.jetCorrFactorsAK8.src="selectedUpdatedPatJetsAK8WithDeepInfo"
340  process.updatedJetsAK8.jetSource="selectedUpdatedPatJetsAK8WithDeepInfo"
341  return process
342 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload)
Definition: nano_cff.py:297
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def nano_cff.nanoAOD_addDeepMET (   process,
  addDeepMETProducer,
  ResponseTune_Graph 
)

Definition at line 195 of file nano_cff.py.

References edm.print().

Referenced by nanoAOD_recalibrateMETs().

195 def nanoAOD_addDeepMET(process, addDeepMETProducer, ResponseTune_Graph):
196  if addDeepMETProducer:
197  # produce DeepMET on the fly if it is not in MiniAOD
198  print("add DeepMET Producers")
199  process.load('RecoMET.METPUSubtraction.deepMETProducer_cfi')
200  process.deepMETsResolutionTune = process.deepMETProducer.clone()
201  process.deepMETsResponseTune = process.deepMETProducer.clone()
202  #process.deepMETsResponseTune.graph_path = 'RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2018.pb'
203  process.deepMETsResponseTune.graph_path = ResponseTune_Graph.value()
204  process.metTables += process.deepMetTables
205  return process
206 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def nanoAOD_addDeepMET(process, addDeepMETProducer, ResponseTune_Graph)
Definition: nano_cff.py:195
def nano_cff.nanoAOD_addTauIds (   process)

Definition at line 146 of file nano_cff.py.

Referenced by nanoAOD_customizeCommon().

146 def nanoAOD_addTauIds(process):
147  updatedTauName = "slimmedTausUpdated"
148  tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, cms, debug = False, updatedTauName = updatedTauName,
149  toKeep = [ "deepTau2017v2p1" ])
150  tauIdEmbedder.runTauID()
151  process.patTauMVAIDsSeq.insert(process.patTauMVAIDsSeq.index(getattr(process, updatedTauName)),
152  process.rerunMvaIsolationSequence)
153  return process
154 
def nanoAOD_addTauIds(process)
Definition: nano_cff.py:146
def nano_cff.nanoAOD_customizeCommon (   process)

Definition at line 351 of file nano_cff.py.

References puppiForMET_cff.makePuppiesFromMiniAOD(), nanoAOD_activateVID(), nanoAOD_addBoostedTauIds(), nanoAOD_addDeepInfo(), nanoAOD_addDeepInfoAK8(), and nanoAOD_addTauIds().

Referenced by nanoAOD_customizeData(), and nanoAOD_customizeMC().

352  makePuppiesFromMiniAOD(process,True)
353  process.puppiNoLep.useExistingWeights = True
354  process.puppi.useExistingWeights = True
355  run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights = False)
356  run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights = False)
357  process = nanoAOD_activateVID(process)
358  nanoAOD_addDeepInfo_switch = cms.PSet(
359  nanoAOD_addDeepBTag_switch = cms.untracked.bool(False),
360  nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(False),
361  )
362  run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepBTag_switch = cms.untracked.bool(True))
363  for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016, run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
364  modifier.toModify(nanoAOD_addDeepInfo_switch, nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(True))
365  process = nanoAOD_addDeepInfo(process,
366  addDeepBTag=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepBTag_switch,
367  addDeepFlavour=nanoAOD_addDeepInfo_switch.nanoAOD_addDeepFlavourTag_switch)
368  nanoAOD_addDeepInfoAK8_switch = cms.PSet(
369  nanoAOD_addDeepBTag_switch = cms.untracked.bool(False),
370  nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(True),
371  nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(True),
372  nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(True),
373  nanoAOD_addParticleNet_switch = cms.untracked.bool(True),
374  nanoAOD_addParticleNetMass_switch = cms.untracked.bool(True),
375  jecPayload = cms.untracked.string('AK8PFPuppi')
376  )
377  # Don't run on old mini due to compatibility
378  # 80X contains ak8PFJetsCHS jets instead of puppi
379  run2_miniAOD_80XLegacy.toModify(nanoAOD_addDeepInfoAK8_switch,
380  nanoAOD_addDeepBTag_switch = True,
381  nanoAOD_addDeepBoostedJet_switch = False,
382  nanoAOD_addDeepDoubleX_switch = False,
383  nanoAOD_addDeepDoubleXV2_switch = False,
384  nanoAOD_addParticleNet_switch = False,
385  nanoAOD_addParticleNetMass_switch = False,
386  jecPayload = 'AK8PFchs')
387  # Don't rerun where already present
388  (run2_miniAOD_devel).toModify(
389  nanoAOD_addDeepInfoAK8_switch,
390  nanoAOD_addParticleNetMass_switch = False,
391  )
392  (run2_nanoAOD_106Xv2 | run2_miniAOD_devel).toModify(
393  nanoAOD_addDeepInfoAK8_switch,
394  nanoAOD_addDeepBoostedJet_switch = False,
395  nanoAOD_addDeepDoubleX_switch = False,
396  nanoAOD_addDeepDoubleXV2_switch = False,
397  nanoAOD_addParticleNet_switch = False,
398  )
399  run2_nanoAOD_106Xv1.toModify(
400  nanoAOD_addDeepInfoAK8_switch,
401  nanoAOD_addDeepBoostedJet_switch = False,
402  nanoAOD_addDeepDoubleX_switch = False,
403  )
404  # no-change policy
405  (run2_nanoAOD_106Xv1 & ~run2_nanoAOD_devel).toModify(
406  nanoAOD_addDeepInfoAK8_switch,
407  nanoAOD_addParticleNetMass_switch = False,
408  )
409  process = nanoAOD_addDeepInfoAK8(process,
410  addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch,
411  addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch,
412  addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch,
413  addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch,
414  addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch,
415  addParticleNetMass=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNetMass_switch,
416  jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload)
417  addTauIds_switch = cms.PSet(
418  nanoAOD_addTauIds_switch = cms.untracked.bool(True),
419  nanoAOD_addBoostedTauIds_switch = cms.untracked.bool(False)
420  )
421  run2_miniAOD_80XLegacy.toModify(addTauIds_switch, nanoAOD_addTauIds_switch = False)
422  ((run2_nanoAOD_106Xv2 | run2_miniAOD_devel | run2_tau_ul_2016 | run2_tau_ul_2018) & \
423  (~(run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1))).toModify(addTauIds_switch,
424  nanoAOD_addTauIds_switch = False, nanoAOD_addBoostedTauIds_switch = True)
425  if addTauIds_switch.nanoAOD_addTauIds_switch:
426  process = nanoAOD_addTauIds(process)
427  if addTauIds_switch.nanoAOD_addBoostedTauIds_switch:
428  process = nanoAOD_addBoostedTauIds(process)
429  return process
430 
def nanoAOD_addDeepInfo(process, addDeepBTag, addDeepFlavour)
Definition: nano_cff.py:173
def nanoAOD_activateVID(process)
Definition: nano_cff.py:277
def nanoAOD_customizeCommon(process)
Definition: nano_cff.py:351
def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload)
Definition: nano_cff.py:297
def nanoAOD_addTauIds(process)
Definition: nano_cff.py:146
def nanoAOD_addBoostedTauIds(process)
Definition: nano_cff.py:155
def makePuppiesFromMiniAOD(process, createScheduledSequence=False)
def nano_cff.nanoAOD_customizeData (   process)

Definition at line 431 of file nano_cff.py.

References nanoAOD_customizeCommon(), nanoAOD_recalibrateMETs(), and nanoAOD_runMETfixEE2017().

432  process = nanoAOD_customizeCommon(process)
433  process = nanoAOD_recalibrateMETs(process,isData=True)
434  for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
435  modifier.toModify(process, lambda p: nanoAOD_runMETfixEE2017(p,isData=True))
436  return process
437 
def nanoAOD_customizeCommon(process)
Definition: nano_cff.py:351
def nanoAOD_recalibrateMETs(process, isData)
Definition: nano_cff.py:209
def nanoAOD_runMETfixEE2017(process, isData)
Definition: nano_cff.py:344
def nanoAOD_customizeData(process)
Definition: nano_cff.py:431
def nano_cff.nanoAOD_customizeMC (   process)

Definition at line 438 of file nano_cff.py.

References nanoAOD_customizeCommon(), nanoAOD_recalibrateMETs(), and nanoAOD_runMETfixEE2017().

438 def nanoAOD_customizeMC(process):
439  process = nanoAOD_customizeCommon(process)
440  process = nanoAOD_recalibrateMETs(process,isData=False)
441  for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
442  modifier.toModify(process, lambda p: nanoAOD_runMETfixEE2017(p,isData=False))
443  return process
444 
def nanoAOD_customizeMC(process)
Definition: nano_cff.py:438
def nanoAOD_customizeCommon(process)
Definition: nano_cff.py:351
def nanoAOD_recalibrateMETs(process, isData)
Definition: nano_cff.py:209
def nanoAOD_runMETfixEE2017(process, isData)
Definition: nano_cff.py:344
def nano_cff.nanoAOD_recalibrateMETs (   process,
  isData 
)

Definition at line 209 of file nano_cff.py.

References helpers.addToProcessAndTask(), bool, helpers.getPatAlgosToolsTask(), nanoAOD_addDeepMET(), runMETCorrectionsAndUncertainties.runMetCorAndUncFromMiniAOD(), and common_cff.Var().

Referenced by nanoAOD_customizeData(), and nanoAOD_customizeMC().

209 def nanoAOD_recalibrateMETs(process,isData):
210  # add DeepMETs
211  nanoAOD_DeepMET_switch = cms.PSet(
212  nanoAOD_addDeepMET_switch = cms.untracked.bool(True), # decide if DeeMET should be included in Nano
213  nanoAOD_produceDeepMET_switch = cms.untracked.bool(False), # decide if DeepMET should be computed on the fly
214  ResponseTune_Graph = cms.untracked.string('RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2018.pb')
215  )
216  # compute DeepMETs for the eras before UL-ReminiAOD
217  (~(run2_nanoAOD_106Xv2 | run2_miniAOD_devel)).toModify(nanoAOD_DeepMET_switch, nanoAOD_produceDeepMET_switch = cms.untracked.bool(True))
218  for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
219  modifier.toModify(nanoAOD_DeepMET_switch, ResponseTune_Graph=cms.untracked.string("RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2016.pb"))
220  if nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch:
221  process = nanoAOD_addDeepMET(process,
222  addDeepMETProducer=nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch,
223  ResponseTune_Graph=nanoAOD_DeepMET_switch.ResponseTune_Graph)
224 
225  # if included in Nano, and not computed in the fly, then it should be extracted from minAOD
226  extractDeepMETs = nanoAOD_DeepMET_switch.nanoAOD_addDeepMET_switch and not nanoAOD_DeepMET_switch.nanoAOD_produceDeepMET_switch
227 
228  runMetCorAndUncFromMiniAOD(process,isData=isData, extractDeepMETs=extractDeepMETs)
229  process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.fullPatMetSequence))
230  process.basicJetsForMetForT1METNano = process.basicJetsForMet.clone(
231  src = process.updatedJetsWithUserData.src,
232  skipEM = False,
233  type1JetPtThreshold = 0.0,
234  calcMuonSubtrRawPtAsValueMap = cms.bool(True),
235  )
236  process.jetSequence.insert(process.jetSequence.index(process.updatedJetsWithUserData),cms.Sequence(process.basicJetsForMetForT1METNano))
237  process.updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPt")
238  process.corrT1METJetTable.src = process.finalJets.src
239  process.corrT1METJetTable.cut = "pt<15 && abs(eta)<9.9"
240  for table in process.jetTable, process.corrT1METJetTable:
241  table.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6)
242  process.metTables += process.corrT1METJetTable
243 # makePuppiesFromMiniAOD(process,True) # call this before in the global customizer otherwise it would reset photon IDs in VID
244  nanoAOD_PuppiV15_switch = cms.PSet(
245  recoMetFromPFCs = cms.untracked.bool(False),
246  reclusterJets = cms.untracked.bool(False),
247  )
248  run2_nanoAOD_106Xv1.toModify(nanoAOD_PuppiV15_switch,recoMetFromPFCs=True,reclusterJets=True)
249  if nanoAOD_PuppiV15_switch.reclusterJets:
250  from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets
251  from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
252  task = getPatAlgosToolsTask(process)
253  addToProcessAndTask('ak4PuppiJets', ak4PFJets.clone (src = 'puppi', doAreaFastjet = True, jetPtMin = 10.), process, task)
254  from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
255  addJetCollection(process,
256  labelName = 'Puppi',
257  jetSource = cms.InputTag('ak4PuppiJets'),
258  algo = 'AK', rParam=0.4,
259  genJetCollection=cms.InputTag('slimmedGenJets'),
260  jetCorrections = ('AK4PFPuppi', ['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual'], 'None'),
261  pfCandidates = cms.InputTag('packedPFCandidates'),
262  pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
263  svSource = cms.InputTag('slimmedSecondaryVertices'),
264  muSource =cms.InputTag( 'slimmedMuons'),
265  elSource = cms.InputTag('slimmedElectrons'),
266  genParticles= cms.InputTag('prunedGenParticles'),
267  getJetMCFlavour= False
268  )
269  process.patJetsPuppi.addGenPartonMatch = cms.bool(False)
270  process.patJetsPuppi.addGenJetMatch = cms.bool(False)
271 
272  runMetCorAndUncFromMiniAOD(process,isData=isData,metType="Puppi",postfix="Puppi",jetFlavor="AK4PFPuppi", recoMetFromPFCs=bool(nanoAOD_PuppiV15_switch.recoMetFromPFCs), reclusterJets=bool(nanoAOD_PuppiV15_switch.reclusterJets))
273  process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(process.jetSequence),cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi))
274  return process
275 
def addToProcessAndTask(label, module, process, task)
Definition: helpers.py:29
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
Definition: common_cff.py:20
def nanoAOD_recalibrateMETs(process, isData)
Definition: nano_cff.py:209
def nanoAOD_addDeepMET(process, addDeepMETProducer, ResponseTune_Graph)
Definition: nano_cff.py:195
def getPatAlgosToolsTask(process)
Definition: helpers.py:14
def runMetCorAndUncFromMiniAOD(process, metType="PF", jetCollUnskimmed="slimmedJets", photonColl="slimmedPhotons", electronColl="slimmedElectrons", muonColl="slimmedMuons", tauColl="slimmedTaus", pfCandColl="packedPFCandidates", jetFlavor="AK4PFchs", jetCleaning="LepClean", isData=False, manualJetConfig=False, reclusterJets=None, jetSelection="pt>15 && abs(eta)<9.9", recoMetFromPFCs=None, jetCorLabelL3="ak4PFCHSL1FastL2L3Corrector", jetCorLabelRes="ak4PFCHSL1FastL2L3ResidualCorrector", CHS=False, reapplyJEC=True, jecUncFile="", computeMETSignificance=True, fixEE2017=False, fixEE2017Params=None, extractDeepMETs=False, postfix="")
def nano_cff.nanoAOD_runMETfixEE2017 (   process,
  isData 
)

Definition at line 344 of file nano_cff.py.

References runMETCorrectionsAndUncertainties.runMetCorAndUncFromMiniAOD().

Referenced by nanoAOD_customizeData(), and nanoAOD_customizeMC().

344 def nanoAOD_runMETfixEE2017(process,isData):
345  runMetCorAndUncFromMiniAOD(process,isData=isData,
346  fixEE2017 = True,
347  fixEE2017Params = {'userawPt': True, 'ptThreshold':50.0, 'minEtaThreshold':2.65, 'maxEtaThreshold': 3.139},
348  postfix = "FixEE2017")
349  process.nanoSequenceCommon.insert(process.nanoSequenceCommon.index(jetSequence),process.fullPatMetSequenceFixEE2017)
350 
def nanoAOD_runMETfixEE2017(process, isData)
Definition: nano_cff.py:344
def runMetCorAndUncFromMiniAOD(process, metType="PF", jetCollUnskimmed="slimmedJets", photonColl="slimmedPhotons", electronColl="slimmedElectrons", muonColl="slimmedMuons", tauColl="slimmedTaus", pfCandColl="packedPFCandidates", jetFlavor="AK4PFchs", jetCleaning="LepClean", isData=False, manualJetConfig=False, reclusterJets=None, jetSelection="pt>15 && abs(eta)<9.9", recoMetFromPFCs=None, jetCorLabelL3="ak4PFCHSL1FastL2L3Corrector", jetCorLabelRes="ak4PFCHSL1FastL2L3ResidualCorrector", CHS=False, reapplyJEC=True, jecUncFile="", computeMETSignificance=True, fixEE2017=False, fixEE2017Params=None, extractDeepMETs=False, postfix="")
def nano_cff.nanoWmassGenCustomize (   process)

Definition at line 445 of file nano_cff.py.

446  pdgSelection="?(abs(pdgId) == 11|| abs(pdgId)==13 || abs(pdgId)==15 ||abs(pdgId)== 12 || abs(pdgId)== 14 || abs(pdgId)== 16|| abs(pdgId)==24|| pdgId== 23)"
447  # Keep precision same as default RECO for selected particles
448  ptPrecision="{}?{}:{}".format(pdgSelection, CandVars.pt.precision.value(),genParticleTable.variables.pt.precision.value())
449  process.genParticleTable.variables.pt.precision=cms.string(ptPrecision)
450  phiPrecision="{} ? {} : {}".format(pdgSelection, CandVars.phi.precision.value(), genParticleTable.variables.phi.precision.value())
451  process.genParticleTable.variables.phi.precision=cms.string(phiPrecision)
452  etaPrecision="{} ? {} : {}".format(pdgSelection, CandVars.eta.precision.value(), genParticleTable.variables.eta.precision.value())
453  process.genParticleTable.variables.eta.precision=cms.string(etaPrecision)
454  return process
455 
def nanoWmassGenCustomize(process)
Definition: nano_cff.py:445

Variable Documentation

nano_cff._102x_sequence
private

Definition at line 467 of file nano_cff.py.

nano_cff._80x_sequence
private

Era dependent customization.

Definition at line 457 of file nano_cff.py.

nano_cff.bool

Definition at line 142 of file nano_cff.py.

Referenced by nanoAOD_recalibrateMETs().

nano_cff.btagSFdir

Definition at line 56 of file nano_cff.py.

nano_cff.btagWeightTable

Definition at line 58 of file nano_cff.py.

nano_cff.cut

Definition at line 60 of file nano_cff.py.

nano_cff.discNames

Definition at line 61 of file nano_cff.py.

nano_cff.discShortNames

Definition at line 66 of file nano_cff.py.

nano_cff.doc

Definition at line 41 of file nano_cff.py.

nano_cff.electronName

Definition at line 52 of file nano_cff.py.

nano_cff.electrons

Definition at line 34 of file nano_cff.py.

Referenced by ElectronIDAnalyzer.analyze(), PatElectronAnalyzer.analyze(), ElectronMcSignalValidatorMiniAOD.analyze(), PatBasicAnalyzer.analyze(), TtSemiLepSignalSelMVATrainer.analyze(), HiggsToZZ4LeptonsSkimEff.analyze(), ResolutionCreator.analyze(), SiStripElectronAnalyzer.analyze(), B2GDoubleLeptonHLTValidation.analyze(), B2GSingleLeptonHLTValidation.analyze(), TopSingleLeptonHLTValidation.analyze(), TopDiLeptonHLTValidation.analyze(), ObjMonitor.analyze(), TopMonitor.analyze(), PhotonMonitor.analyze(), MuonMonitor.analyze(), GenPurposeSkimmerData.analyze(), METMonitor.analyze(), HTMonitor.analyze(), ZCounting.analyzeElectrons(), EgammaObjects.analyzeElectrons(), RPixDetClusterizer.buildClusters(), pat::LeptonJetIsolationAngle.calculate(), RPixDetClusterizer.calibrate(), PixelThresholdClusterizer.calibrate(), GsfElectronProducer.clonePreviousElectrons(), HLTTauRefProducer.doElectrons(), pat::DuplicatedElectronRemover.duplicatesToRemove(), EGExtraInfoModifierFromValueMaps< MapType, OutputType >.EGExtraInfoModifierFromValueMaps(), EGFull5x5ShowerShapeModifierFromValueMaps.EGFull5x5ShowerShapeModifierFromValueMaps(), EGRegressionModifierV1.EGRegressionModifierV1(), EGRegressionModifierV2.EGRegressionModifierV2(), pat::DuplicatedPhotonRemover.electronsBySeed(), pat::DuplicatedPhotonRemover.electronsBySuperCluster(), AdHocNTupler.fill(), EwkElecTauHistManager.fillHistograms(), pat::PATLeptonCountFilter.filter(), HiggsToWW2LeptonsSkim.filter(), HiggsToZZ4LeptonsSkim.filter(), ElectronIdFilter.filter(), LeptonSkimming.filter(), pat::PATMHTProducer.getElectrons(), CSCWireHitSim.getIonizationClusters(), DeepTauId.getPredictions(), DeepTauId.getPredictionsV1(), HGCalHitCalibration.HGCalHitCalibration(), HLTPMDocaFilter.hltFilter(), HLTFiltCand.hltFilter(), HLTElectronMuonInvMassFilter.hltFilter(), HLTPMMassFilter.hltFilter(), HLTTauRefProducer.HLTTauRefProducer(), pat::DuplicatedPhotonRemover::EqualBySuperCluster.operator()(), pat::DuplicatedElectronRemover::BestEoverP.operator()(), GsfElectronProducer.produce(), GsfElectronEcalDrivenProducer.produce(), GEDGsfElectronProducer.produce(), GsfElectronCoreEcalDrivenProducer.produce(), LowPtGsfElectronProducer.produce(), GEDGsfElectronCoreProducer.produce(), GsfElectronCoreProducer.produce(), LowPtGsfElectronCoreProducer.produce(), StEvtSolutionMaker.produce(), TtDilepEvtSolutionMaker.produce(), ElectronMatchedCandidateProducer.produce(), TtFullLepKinSolutionProducer.produce(), ElectronIDExternalProducer< algo >.produce(), TtSemiLepSignalSelMVAComputer.produce(), TtSemiEvtSolutionMaker.produce(), LowPtGSFToPackedCandidateLinker.produce(), LowPtGsfElectronIDProducer.produce(), pat::DuplicatedElectronCleaner.produce(), pat::PATConversionProducer.produce(), pat::__class__Producer.produce(), edm::GenericSelectorByValueMap< T, C >.produce(), PFTauPrimaryVertexProducerBase.produce(), PATObjectCrossLinker.produce(), pat::PATElectronProducer.produce(), MuonFSRProducer.produce(), HLTJetsCleanedFromLeadingLeptons< JetType >.produce(), BoostedTopProducer.produce(), SelectedElectronFEDListProducer< TEle, TCand >.produce(), ElectronIDSelector< algo >.select(), pf2pat::ElectronIDPFCandidateSelectorDefinition.select(), uniqueElectronFinder(), and CSCGasCollisions.writeSummary().

nano_cff.electronSel

Definition at line 49 of file nano_cff.py.

nano_cff.extraFlagsTable

Definition at line 141 of file nano_cff.py.

nano_cff.Flag_ecalBadCalibFilterV2

Definition at line 142 of file nano_cff.py.

nano_cff.jetName

Definition at line 52 of file nano_cff.py.

nano_cff.jets

Definition at line 32 of file nano_cff.py.

nano_cff.jetSel

Definition at line 47 of file nano_cff.py.

nano_cff.l1bits

Definition at line 105 of file nano_cff.py.

nano_cff.legacyL1

Definition at line 105 of file nano_cff.py.

nano_cff.lhcInfoTable

Definition at line 94 of file nano_cff.py.

nano_cff.lheInfo

Definition at line 100 of file nano_cff.py.

nano_cff.lheInfoTable

Definition at line 99 of file nano_cff.py.

nano_cff.linkedObjects

Definition at line 31 of file nano_cff.py.

nano_cff.measurementTypesB

Definition at line 77 of file nano_cff.py.

nano_cff.measurementTypesC

Definition at line 78 of file nano_cff.py.

nano_cff.measurementTypesUDSG

Definition at line 79 of file nano_cff.py.

nano_cff.muonName

Definition at line 52 of file nano_cff.py.

Referenced by main().

nano_cff.muons

Definition at line 33 of file nano_cff.py.

nano_cff.muonSel

Definition at line 48 of file nano_cff.py.

nano_cff.name

Definition at line 40 of file nano_cff.py.

nano_cff.nanoMetadata

Definition at line 25 of file nano_cff.py.

nano_cff.nanoSequence

Definition at line 122 of file nano_cff.py.

nano_cff.nanoSequenceCommon

Definition at line 109 of file nano_cff.py.

nano_cff.nanoSequenceFS

Definition at line 126 of file nano_cff.py.

nano_cff.nanoSequenceMC

Definition at line 136 of file nano_cff.py.

nano_cff.nanoSequenceOnlyData

Definition at line 120 of file nano_cff.py.

nano_cff.nanoSequenceOnlyFullSim

Definition at line 118 of file nano_cff.py.

nano_cff.operatingPoints

Definition at line 76 of file nano_cff.py.

nano_cff.photonName

Definition at line 53 of file nano_cff.py.

nano_cff.photons

Definition at line 36 of file nano_cff.py.

nano_cff.photonSel

Definition at line 51 of file nano_cff.py.

nano_cff.precision

Definition at line 95 of file nano_cff.py.

nano_cff.simpleCleanerTable

Definition at line 39 of file nano_cff.py.

nano_cff.src

Definition at line 59 of file nano_cff.py.

nano_cff.src_ext

Definition at line 106 of file nano_cff.py.

nano_cff.storeLHEParticles

Definition at line 102 of file nano_cff.py.

nano_cff.storeUnprefireableBit

Definition at line 106 of file nano_cff.py.

nano_cff.strings
nano_cff.sysTypes

Definition at line 80 of file nano_cff.py.

nano_cff.tag

Definition at line 27 of file nano_cff.py.

nano_cff.tauName

Definition at line 53 of file nano_cff.py.

nano_cff.taus

Definition at line 35 of file nano_cff.py.

Referenced by HLTTauDQML1Plotter.analyze(), TopTauAnalyzer.analyze(), PatBasicAnalyzer.analyze(), l1t::L1TStage2CaloAnalyzer.analyze(), ResolutionCreator.analyze(), TauValidationMiniAOD.analyze(), l1t::GtInputDump.analyze(), l1t::L1TGlobalAnalyzer.analyze(), l1t::GtRecordDump.analyze(), L1TTauOffline.analyze(), HPSPFRecoTauAlgorithm.buildOneProng(), HPSPFRecoTauAlgorithm.buildOneProngStrip(), HPSPFRecoTauAlgorithm.buildOneProngTwoStrips(), HPSPFRecoTauAlgorithm.buildThreeProngs(), L1TStage2CaloLayer2Comp.compareTaus(), l1t::GtRecordDump.dumpTestVectors(), L1RCTJetSummaryCard.fillTauBits(), pat::PATLeptonCountFilter.filter(), L1RCT.getRegions(), deep_tau::DeepTauBase.globalEndJob(), HLTPFTauPairLeadTrackDzMatchFilter.hltFilter(), HLTFiltCand.hltFilter(), L1TSummary.L1TSummary(), L1UpgradeTreeProducer.L1UpgradeTreeProducer(), deep_tau::DeepTauBase::Output.Output(), l1t::stage2::TauPacker.pack(), l1t::stage1::TauPacker.pack(), l1t::stage1::IsoTauPacker.pack(), TtDilepEvtSolutionMaker.produce(), PFJetsTauOverlapRemoval.produce(), PFTauL1TJetsMatching.produce(), RecoTauPiZeroUnembedder.produce(), pat::__class__Producer.produce(), l1t::FakeInputProducer.produce(), PATObjectCrossLinker.produce(), RecoTauProducer.produce(), NanoAODBaseCrossCleaner.produce(), L1TStage2Layer2Producer.produce(), l1t::GenToInputProducer.produce(), l1t::BXVectorInputProducer.produce(), TauDiscriminationProducerBase< TauType, TauDiscriminator >.produce(), L1TStage1Layer2Producer.produce(), deep_tau::DeepTauBase.produce(), HepMCValidationHelper.removeIsolatedLeptons(), HLTL1TSeed.seedsL1TriggerObjectMaps(), and TauJetCorrector::ParametrizationTauJet.value().

nano_cff.tauSel

Definition at line 50 of file nano_cff.py.

nano_cff.variables

Definition at line 141 of file nano_cff.py.

nano_cff.weightFiles

Definition at line 71 of file nano_cff.py.