CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Functions | Variables
jetTools Namespace Reference

Classes

class  AddJetCollection
 
class  AddJetID
 
class  SetTagInfos
 
class  SwitchJetCollection
 
class  UpdateJetCollection
 

Functions

def checkJetCorrectionsFormat
 
def deprecatedOptionOutputModule
 
def jetAlgo
 
def rerunningIVF
 
def rerunningIVFMiniAOD
 
def setupBTagging
 
def setupJetCorrections
 
def setupSVClustering
 
def undefinedLabelName
 
def unsupportedJetAlgorithm
 

Variables

dictionary supportedJetAlgos
 dictionary with supported jet clustering algorithms More...
 

Function Documentation

def jetTools.checkJetCorrectionsFormat (   jetCorrections)

Definition at line 16 of file jetTools.py.

Referenced by jetTools.AddJetCollection.toolCode(), and jetTools.UpdateJetCollection.toolCode().

16 
17 def checkJetCorrectionsFormat(jetCorrections):
18  ## check for the correct format
19  if type(jetCorrections) != type(('PAYLOAD-LABEL',['CORRECTION-LEVEL-A','CORRECTION-LEVEL-B'], 'MET-LABEL')):
20  raise ValueError("In addJetCollection: 'jetCorrections' must be 'None' (as a python value w/o quotation marks), or of type ('PAYLOAD-LABEL', ['CORRECTION-LEVEL-A', \
21  'CORRECTION-LEVEL-B', ...], 'MET-LABEL'). Note that 'MET-LABEL' can be set to 'None' (as a string in quotation marks) in case you do not want to apply MET(Type1) \
22  corrections.")
23 
def checkJetCorrectionsFormat
Definition: jetTools.py:16
def jetTools.deprecatedOptionOutputModule (   obj)

Definition at line 1447 of file jetTools.py.

1449  print "-------------------------------------------------------"
1450  print " Error: the option 'outputModule' is not supported"
1451  print " anymore by:"
1452  print " ", obj._label
1453  print " please use 'outputModules' now and specify the"
1454  print " names of all needed OutModules in there"
1455  print " (default: ['out'])"
1456  print "-------------------------------------------------------"
1457  raise KeyError("Unsupported option 'outputModule' used in '"+obj._label+"'")
def deprecatedOptionOutputModule
Definition: jetTools.py:1447
def jetTools.jetAlgo (   algo)

Definition at line 3 of file jetTools.py.

Referenced by pfTools.switchToPFJets().

3 
4 def jetAlgo( algo ):
5 
6  # print 'PF2PAT: selecting jet algorithm ', algo
7 
8  if algo == 'IC5':
9  import RecoJets.JetProducers.ic5PFJets_cfi as jetConfig
10  jetAlgo = jetConfig.iterativeCone5PFJets.clone()
11  elif algo == 'AK4':
12  import RecoJets.JetProducers.ak4PFJets_cfi as jetConfig
13  jetAlgo = jetConfig.ak4PFJets.clone()
14  elif algo == 'AK7':
15  import RecoJets.JetProducers.ak4PFJets_cfi as jetConfig
16  jetAlgo = jetConfig.ak4PFJets.clone()
17  jetAlgo.rParam = cms.double(0.7)
18  jetAlgo.doAreaFastjet = cms.bool(False)
19 
20  jetAlgo.src = 'pfNoElectronJME'
21  jetAlgo.doPVCorrection = True
22  jetAlgo.srcPVs = cms.InputTag("goodOfflinePrimaryVertices")
23  return jetAlgo
def jetAlgo
Definition: jetTools.py:3
def jetTools.rerunningIVF ( )

Definition at line 1474 of file jetTools.py.

Referenced by setupBTagging().

1475 def rerunningIVF():
1476  print "-------------------------------------------------------------------"
1477  print " Warning: You are attempting to remake the IVF secondary vertices"
1478  print " already produced by the standard reconstruction. This"
1479  print " option is not enabled by default so please use it only if"
1480  print " you know what you are doing."
1481  print "-------------------------------------------------------------------"
def rerunningIVF
Definition: jetTools.py:1474
def jetTools.rerunningIVFMiniAOD ( )

Definition at line 1482 of file jetTools.py.

Referenced by setupBTagging().

1483 def rerunningIVFMiniAOD():
1484  print "-------------------------------------------------------------------"
1485  print " Warning: You are attempting to remake IVF secondary vertices from"
1486  print " MiniAOD. If that was your intention, note that secondary"
1487  print " vertices remade from MiniAOD will have somewhat degraded"
1488  print " performance compared to those remade from RECO/AOD."
1489  print "-------------------------------------------------------------------"
def rerunningIVFMiniAOD
Definition: jetTools.py:1482
def jetTools.setupBTagging (   process,
  jetSource,
  pfCandidates,
  explicitJTA,
  pvSource,
  svSource,
  elSource,
  muSource,
  runIVF,
  tightBTagNTkHits,
  loadStdRecoBTag,
  svClustering,
  fatJets,
  groomedFatJets,
  algo,
  rParam,
  btagDiscriminators,
  btagInfos,
  patJets,
  labelName,
  btagPrefix,
  postfix 
)

Definition at line 174 of file jetTools.py.

References any(), clone(), list(), helpers.loadWithPrefix(), rerunningIVF(), rerunningIVFMiniAOD(), and setupSVClustering().

Referenced by setupSVClustering(), jetTools.AddJetCollection.toolCode(), and jetTools.UpdateJetCollection.toolCode().

175  algo, rParam, btagDiscriminators, btagInfos, patJets, labelName, btagPrefix, postfix):
176  ## expand tagInfos to what is explicitly required by user + implicit
177  ## requirements that come in from one or the other discriminator
178  requiredTagInfos = list(btagInfos)
179  for btagDiscr in btagDiscriminators :
180  for tagInfoList in supportedBtagDiscr[btagDiscr] :
181  for requiredTagInfo in tagInfoList :
182  tagInfoCovered = False
183  for tagInfo in requiredTagInfos :
184  if requiredTagInfo == tagInfo :
185  tagInfoCovered = True
186  break
187  if not tagInfoCovered :
188  requiredTagInfos.append(requiredTagInfo)
189  ## load sequences and setups needed for btagging
190  if hasattr( process, 'candidateJetProbabilityComputer' ) == False :
191  if loadStdRecoBTag: # also loading modules already run in the standard reconstruction
192  process.load("RecoBTag.ImpactParameter.impactParameter_cff")
193  process.load("RecoBTag.SecondaryVertex.secondaryVertex_cff")
194  process.load("RecoBTag.SoftLepton.softLepton_cff")
195  process.load("RecoBTag.Combined.combinedMVA_cff")
196  process.load("RecoBTag.CTagging.cTagging_cff")
197  else: # to prevent loading of modules already run in the standard reconstruction
198  process.load("RecoBTag.ImpactParameter.impactParameter_EventSetup_cff")
199  process.load("RecoBTag.SecondaryVertex.secondaryVertex_EventSetup_cff")
200  process.load("RecoBTag.SoftLepton.softLepton_EventSetup_cff")
201  process.load("RecoBTag.Combined.combinedMVA_EventSetup_cff")
202  process.load("RecoBTag.CTagging.cTagging_EventSetup_cff")
205 
206  if tightBTagNTkHits:
207  if not runIVF:
208  print "-------------------------------------------------------------------"
209  print " Warning: For a complete switch to the legacy tight b-tag track"
210  print " selection, please also enable the \'runIVF\' switch."
211  print "-------------------------------------------------------------------"
212  if btagPrefix == '':
213  print "-------------------------------------------------------------------"
214  print " Warning: With the tight b-tag track selection enabled, it is"
215  print " advisable to set \'btagPrefix\' to a non-empty string to"
216  print " avoid unintentional modifications to the default"
217  print " b tagging setup that might be loaded in the same job."
218  print "-------------------------------------------------------------------"
219 
220  ## define c tagging CvsL SV source (for now tied to the default SV source
221  ## in the first part of the module label, product instance label and process name)
222  svSourceCvsL = copy.deepcopy(svSource)
223  svSourceCvsL.setModuleLabel(svSource.getModuleLabel()+'CvsL')
224 
225  ## check if and under what conditions to re-run IVF
226  runIVFforCTagOnly = False
227  ivfcTagInfos = ['pfInclusiveSecondaryVertexFinderCvsLTagInfos', 'pfInclusiveSecondaryVertexFinderNegativeCvsLTagInfos']
228  ## if MiniAOD and running c tagging
229  if pvSource.getModuleLabel() == 'offlineSlimmedPrimaryVertices' and any(i in requiredTagInfos for i in ivfcTagInfos) and not runIVF:
230  runIVFforCTagOnly = True
231  runIVF = True
232  print "-------------------------------------------------------------------"
233  print " Info: To run c tagging on MiniAOD, c-tag-specific IVF secondary"
234  print " vertices will be remade."
235  print "-------------------------------------------------------------------"
236  ## adjust svSources
237  if runIVF and btagPrefix != '':
238  if runIVFforCTagOnly:
239  svSourceCvsL.setModuleLabel(btagPrefix+svSourceCvsL.getModuleLabel())
240  else:
241  svSource.setModuleLabel(btagPrefix+svSource.getModuleLabel())
242  svSourceCvsL.setModuleLabel(btagPrefix+svSourceCvsL.getModuleLabel())
243 
244  ## setup all required btagInfos : we give a dedicated treatment for different
245  ## types of tagInfos here. A common treatment is possible but might require a more
246  ## general approach anyway in coordination with the btagging POG.
247  acceptedTagInfos = list()
248  for btagInfo in requiredTagInfos:
249  if hasattr(btag,btagInfo):
250  if btagInfo == 'pfImpactParameterTagInfos':
251  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfImpactParameterTagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
252  if explicitJTA:
253  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
254  _btagInfo.explicitJTA = cms.bool(explicitJTA)
255  if tightBTagNTkHits:
256  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
257  _btagInfo.minimumNumberOfPixelHits = cms.int32(2)
258  _btagInfo.minimumNumberOfHits = cms.int32(8)
259  if btagInfo == 'pfImpactParameterAK8TagInfos':
260  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfImpactParameterAK8TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
261  if explicitJTA:
262  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
263  _btagInfo.explicitJTA = cms.bool(explicitJTA)
264  if tightBTagNTkHits:
265  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
266  _btagInfo.minimumNumberOfPixelHits = cms.int32(2)
267  _btagInfo.minimumNumberOfHits = cms.int32(8)
268  if btagInfo == 'pfImpactParameterCA15TagInfos':
269  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfImpactParameterCA15TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
270  if explicitJTA:
271  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
272  _btagInfo.explicitJTA = cms.bool(explicitJTA)
273  if tightBTagNTkHits:
274  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
275  _btagInfo.minimumNumberOfPixelHits = cms.int32(2)
276  _btagInfo.minimumNumberOfHits = cms.int32(8)
277  if btagInfo == 'pfSecondaryVertexTagInfos':
278  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfSecondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix)))
279  if tightBTagNTkHits:
280  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
281  _btagInfo.trackSelection.pixelHitsMin = cms.uint32(2)
282  _btagInfo.trackSelection.totalHitsMin = cms.uint32(8)
283  if btagInfo == 'pfDeepCSVTagInfos':
284  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCSVTagInfos.clone(svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderTagInfos'+labelName+postfix)))
285  if svClustering or fatJets != cms.InputTag(''):
286  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
287  if btagInfo == 'pfDeepCSVNegativeTagInfos':
288  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCSVNegativeTagInfos.clone(svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderNegativeTagInfos'+labelName+postfix)))
289  if svClustering or fatJets != cms.InputTag(''):
290  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
291  if btagInfo == 'pfDeepCSVPositiveTagInfos':
292  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCSVPositiveTagInfos.clone(svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderTagInfos'+labelName+postfix)))
293  if svClustering or fatJets != cms.InputTag(''):
294  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
295  if btagInfo == 'pfDeepCMVATagInfos':
296  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCMVATagInfos.clone(pfDeepCSVTagInfos = cms.InputTag(btagPrefix+'pfDeepCSVTagInfos'+labelName+postfix), ipInfoSrc = cms.InputTag(btagPrefix+"pfImpactParameterTagInfos"+labelName+postfix), muInfoSrc = cms.InputTag(btagPrefix+"softPFMuonsTagInfos"+labelName+postfix), elInfoSrc = cms.InputTag(btagPrefix+"softPFElectronsTagInfos"+labelName+postfix)))
297  if svClustering or fatJets != cms.InputTag(''):
298  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
299  if btagInfo == 'pfDeepCMVANegativeTagInfos':
300  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCMVATagInfos.clone(pfDeepCSVTagInfos = cms.InputTag(btagPrefix+'pfDeepCSVTagInfos'+labelName+postfix), ipInfoSrc = cms.InputTag(btagPrefix+"pfImpactParameterTagInfos"+labelName+postfix), muInfoSrc = cms.InputTag(btagPrefix+"softPFMuonsTagInfos"+labelName+postfix), elInfoSrc = cms.InputTag(btagPrefix+"softPFElectronsTagInfos"+labelName+postfix)))
301  if svClustering or fatJets != cms.InputTag(''):
302  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
303  if btagInfo == 'pfDeepCMVAPositiveTagInfos':
304  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfDeepCMVATagInfos.clone(pfDeepCSVTagInfos = cms.InputTag(btagPrefix+'pfDeepCSVTagInfos'+labelName+postfix), ipInfoSrc = cms.InputTag(btagPrefix+"pfImpactParameterTagInfos"+labelName+postfix), muInfoSrc = cms.InputTag(btagPrefix+"softPFMuonsTagInfos"+labelName+postfix), elInfoSrc = cms.InputTag(btagPrefix+"softPFElectronsTagInfos"+labelName+postfix)))
305  if svClustering or fatJets != cms.InputTag(''):
306  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
307  if btagInfo == 'pfInclusiveSecondaryVertexFinderTagInfos':
308  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
309  if svClustering or fatJets != cms.InputTag(''):
310  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
311  if btagInfo == 'pfInclusiveSecondaryVertexFinderAK8TagInfos':
312  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderAK8TagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterAK8TagInfos'+labelName+postfix), extSVCollection=svSource))
313  if svClustering or fatJets != cms.InputTag(''):
314  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
315  if btagInfo == 'pfBoostedDoubleSVAK8TagInfos':
316  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfBoostedDoubleSVAK8TagInfos.clone(svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderAK8TagInfos'+labelName+postfix)))
317  if btagInfo == 'pfInclusiveSecondaryVertexFinderCA15TagInfos':
318  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderCA15TagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterCA15TagInfos'+labelName+postfix), extSVCollection=svSource))
319  if svClustering or fatJets != cms.InputTag(''):
320  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
321  if btagInfo == 'pfBoostedDoubleSVCA15TagInfos':
322  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfBoostedDoubleSVCA15TagInfos.clone(svTagInfos = cms.InputTag(btagPrefix+'pfInclusiveSecondaryVertexFinderCA15TagInfos'+labelName+postfix)))
323  if btagInfo == 'pfInclusiveSecondaryVertexFinderCvsLTagInfos':
324  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderCvsLTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSourceCvsL))
325  if svClustering or fatJets != cms.InputTag(''):
326  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
327  if btagInfo == 'pfInclusiveSecondaryVertexFinderNegativeCvsLTagInfos':
328  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderNegativeCvsLTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSourceCvsL))
329  if svClustering or fatJets != cms.InputTag(''):
330  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
331  if btagInfo == 'pfSecondaryVertexNegativeTagInfos':
332  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfSecondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix)))
333  if tightBTagNTkHits:
334  _btagInfo = getattr(process, btagPrefix+btagInfo+labelName+postfix)
335  _btagInfo.trackSelection.pixelHitsMin = cms.uint32(2)
336  _btagInfo.trackSelection.totalHitsMin = cms.uint32(8)
337  if btagInfo == 'pfInclusiveSecondaryVertexFinderNegativeTagInfos':
338  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
339  if svClustering or fatJets != cms.InputTag(''):
340  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
341  if btagInfo == 'impactParameterTagInfos':
342  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.impactParameterTagInfos.clone(jetTracks = cms.InputTag('jetTracksAssociatorAtVertex'+labelName+postfix), primaryVertex=pvSource))
343  if btagInfo == 'secondaryVertexTagInfos':
344  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.secondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
345  if btagInfo == 'inclusiveSecondaryVertexFinderTagInfos':
346  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
347  if svClustering or fatJets != cms.InputTag(''):
348  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
349  if btagInfo == 'inclusiveSecondaryVertexFinderFilteredTagInfos':
350  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
351  if svClustering or fatJets != cms.InputTag(''):
352  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
353  if btagInfo == 'secondaryVertexNegativeTagInfos':
354  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.secondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
355  if btagInfo == 'inclusiveSecondaryVertexFinderNegativeTagInfos':
356  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
357  if svClustering or fatJets != cms.InputTag(''):
358  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
359  if btagInfo == 'inclusiveSecondaryVertexFinderFilteredNegativeTagInfos':
360  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(btagPrefix+'impactParameterTagInfos'+labelName+postfix)))
361  if svClustering or fatJets != cms.InputTag(''):
362  setupSVClustering(getattr(process, btagPrefix+btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
363  if btagInfo == 'softMuonTagInfos':
364  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.softMuonTagInfos.clone(jets = jetSource, primaryVertex=pvSource))
365  if btagInfo == 'softPFMuonsTagInfos':
366  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.softPFMuonsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
367  if btagInfo == 'softPFElectronsTagInfos':
368  setattr(process, btagPrefix+btagInfo+labelName+postfix, btag.softPFElectronsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
369  acceptedTagInfos.append(btagInfo)
370  elif hasattr(toptag, btagInfo) :
371  acceptedTagInfos.append(btagInfo)
372  else:
373  print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagInfo)
374  ## setup all required btagDiscriminators
375  acceptedBtagDiscriminators = list()
376  for discriminator_name in btagDiscriminators :
377  btagDiscr = discriminator_name.split(':')[0] #split input tag to get the producer label
378  #print discriminator_name, '-->', btagDiscr
379  if hasattr(btag,btagDiscr):
380  newDiscr = btagPrefix+btagDiscr+labelName+postfix #new discriminator name
381  if hasattr(process, newDiscr):
382  print 'skipping %s as it has already been loaded in the process' % newDiscr #check that we did not create this producer before, if so skip
383  pass
384  elif hasattr(getattr(btag, btagDiscr), 'tagInfos'):
385  setattr(
386  process, newDiscr,
387  getattr(btag, btagDiscr).clone(
388  tagInfos = cms.VInputTag(
389  *[ cms.InputTag(btagPrefix+x+labelName+postfix) \
390  for x in supportedBtagDiscr[discriminator_name][0] ]
391  )
392  )
393  )
394  elif hasattr(getattr(btag, btagDiscr), 'src'):
395  setattr(
396  process, newDiscr,
397  getattr(btag, btagDiscr).clone(
398  src = cms.InputTag(btagPrefix+supportedBtagDiscr[discriminator_name][0][0]+labelName+postfix)
399  )
400  )
401  else:
402  raise ValueError('I do not know how to update %s it does not have neither "tagInfos" nor "src" attributes' % btagDiscr)
403  acceptedBtagDiscriminators.append(discriminator_name)
404  else:
405  print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagDiscr)
406  ## replace corresponding tags for pat jet production
407  patJets.tagInfoSources = cms.VInputTag( *[ cms.InputTag(btagPrefix+x+labelName+postfix) for x in acceptedTagInfos ] )
408  patJets.discriminatorSources = cms.VInputTag(*[
409  cms.InputTag(btagPrefix+x+labelName+postfix) \
410  if ':' not in x else \
411  cms.InputTag(btagPrefix+x.split(':')[0]+labelName+postfix+':'+x.split(':')[1]) \
412  for x in acceptedBtagDiscriminators
413  ])
414  if len(acceptedBtagDiscriminators) > 0 :
415  patJets.addBTagInfo = True
416  ## if re-running IVF
417  if runIVF:
418  if not tightBTagNTkHits:
419  if pvSource.getModuleLabel() == 'offlineSlimmedPrimaryVertices': ## MiniAOD case
420  if not runIVFforCTagOnly: rerunningIVFMiniAOD()
421  else:
422  rerunningIVF()
423  from PhysicsTools.PatAlgos.tools.helpers import loadWithPrefix
424  ivfbTagInfos = ['pfInclusiveSecondaryVertexFinderTagInfos', 'pfInclusiveSecondaryVertexFinderAK8TagInfos', 'pfInclusiveSecondaryVertexFinderCA15TagInfos']
425  if any(i in acceptedTagInfos for i in ivfbTagInfos) and not runIVFforCTagOnly:
426  if not hasattr( process, btagPrefix+'inclusiveCandidateVertexFinder' ):
427  loadWithPrefix(process, 'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff', btagPrefix)
428  if tightBTagNTkHits:
429  if hasattr( process, btagPrefix+'inclusiveCandidateVertexFinder' ):
430  _temp = getattr(process, btagPrefix+'inclusiveCandidateVertexFinder')
431  _temp.minHits = cms.uint32(8)
432  ## MiniAOD case
433  if pvSource.getModuleLabel() == 'offlineSlimmedPrimaryVertices':
434  if hasattr( process, btagPrefix+'inclusiveCandidateVertexFinder' ):
435  _temp = getattr(process, btagPrefix+'inclusiveCandidateVertexFinder')
436  _temp.primaryVertices = pvSource
437  _temp.tracks = pfCandidates
438  if hasattr( process, btagPrefix+'candidateVertexArbitrator' ):
439  _temp = getattr(process, btagPrefix+'candidateVertexArbitrator')
440  _temp.primaryVertices = pvSource
441  _temp.tracks = pfCandidates
442  _temp.trackMinLayers = cms.int32(0) ## number of layers not available in MiniAOD so this cut needs to be disabled
443  if hasattr( process, btagPrefix+'inclusiveCandidateSecondaryVertices' ) and not hasattr( process, svSource.getModuleLabel() ):
444  setattr(process, svSource.getModuleLabel(), getattr(process, btagPrefix+'inclusiveCandidateSecondaryVertices').clone() )
445  if any(i in acceptedTagInfos for i in ivfcTagInfos):
446  if not hasattr( process, btagPrefix+'inclusiveCandidateVertexFinderCvsL' ):
447  loadWithPrefix(process, 'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff', btagPrefix)
448  if tightBTagNTkHits:
449  if hasattr( process, btagPrefix+'inclusiveCandidateVertexFinderCvsL' ):
450  _temp = getattr(process, btagPrefix+'inclusiveCandidateVertexFinderCvsL')
451  _temp.minHits = cms.uint32(8)
452  ## MiniAOD case
453  if pvSource.getModuleLabel() == 'offlineSlimmedPrimaryVertices':
454  if hasattr( process, btagPrefix+'inclusiveCandidateVertexFinderCvsL' ):
455  _temp = getattr(process, btagPrefix+'inclusiveCandidateVertexFinderCvsL')
456  _temp.primaryVertices = pvSource
457  _temp.tracks = pfCandidates
458  if hasattr( process, btagPrefix+'candidateVertexArbitratorCvsL' ):
459  _temp = getattr(process, btagPrefix+'candidateVertexArbitratorCvsL')
460  _temp.primaryVertices = pvSource
461  _temp.tracks = pfCandidates
462  _temp.trackMinLayers = cms.int32(0) ## number of layers not available in MiniAOD so this cut needs to be disabled
463  if hasattr( process, btagPrefix+'inclusiveCandidateSecondaryVerticesCvsL' ) and not hasattr( process, svSourceCvsL.getModuleLabel() ):
464  setattr(process, svSourceCvsL.getModuleLabel(), getattr(process, btagPrefix+'inclusiveCandidateSecondaryVerticesCvsL').clone() )
465  if 'inclusiveSecondaryVertexFinderTagInfos' in acceptedTagInfos:
466  if not hasattr( process, 'inclusiveVertexing' ):
467  process.load( 'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
468  if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
469  if not hasattr( process, 'inclusiveVertexing' ):
470  process.load( 'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
471  if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
472  if not hasattr( process, 'inclusiveSecondaryVerticesFiltered' ):
473  process.load( 'RecoBTag.SecondaryVertex.inclusiveSecondaryVerticesFiltered_cfi' )
474  if not hasattr( process, 'bToCharmDecayVertexMerged' ):
475  process.load( 'RecoBTag.SecondaryVertex.bToCharmDecayVertexMerger_cfi' )
476  if 'caTopTagInfos' in acceptedTagInfos :
477  patJets.addTagInfos = True
478  if not hasattr( process, 'caTopTagInfos' ) and not hasattr( process, 'caTopTagInfosAK8' ):
479  process.load( 'RecoJets.JetProducers.caTopTaggers_cff' )
480 
def rerunningIVFMiniAOD
Definition: jetTools.py:1482
def setupSVClustering
Definition: jetTools.py:162
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:34
def rerunningIVF
Definition: jetTools.py:1474
def loadWithPrefix
Definition: helpers.py:18
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
def jetTools.setupJetCorrections (   process,
  knownModules,
  jetCorrections,
  jetSource,
  pvSource,
  patJets,
  labelName,
  postfix 
)

Definition at line 24 of file jetTools.py.

References clone(), KineDebug3.count(), and split.

Referenced by jetTools.AddJetCollection.toolCode(), and jetTools.UpdateJetCollection.toolCode().

24 
25 def setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, patJets, labelName, postfix):
26  ## determine type of jet constituents from jetSource; supported
27  ## jet constituent types are calo, pf, jpt, for pf also particleflow
28  ## is aloowed as part of the jetSource label, which might be used
29  ## in CommonTools.ParticleFlow
30  _type="NONE"
31  if jetCorrections[0].count('PF')>0:
32  _type='PF'
33  elif jetCorrections[0].count('Calo')>0:
34  _type='Calo'
35  elif jetCorrections[0].count('JPT')>0:
36  _type='JPT'
37  else:
38  raise TypeError("In addJetCollection: Jet energy corrections are only supported for PF, JPT and Calo jets.")
39  from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import patJetCorrFactors
40  if 'patJetCorrFactors'+labelName+postfix in knownModules :
41  _newPatJetCorrFactors=getattr(process, 'patJetCorrFactors'+labelName+postfix)
42  _newPatJetCorrFactors.src=jetSource
43  _newPatJetCorrFactors.primaryVertices=pvSource
44  else:
45  setattr(process, 'patJetCorrFactors'+labelName+postfix, patJetCorrFactors.clone(src=jetSource, primaryVertices=pvSource))
46  _newPatJetCorrFactors=getattr(process, "patJetCorrFactors"+labelName+postfix)
47  _newPatJetCorrFactors.payload=jetCorrections[0]
48  _newPatJetCorrFactors.levels=jetCorrections[1]
49  ## check whether L1Offset or L1FastJet is part of levels
50  error=False
51  for x in jetCorrections[1]:
52  if x == 'L1Offset' :
53  if not error :
54  _newPatJetCorrFactors.useNPV=True
55  _newPatJetCorrFactors.primaryVertices='offlinePrimaryVertices'
56  _newPatJetCorrFactors.useRho=False
57  ## we set this to True now as a L1 correction type should appear only once
58  ## otherwise levels is miss configured
59  error=True
60  else:
61  raise ValueError, "In addJetCollection: Correction levels for jet energy corrections are miss configured. An L1 correction type should appear not more than \
62  once. Check the list of correction levels you requested to be applied: ", jetCorrections[1]
63  if x == 'L1FastJet' :
64  if not error :
65  if _type == "JPT" :
66  raise TypeError("In addJetCollection: L1FastJet corrections are only supported for PF and Calo jets.")
67  ## configure module
68  _newPatJetCorrFactors.useRho=True
69  if "PF" in _type :
70  _newPatJetCorrFactors.rho=cms.InputTag('fixedGridRhoFastjetAll')
71  else :
72  _newPatJetCorrFactors.rho=cms.InputTag('fixedGridRhoFastjetAllCalo')
73  ## we set this to True now as a L1 correction type should appear only once
74  ## otherwise levels is miss configured
75  error=True
76  else:
77  raise ValueError, "In addJetCollection: Correction levels for jet energy corrections are miss configured. An L1 correction type should appear not more than \
78  once. Check the list of correction levels you requested to be applied: ", jetCorrections[1]
79  patJets.jetCorrFactorsSource=cms.VInputTag(cms.InputTag('patJetCorrFactors'+labelName+postfix))
80  ## configure MET(Type1) corrections
81  if jetCorrections[2].lower() != 'none' and jetCorrections[2] != '':
82  if not jetCorrections[2].lower() == 'type-1' and not jetCorrections[2].lower() == 'type-2':
83  raise valueError, "In addJetCollection: Wrong choice of MET corrections for new jet collection. Possible choices are None (or empty string), Type-1, Type-2 (i.e.\
84  Type-1 and Type-2 corrections applied). This choice is not case sensitive. Your choice was: ", jetCorrections[2]
85  if _type == "JPT":
86  raise ValueError("In addJecCollection: MET(type1) corrections are not supported for JPTJets. Please set the MET-LABEL to \"None\" (as string in quatiation \
87  marks) and use raw tcMET together with JPTJets.")
88  ## set up jet correctors for MET corrections
89  process.load( "JetMETCorrections.Configuration.JetCorrectorsAllAlgos_cff") # FIXME: This adds a lot of garbage
90 
91  _payloadType = jetCorrections[0].split(_type)[0].lower()+_type
92  if "PF" in _type :
93  setattr(process, jetCorrections[0]+'L1FastJet', getattr(process, _payloadType+'L1FastjetCorrector').clone(srcRho=cms.InputTag('fixedGridRhoFastjetAll')))
94  else :
95  setattr(process, jetCorrections[0]+'L1FastJet', getattr(process, _payloadType+'L1FastjetCorrector').clone(srcRho=cms.InputTag('fixedGridRhoFastjetAllCalo')))
96  setattr(process, jetCorrections[0]+'L1Offset', getattr(process, _payloadType+'L1OffsetCorrector').clone())
97  setattr(process, jetCorrections[0]+'L2Relative', getattr(process, _payloadType+'L2RelativeCorrector').clone())
98  setattr(process, jetCorrections[0]+'L3Absolute', getattr(process, _payloadType+'L3AbsoluteCorrector').clone())
99  setattr(process, jetCorrections[0]+'L2L3Residual', getattr(process, _payloadType+'ResidualCorrector').clone())
100  setattr(process, jetCorrections[0]+'CombinedCorrector', cms.EDProducer( 'ChainedJetCorrectorProducer', correctors = cms.VInputTag()))
101  for x in jetCorrections[1]:
102  if x != 'L1FastJet' and x != 'L1Offset' and x != 'L2Relative' and x != 'L3Absolute' and x != 'L2L3Residual':
103  raise ValueError('In addJetCollection: Unsupported JEC for MET(Type1). Currently supported jet correction levels are L1FastJet, L1Offset, L2Relative, L3Asolute, L2L3Residual. Requested was: %s'%(x))
104  else:
105  _corrector = _payloadType
106  if x == 'L1FastJet':
107  _corrector += 'L1Fastjet'
108  elif x == 'L2L3Residual':
109  _corrector += 'Residual'
110  else:
111  _corrector += x
112  _corrector += 'Corrector'
113  getattr(process, jetCorrections[0]+'CombinedCorrector').correctors.append(cms.InputTag(_corrector))
114 
115  ## set up MET(Type1) correction modules
116  _labelCorrName = labelName
117  if labelName != '':
118  _labelCorrName = 'For' + labelName
119  if _type == 'Calo':
120  from JetMETCorrections.Type1MET.correctionTermsCaloMet_cff import corrCaloMetType1
121  from JetMETCorrections.Type1MET.correctionTermsCaloMet_cff import corrCaloMetType2
122  from JetMETCorrections.Type1MET.correctedMet_cff import caloMetT1
123  from JetMETCorrections.Type1MET.correctedMet_cff import caloMetT1T2
124  setattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, corrCaloMetType1.clone(src=jetSource,srcMET = "caloMetM",jetCorrLabel = cms.InputTag(jetCorrections[0]+'CombinedCorrector')))
125  setattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr2'+postfix, corrCaloMetType2.clone(srcUnclEnergySums = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type2'),cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'offset'),cms.InputTag('muCaloMetCorr'))))
126  setattr(process,jetCorrections[0]+_labelCorrName+'Type1CorMet'+postfix, caloMetT1.clone(src = "caloMetM", srcCorrections = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type1'))))
127  setattr(process,jetCorrections[0]+_labelCorrName+'Type1p2CorMet'+postfix, caloMetT1T2.clone(src = "caloMetM", srcCorrections = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type1'), cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr2'+postfix))))
128 
129  elif _type == 'PF':
131  from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import pfCandsNotInJetsPtrForMetCorr
132  from JetMETCorrections.Type1MET.correctionTermsPfMetType1Type2_cff import pfCandsNotInJetsForMetCorr
137  from JetMETCorrections.Type1MET.correctedMet_cff import pfMetT1T2
138  setattr(process,jetCorrections[0]+_labelCorrName+'pfJetsPtrForMetCorr'+postfix,pfJetsPtrForMetCorr.clone(src = jetSource))
139  setattr(process,jetCorrections[0]+_labelCorrName+'pfCandsNotInJetsPtrForMetCorr'+postfix,pfCandsNotInJetsPtrForMetCorr.clone(topCollection = jetCorrections[0]+_labelCorrName+'pfJetsPtrForMetCorr'+postfix))
140  setattr(process,jetCorrections[0]+_labelCorrName+'pfCandsNotInJetsForMetCorr'+postfix,pfCandsNotInJetsForMetCorr.clone(src = jetCorrections[0]+_labelCorrName+'pfCandsNotInJetsPtrForMetCorr'+postfix))
141  setattr(process,jetCorrections[0]+_labelCorrName+'CandMETcorr'+postfix, pfCandMETcorr.clone(src = cms.InputTag(jetCorrections[0]+_labelCorrName+'pfCandsNotInJetsForMetCorr'+postfix)))
142  setattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, corrPfMetType1.clone(src = jetSource, jetCorrLabel = cms.InputTag(jetCorrections[0]+'CombinedCorrector'))) # FIXME: Originally w/o jet corrections?
143  setattr(process,jetCorrections[0]+_labelCorrName+'corrPfMetType2'+postfix, corrPfMetType2.clone(srcUnclEnergySums = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type2'),cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'offset'),cms.InputTag(jetCorrections[0]+_labelCorrName+'CandMETcorr'+postfix))))
144  setattr(process,jetCorrections[0]+_labelCorrName+'Type1CorMet'+postfix, pfMetT1.clone(srcCorrections = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type1'))))
145  setattr(process,jetCorrections[0]+_labelCorrName+'Type1p2CorMet'+postfix, pfMetT1T2.clone(srcCorrections = cms.VInputTag(cms.InputTag(jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix, 'type1'), jetCorrections[0]+_labelCorrName+'corrPfMetType2'+postfix)))
146 
147  ## common configuration for Calo and PF
148  if ('L1FastJet' in jetCorrections[1] or 'L1Fastjet' in jetCorrections[1]):
149  getattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix).offsetCorrLabel = cms.InputTag(jetCorrections[0]+'L1FastJet')
150  #FIXME: What is wrong here?
151  #elif ('L1Offset' in jetCorrections[1]):
152  #getattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix).offsetCorrLabel = cms.InputTag(jetCorrections[0]+'L1Offset')
153  else:
154  getattr(process,jetCorrections[0]+_labelCorrName+'JetMETcorr'+postfix).offsetCorrLabel = cms.InputTag('')
155 
157  if jetCorrections[2].lower() == 'type-1':
158  setattr(process, 'patMETs'+labelName+postfix, patMETs.clone(metSource = cms.InputTag(jetCorrections[0]+_labelCorrName+'Type1CorMet'+postfix), addMuonCorrections = False))
159  elif jetCorrections[2].lower() == 'type-2':
160  setattr(process, 'patMETs'+labelName+postfix, patMETs.clone(metSource = cms.InputTag(jetCorrections[0]+_labelCorrName+'Type1p2CorMet'+postfix), addMuonCorrections = False))
161 
def setupJetCorrections
Definition: jetTools.py:24
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
double split
Definition: MVATrainer.cc:139
def jetTools.setupSVClustering (   btagInfo,
  svClustering,
  algo,
  rParam,
  fatJets = cms.InputTag(''),
  groomedFatJets = cms.InputTag('') 
)

Definition at line 162 of file jetTools.py.

References setupBTagging().

Referenced by setupBTagging().

163 def setupSVClustering(btagInfo, svClustering, algo, rParam, fatJets=cms.InputTag(''), groomedFatJets=cms.InputTag('')):
164  btagInfo.useSVClustering = cms.bool(svClustering)
165  btagInfo.jetAlgorithm = cms.string(algo)
166  btagInfo.rParam = cms.double(rParam)
167  ## if the jet is actually a subjet
168  if fatJets != cms.InputTag(''):
169  btagInfo.fatJets = fatJets
170  if groomedFatJets != cms.InputTag(''):
171  btagInfo.groomedFatJets = groomedFatJets
172 
def setupSVClustering
Definition: jetTools.py:162
def jetTools.undefinedLabelName (   obj)

Definition at line 1458 of file jetTools.py.

Referenced by jetTools.AddJetCollection.toolCode().

1459 def undefinedLabelName(obj):
1460  print "-------------------------------------------------------"
1461  print " Error: the jet 'labelName' is not defined."
1462  print " All added jets must have 'labelName' defined."
1463  print "-------------------------------------------------------"
1464  raise KeyError("Undefined jet 'labelName' used in '"+obj._label+"'")
def undefinedLabelName
Definition: jetTools.py:1458
def jetTools.unsupportedJetAlgorithm (   obj)

Definition at line 1465 of file jetTools.py.

Referenced by jetTools.AddJetCollection.toolCode(), and jetTools.UpdateJetCollection.toolCode().

1466 def unsupportedJetAlgorithm(obj):
1467  print "-------------------------------------------------------"
1468  print " Error: Unsupported jet algorithm detected."
1469  print " The supported algorithms are:"
1470  for key in supportedJetAlgos.keys():
1471  print " " + key.upper() + ", " + key.lower() + ": " + supportedJetAlgos[key]
1472  print "-------------------------------------------------------"
1473  raise KeyError("Unsupported jet algorithm used in '"+obj._label+"'")
def unsupportedJetAlgorithm
Definition: jetTools.py:1465

Variable Documentation

dictionary jetTools.supportedJetAlgos
Initial value:
1 = {
2  'ak' : 'AntiKt'
3  , 'ca' : 'CambridgeAachen'
4  , 'kt' : 'Kt'
5 }

dictionary with supported jet clustering algorithms

Definition at line 10 of file jetTools.py.