CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes | Static Private Attributes
jetTools.AddJetCollection Class Reference
Inheritance diagram for jetTools.AddJetCollection:

Public Member Functions

def __call__
 
def __init__
 
def getDefaultParameters
 
def toolCode
 

Private Attributes

 _comment
 add comments More...
 
 _parameters
 initialization of the base class More...
 

Static Private Attributes

tuple _defaultParameters = dicttypes.SortedKeysDict()
 
string _label = 'addJetCollection'
 

Detailed Description

Tool to add a new jet collection to your PAT Tuple or to modify an existing one.

Definition at line 330 of file jetTools.py.

Constructor & Destructor Documentation

def jetTools.AddJetCollection.__init__ (   self)
Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase to be usable in the configEditor.

Definition at line 337 of file jetTools.py.

References editorTools.UserCodeTool._defaultParameters, heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool._defaultParameters, heavyIonTools.ProductionDefaults._defaultParameters, editorTools.ChangeSource._defaultParameters, cmsswVersionTools.PickRelValInputFiles._defaultParameters, coreTools.RemoveMCMatching._defaultParameters, heavyIonTools.SelectionDefaults._defaultParameters, heavyIonTools.DisbaleMonteCarloDeps._defaultParameters, jetTools.AddJetCollection._defaultParameters, root::helper::RootFunctionAdapter< F, args >.addParameter(), root::helper::RootFunctionHelper< F, args, Tag >.addParameter(), ParameterMgr.addParameter(), fit::RootMinuit< Function >.addParameter(), DropBoxMetadata::Parameters.addParameter(), PythonParameterSet.addParameter(), LutXml.addParameter(), ConfigToolBase.ConfigToolBase.addParameter(), and edm::ParameterSet.addParameter().

338  def __init__(self):
339  """
340  Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase to be usable in the configEditor.
341  """
342  ## initialization of the base class
343  ConfigToolBase.__init__(self)
344  ## add all parameters that should be known to the class
345  self.addParameter(self._defaultParameters,'labelName', 'UNDEFINED', "Label name of the new patJet collection.", str)
346  self.addParameter(self._defaultParameters,'postfix','', "Postfix from usePF2PAT.", str)
347  self.addParameter(self._defaultParameters,'jetSource','', "Label of the input collection from which the new patJet collection should be created", cms.InputTag)
348  self.addParameter(self._defaultParameters,'pfCandidates',cms.InputTag('particleFlow'), "Label of the input collection for candidatecandidatese used in b-tagging", cms.InputTag)
349  self.addParameter(self._defaultParameters,'explicitJTA', False, "Use explicit jet-track association")
350  self.addParameter(self._defaultParameters,'pvSource',cms.InputTag('offlinePrimaryVertices'), "Label of the input collection for primary vertices used in b-tagging", cms.InputTag)
351  self.addParameter(self._defaultParameters,'svSource',cms.InputTag('inclusiveCandidateSecondaryVertices'), "Label of the input collection for IVF vertices used in b-tagging", cms.InputTag)
352  self.addParameter(self._defaultParameters,'elSource',cms.InputTag('gedGsfElectrons'), "Label of the input collection for electrons used in b-tagging", cms.InputTag)
353  self.addParameter(self._defaultParameters,'muSource',cms.InputTag('muons'), "Label of the input collection for muons used in b-tagging", cms.InputTag)
354  self.addParameter(self._defaultParameters,'runIVF', False, "Re-run IVF secondary vertex reconstruction")
355  self.addParameter(self._defaultParameters,'svClustering', False, "Secondary vertices ghost-associated to jets using jet clustering (mostly intended for subjets)")
356  self.addParameter(self._defaultParameters,'fatJets', cms.InputTag(''), "Fat jet collection used for secondary vertex clustering", cms.InputTag)
357  self.addParameter(self._defaultParameters,'groomedFatJets', cms.InputTag(''), "Groomed fat jet collection used for secondary vertex clustering", cms.InputTag)
358  self.addParameter(self._defaultParameters,'algo', 'AK', "Jet algorithm of the input collection from which the new patJet collection should be created")
359  self.addParameter(self._defaultParameters,'rParam', 0.4, "Jet size (distance parameter R used in jet clustering)")
360  self.addParameter(self._defaultParameters,'getJetMCFlavour', True, "Get jet MC truth flavour")
361  self.addParameter(self._defaultParameters,'genJetCollection', cms.InputTag("ak4GenJets"), "GenJet collection to match to", cms.InputTag)
362  self.addParameter(self._defaultParameters,'genParticles', cms.InputTag("genParticles"), "GenParticle collection to be used", cms.InputTag)
363  self.addParameter(self._defaultParameters,'jetCorrections',None, "Add all relevant information about jet energy corrections that you want to be added to your new patJet \
364  collection. The format has to be given in a python tuple of type: (\'AK4Calo\',[\'L2Relative\', \'L3Absolute\'], patMet). Here the first argument corresponds to the payload \
365  in the CMS Conditions database for the given jet collection; the second argument corresponds to the jet energy correction levels that you want to be embedded into your \
366  new patJet collection. This should be given as a list of strings. Available values are L1Offset, L1FastJet, L1JPTOffset, L2Relative, L3Absolute, L5Falvour, L7Parton; the \
367  third argument indicates whether MET(Type1/2) corrections should be applied corresponding to the new patJetCollection. If so a new patMet collection will be added to your PAT \
368  Tuple in addition to the raw patMet. This new patMet collection will have the MET(Type1/2) corrections applied. The argument can have the following types: \'type-1\' for \
369  type-1 corrected MET; \'type-2\' for type-1 plus type-2 corrected MET; \'\' or \'none\' if no further MET corrections should be applied to your MET. The arguments \'type-1\' \
370  and \'type-2\' are not case sensitive.", tuple, acceptNoneValue=True)
371  self.addParameter(self._defaultParameters,'btagDiscriminators',['None'], "If you are interested in btagging, in most cases just the labels of the btag discriminators that \
372  you are interested in is all relevant information that you need for a high level analysis. Add here all btag discriminators, that you are interested in as a list of strings. \
373  If this list is empty no btag discriminator information will be added to your new patJet collection.", allowedValues=supportedBtagDiscr.keys(),Type=list)
374  self.addParameter(self._defaultParameters,'btagInfos',['None'], "The btagInfos objects contain all relevant information from which all discriminators of a certain \
375  type have been calculated. You might be interested in keeping this information for low level tests or to re-calculate some discriminators from hand. Note that this information \
376  on the one hand can be very space consuming and that it is not necessary to access the pre-calculated btag discriminator information that has been derived from it. Only in very \
377  special cases the btagInfos might really be needed in your analysis. Add here all btagInfos, that you are interested in as a list of strings. If this list is empty no btagInfos \
378  will be added to your new patJet collection.", allowedValues=supportedBtagInfos,Type=list)
379  self.addParameter(self._defaultParameters,'jetTrackAssociation',False, "Add JetTrackAssociation and JetCharge from reconstructed tracks to your new patJet collection. This \
380  switch is only of relevance if you don\'t add any btag information to your new patJet collection (btagDiscriminators or btagInfos) and still want this information added to \
381  your new patJetCollection. If btag information of any form is added to the new patJet collection this information will be added automatically.")
382  self.addParameter(self._defaultParameters,'outputModules',['out'],"Add a list of all output modules to which you would like the new jet collection to be added. Usually this is \
383  just one single output module with name \'out\', which corresponds also the default configuration of the tool. There is cases though where you might want to add this collection \
384  to more than one output module.")
385  ## set defaults
386  self._parameters=copy.deepcopy(self._defaultParameters)
387  ## add comments
388  self._comment = "This is a tool to add more patJet collectinos to your PAT Tuple or to re-configure the default collection. You can add and embed additional information like jet\
389  energy correction factors, btag infomration and generator match information to the new patJet collection depending on the parameters that you pass on to this function. Consult \
390  the descriptions of each parameter for more information."
_parameters
initialization of the base class
Definition: jetTools.py:385
_comment
add comments
Definition: jetTools.py:387

Member Function Documentation

def jetTools.AddJetCollection.__call__ (   self,
  process,
  labelName = None,
  postfix = None,
  jetSource = None,
  pfCandidates = None,
  explicitJTA = None,
  pvSource = None,
  svSource = None,
  elSource = None,
  muSource = None,
  runIVF = None,
  svClustering = None,
  fatJets = None,
  groomedFatJets = None,
  algo = None,
  rParam = None,
  getJetMCFlavour = None,
  genJetCollection = None,
  genParticles = None,
  jetCorrections = None,
  btagDiscriminators = None,
  btagInfos = None,
  jetTrackAssociation = None,
  outputModules = None 
)
Function call wrapper. This will check the parameters and call the actual implementation that
can be found in toolCode via the base class function apply.

Definition at line 397 of file jetTools.py.

References editorTools.UserCodeTool._defaultParameters, heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool._defaultParameters, heavyIonTools.ProductionDefaults._defaultParameters, editorTools.ChangeSource._defaultParameters, cmsswVersionTools.PickRelValInputFiles._defaultParameters, coreTools.RemoveMCMatching._defaultParameters, heavyIonTools.SelectionDefaults._defaultParameters, heavyIonTools.DisbaleMonteCarloDeps._defaultParameters, jetTools.AddJetCollection._defaultParameters, SignedImpactParameter3D.apply(), gen::PhotosInterfaceBase.apply(), SignedTransverseImpactParameter.apply(), MatrixReader.MatrixReader.apply, SignedDecayLength3D.apply(), HcalDeterministicFit.apply(), DummyOOTPileupCorrection.apply(), gen::PhotosppInterface.apply(), FWPSetCellEditor.apply(), gen::PhotosInterface.apply(), SurveyParameters.apply(), FWGUIEventFilter.apply(), DeviationsFromFileSensor2D.apply(), BeamSpotAlignmentParameters.apply(), RigidBodyAlignmentParameters.apply(), MatRepSparse< T, D1, D2, S, F >.apply(), ConfigToolBase.ConfigToolBase.apply(), OOTPileupCorrData.apply(), AlignmentParameters.apply(), BowedSurfaceAlignmentParameters.apply(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool.apply(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ApplyTool.apply(), AbsOOTPileupCorrection.apply(), TwoBowedSurfacesAlignmentParameters.apply(), Vispa.Gui.BoxContentDialog.BoxContentDialog.apply(), reco::modules::TrackerTrackHitFilter::Rule.apply(), PulseShapeFitOOTPileupCorrection.apply(), Vispa.Plugins.ConfigEditor.ToolDialog.ToolDialog.apply(), reco::Add< T >.apply(), reco::Sub< T >.apply(), reco::Mul< T >.apply(), reco::Div< T >.apply(), cmsswVersionTools.PickRelValInputFiles.apply(), reco::And< bool >.apply(), reco::Or< bool >.apply(), reco::Less< T >.apply(), reco::LessEqual< T >.apply(), reco::More< T >.apply(), reco::MoreEqual< T >.apply(), reco::Equal< T >.apply(), npstat::ArrayND< Numeric >.apply(), npstat::ArrayND< Num1, Len1, Dim1 >.apply(), npstat::ArrayND< Numeric, StackLen, StackDim >.apply(), Config.ProcessModifier.apply(), ora::OraMainTable.setParameter(), ora::IMainTable.setParameter(), PedeReader.setParameter(), ora::PoolMainTable.setParameter(), QIE8Simulator.setParameter(), AbsElectronicODERHS.setParameter(), IntegratedCalibrationBase.setParameter(), SiStripLorentzAngleCalibration.setParameter(), SiPixelLorentzAngleCalibration.setParameter(), SiStripBackplaneCalibration.setParameter(), fit::RootMinuit< Function >.setParameter(), and ConfigToolBase.ConfigToolBase.setParameter().

398  def __call__(self,process,labelName=None,postfix=None,jetSource=None,pfCandidates=None,explicitJTA=None,pvSource=None,svSource=None,elSource=None,muSource=None,runIVF=None,svClustering=None,fatJets=None,groomedFatJets=None,algo=None,rParam=None,getJetMCFlavour=None,genJetCollection=None,genParticles=None,jetCorrections=None,btagDiscriminators=None,btagInfos=None,jetTrackAssociation=None,outputModules=None):
399  """
400  Function call wrapper. This will check the parameters and call the actual implementation that
401  can be found in toolCode via the base class function apply.
402  """
403  if labelName is None:
404  labelName=self._defaultParameters['labelName'].value
405  self.setParameter('labelName', labelName)
406  if postfix is None:
407  postfix=self._defaultParameters['postfix'].value
408  self.setParameter('postfix', postfix)
409  if jetSource is None:
410  jetSource=self._defaultParameters['jetSource'].value
411  self.setParameter('jetSource', jetSource)
412  if pfCandidates is None:
413  pfCandidates=self._defaultParameters['pfCandidates'].value
414  self.setParameter('pfCandidates', pfCandidates)
415  if explicitJTA is None:
416  explicitJTA=self._defaultParameters['explicitJTA'].value
417  self.setParameter('explicitJTA', explicitJTA)
418  if pvSource is None:
419  pvSource=self._defaultParameters['pvSource'].value
420  self.setParameter('pvSource', pvSource)
421  if svSource is None:
422  svSource=self._defaultParameters['svSource'].value
423  self.setParameter('svSource', svSource)
424  if elSource is None:
425  elSource=self._defaultParameters['elSource'].value
426  self.setParameter('elSource', elSource)
427  if muSource is None:
428  muSource=self._defaultParameters['muSource'].value
429  self.setParameter('muSource', muSource)
430  if runIVF is None:
431  runIVF=self._defaultParameters['runIVF'].value
432  self.setParameter('runIVF', runIVF)
433  if svClustering is None:
434  svClustering=self._defaultParameters['svClustering'].value
435  self.setParameter('svClustering', svClustering)
436  if fatJets is None:
437  fatJets=self._defaultParameters['fatJets'].value
438  self.setParameter('fatJets', fatJets)
439  if groomedFatJets is None:
440  groomedFatJets=self._defaultParameters['groomedFatJets'].value
441  self.setParameter('groomedFatJets', groomedFatJets)
442  if algo is None:
443  algo=self._defaultParameters['algo'].value
444  self.setParameter('algo', algo)
445  if rParam is None:
446  rParam=self._defaultParameters['rParam'].value
447  self.setParameter('rParam', rParam)
448  if getJetMCFlavour is None:
449  getJetMCFlavour=self._defaultParameters['getJetMCFlavour'].value
450  self.setParameter('getJetMCFlavour', getJetMCFlavour)
451  if genJetCollection is None:
452  genJetCollection=self._defaultParameters['genJetCollection'].value
453  self.setParameter('genJetCollection', genJetCollection)
454  if genParticles is None:
455  genParticles=self._defaultParameters['genParticles'].value
456  self.setParameter('genParticles', genParticles)
457  if jetCorrections is None:
458  jetCorrections=self._defaultParameters['jetCorrections'].value
459  self.setParameter('jetCorrections', jetCorrections)
460  if btagDiscriminators is None:
461  btagDiscriminators=self._defaultParameters['btagDiscriminators'].value
462  self.setParameter('btagDiscriminators', btagDiscriminators)
463  if btagInfos is None:
464  btagInfos=self._defaultParameters['btagInfos'].value
465  self.setParameter('btagInfos', btagInfos)
466  if jetTrackAssociation is None:
467  jetTrackAssociation=self._defaultParameters['jetTrackAssociation'].value
468  self.setParameter('jetTrackAssociation', jetTrackAssociation)
469  if outputModules is None:
470  outputModules=self._defaultParameters['outputModules'].value
471  self.setParameter('outputModules', outputModules)
472  self.apply(process)
def jetTools.AddJetCollection.getDefaultParameters (   self)
Return default parameters of the class

Definition at line 391 of file jetTools.py.

References editorTools.UserCodeTool._defaultParameters, heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool._defaultParameters, heavyIonTools.ProductionDefaults._defaultParameters, editorTools.ChangeSource._defaultParameters, cmsswVersionTools.PickRelValInputFiles._defaultParameters, coreTools.RemoveMCMatching._defaultParameters, heavyIonTools.SelectionDefaults._defaultParameters, heavyIonTools.DisbaleMonteCarloDeps._defaultParameters, and jetTools.AddJetCollection._defaultParameters.

392  def getDefaultParameters(self):
393  """
394  Return default parameters of the class
395  """
396  return self._defaultParameters
def jetTools.AddJetCollection.toolCode (   self,
  process 
)
Tool code implementation

Definition at line 473 of file jetTools.py.

References editorTools.UserCodeTool._parameters, heavyIonTools.ConfigureHeavyIons._parameters, coreTools.RunOnData._parameters, Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigFolder._parameters, Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool._parameters, heavyIonTools.ProductionDefaults._parameters, ConfigToolBase.ConfigToolBase._parameters, editorTools.ChangeSource._parameters, TAbsFitConstraint._parameters, TAbsFitParticle._parameters, coreTools.RemoveMCMatching._parameters, cmsswVersionTools.PickRelValInputFiles._parameters, heavyIonTools.SelectionDefaults._parameters, heavyIonTools.DisbaleMonteCarloDeps._parameters, jetTools.AddJetCollection._parameters, jetTools.checkJetCorrectionsFormat(), list(), jetTools.setupBTagging(), jetTools.setupJetCorrections(), split, jetTools.undefinedLabelName(), jetTools.unsupportedJetAlgorithm(), and pileupCalc.upper.

474  def toolCode(self, process):
475  """
476  Tool code implementation
477  """
478  ## initialize parameters
479  labelName=self._parameters['labelName'].value
480  postfix=self._parameters['postfix'].value
481  jetSource=self._parameters['jetSource'].value
482  pfCandidates=self._parameters['pfCandidates'].value
483  explicitJTA=self._parameters['explicitJTA'].value
484  pvSource=self._parameters['pvSource'].value
485  svSource=self._parameters['svSource'].value
486  elSource=self._parameters['elSource'].value
487  muSource=self._parameters['muSource'].value
488  runIVF=self._parameters['runIVF'].value
489  svClustering=self._parameters['svClustering'].value
490  fatJets=self._parameters['fatJets'].value
491  groomedFatJets=self._parameters['groomedFatJets'].value
492  algo=self._parameters['algo'].value
493  rParam=self._parameters['rParam'].value
494  getJetMCFlavour=self._parameters['getJetMCFlavour'].value
495  genJetCollection=self._parameters['genJetCollection'].value
496  genParticles=self._parameters['genParticles'].value
497  jetCorrections=self._parameters['jetCorrections'].value
498  btagDiscriminators=list(self._parameters['btagDiscriminators'].value)
499  btagInfos=list(self._parameters['btagInfos'].value)
500  jetTrackAssociation=self._parameters['jetTrackAssociation'].value
501  outputModules=list(self._parameters['outputModules'].value)
502 
503  ## added jets must have a defined 'labelName'
504  if labelName=='UNDEFINED':
505  undefinedLabelName(self)
506 
507  ## a list of all producer modules, which are already known to process
508  knownModules = process.producerNames().split()
509  ## determine whether btagging information is required or not
510  if btagDiscriminators.count('None')>0:
511  btagDiscriminators.remove('None')
512  if btagInfos.count('None')>0:
513  btagInfos.remove('None')
514  bTagging=(len(btagDiscriminators)>0 or len(btagInfos)>0)
515  ## check if any legacy btag discriminators are being used
516  infos = 0
517  for info in btagInfos:
518  if info.startswith('pf'): infos = infos + 1
519  if 'softpf' in info.lower(): infos = infos + 1
520  tags = 0
521  for tag in btagDiscriminators:
522  if tag.startswith('pf'): tags = tags + 1
523  if 'softpf' in tag.lower(): tags = tags + 1
524  bTaggingLegacy=(len(btagDiscriminators)>tags or len(btagInfos)>infos)
525  ## construct postfix label for auxiliary modules; this postfix
526  ## label will start with a capitalized first letter following
527  ## the CMS naming conventions and for improved readablility
528  _labelName=labelName[:1].upper()+labelName[1:]
529 
530  ## supported algo types are ak, ca, and kt
531  _algo=''
532  for x in ["ak", "ca", "kt"]:
533  if x in algo.lower():
534  _algo=supportedJetAlgos[x]
535  break
536  if _algo=='':
538  ## add new patJets to process (keep instance for later further modifications)
540  if 'patJets'+_labelName+postfix in knownModules :
541  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
542  _newPatJets.jetSource=jetSource
543  else :
544  setattr(process, 'patJets'+_labelName+postfix, patJets.clone(jetSource=jetSource))
545  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
546  knownModules.append('patJets'+_labelName+postfix)
547  ## add new selectedPatJets to process
549  if 'selectedPatJets'+_labelName+postfix in knownModules :
550  _newSelectedPatJets=getattr(process, 'selectedPatJets'+_labelName+postfix)
551  _newSelectedPatJets.src='patJets'+_labelName+postfix
552  else :
553  setattr(process, 'selectedPatJets'+_labelName+postfix, selectedPatJets.clone(src='patJets'+_labelName+postfix))
554  knownModules.append('selectedPatJets'+_labelName+postfix)
555 
556  ## add new patJetPartonMatch to process
557  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetPartonMatch
558  if 'patJetPartonMatch'+_labelName+postfix in knownModules :
559  _newPatJetPartonMatch=getattr(process, 'patJetPartonMatch'+_labelName+postfix)
560  _newPatJetPartonMatch.src=jetSource
561  _newPatJetPartonMatch.matched=genParticles
562  else :
563  setattr(process, 'patJetPartonMatch'+_labelName+postfix, patJetPartonMatch.clone(src=jetSource, matched=genParticles))
564  knownModules.append('patJetPartonMatch'+_labelName+postfix)
565  ## add new patJetGenJetMatch to process
566  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetGenJetMatch
567  if 'patJetGenJetMatch'+_labelName+postfix in knownModules :
568  _newPatJetGenJetMatch=getattr(process, 'patJetGenJetMatch'+_labelName+postfix)
569  _newPatJetGenJetMatch.src=jetSource
570  _newPatJetGenJetMatch.maxDeltaR=rParam
571  _newPatJetGenJetMatch.matched=genJetCollection
572  else :
573  setattr(process, 'patJetGenJetMatch'+_labelName+postfix, patJetGenJetMatch.clone(src=jetSource, maxDeltaR=rParam, matched=genJetCollection))
574  knownModules.append('patJetGenJetMatch'+_labelName+postfix)
575  ## modify new patJets collection accordingly
576  _newPatJets.genJetMatch.setModuleLabel('patJetGenJetMatch'+_labelName+postfix)
577  _newPatJets.genPartonMatch.setModuleLabel('patJetPartonMatch'+_labelName+postfix)
578  ## get jet MC truth flavour if required by user
579  if (getJetMCFlavour):
580  ## legacy jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
581  ## add new patJetPartonsLegacy to process
582  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonsLegacy
583  if 'patJetPartonsLegacy'+postfix not in knownModules :
584  setattr(process, 'patJetPartonsLegacy'+postfix, patJetPartonsLegacy.clone(src=genParticles))
585  knownModules.append('patJetPartonsLegacy'+postfix)
586  else:
587  getattr(process, 'patJetPartonsLegacy'+postfix).src=genParticles
588  ## add new patJetPartonAssociationLegacy to process
589  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonAssociationLegacy
590  if 'patJetPartonAssociationLegacy'+_labelName+postfix in knownModules :
591  _newPatJetPartonAssociation=getattr(process, 'patJetPartonAssociationLegacy'+_labelName+postfix)
592  _newPatJetPartonAssociation.jets=jetSource
593  else :
594  setattr(process, 'patJetPartonAssociationLegacy'+_labelName+postfix, patJetPartonAssociationLegacy.clone(jets=jetSource))
595  knownModules.append('patJetPartonAssociationLegacy'+_labelName+postfix)
596  ## add new patJetPartonAssociationLegacy to process
597  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociationLegacy
598  if 'patJetFlavourAssociationLegacy'+_labelName+postfix in knownModules :
599  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociationLegacy'+_labelName+postfix)
600  _newPatJetFlavourAssociation.srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix
601  else:
602  setattr(process, 'patJetFlavourAssociationLegacy'+_labelName+postfix, patJetFlavourAssociationLegacy.clone(srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix))
603  knownModules.append('patJetFlavourAssociationLegacy'+_labelName+postfix)
604  ## modify new patJets collection accordingly
605  _newPatJets.JetPartonMapSource.setModuleLabel('patJetFlavourAssociationLegacy'+_labelName+postfix)
606  ## new jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
607  ## add new patJetPartons to process
609  if 'patJetPartons'+postfix not in knownModules :
610  setattr(process, 'patJetPartons'+postfix, patJetPartons.clone(particles=genParticles))
611  knownModules.append('patJetPartons'+postfix)
612  else:
613  getattr(process, 'patJetPartons'+postfix).particles=genParticles
614  ## add new patJetFlavourAssociation to process
615  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociation
616  if 'patJetFlavourAssociation'+_labelName+postfix in knownModules :
617  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
618  _newPatJetFlavourAssociation.jets=jetSource
619  _newPatJetFlavourAssociation.jetAlgorithm=_algo
620  _newPatJetFlavourAssociation.rParam=rParam
621  _newPatJetFlavourAssociation.bHadrons=cms.InputTag("patJetPartons"+postfix,"bHadrons")
622  _newPatJetFlavourAssociation.cHadrons=cms.InputTag("patJetPartons"+postfix,"cHadrons")
623  _newPatJetFlavourAssociation.partons=cms.InputTag("patJetPartons"+postfix,"algorithmicPartons")
624  _newPatJetFlavourAssociation.leptons=cms.InputTag("patJetPartons"+postfix,"leptons")
625  else :
626  setattr(process, 'patJetFlavourAssociation'+_labelName+postfix,
627  patJetFlavourAssociation.clone(
628  jets=jetSource,
629  jetAlgorithm=_algo,
630  rParam=rParam,
631  bHadrons = cms.InputTag("patJetPartons"+postfix,"bHadrons"),
632  cHadrons = cms.InputTag("patJetPartons"+postfix,"cHadrons"),
633  partons = cms.InputTag("patJetPartons"+postfix,"algorithmicPartons"),
634  leptons = cms.InputTag("patJetPartons"+postfix,"leptons")
635  )
636  )
637  knownModules.append('patJetFlavourAssociation'+_labelName+postfix)
638  ## modify new patJets collection accordingly
639  _newPatJets.JetFlavourInfoSource.setModuleLabel('patJetFlavourAssociation'+_labelName+postfix)
640  ## if the jets is actually a subjet
641  if fatJets != cms.InputTag('') and groomedFatJets != cms.InputTag(''):
642  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
643  _newPatJetFlavourAssociation.jets=fatJets
644  _newPatJetFlavourAssociation.groomedJets=groomedFatJets
645  _newPatJetFlavourAssociation.subjets=jetSource
646  _newPatJets.JetFlavourInfoSource=cms.InputTag('patJetFlavourAssociation'+_labelName+postfix,'SubJets')
647  else:
648  _newPatJets.getJetMCFlavour = False
649 
650  ## add jetTrackAssociation for legacy btagging (or jetTracksAssociation only) if required by user
651  if (jetTrackAssociation or bTaggingLegacy):
652  ## add new jetTracksAssociationAtVertex to process
653  from RecoJets.JetAssociationProducers.ak4JTA_cff import ak4JetTracksAssociatorAtVertex, ak4JetTracksAssociatorExplicit
654  if 'jetTracksAssociationAtVertex'+_labelName+postfix in knownModules :
655  _newJetTracksAssociationAtVertex=getattr(process, 'jetTracksAssociatorAtVertex'+_labelName+postfix)
656  _newJetTracksAssociationAtVertex.jets=jetSource
657  _newJetTracksAssociationAtVertex.pvSrc=pvSource
658  else:
659  jetTracksAssociator=ak4JetTracksAssociatorAtVertex
660  if explicitJTA:
661  jetTracksAssociator=ak4JetTracksAssociatorExplicit
662  setattr(process, 'jetTracksAssociatorAtVertex'+_labelName+postfix, jetTracksAssociator.clone(jets=jetSource,pvSrc=pvSource))
663  knownModules.append('jetTracksAssociationAtVertex'+_labelName+postfix)
664  ## add new patJetCharge to process
666  if 'patJetCharge'+_labelName+postfix in knownModules :
667  _newPatJetCharge=getattr(process, 'patJetCharge'+_labelName+postfix)
668  _newPatJetCharge.src='jetTracksAssociatorAtVertex'+_labelName+postfix
669  else:
670  setattr(process, 'patJetCharge'+_labelName+postfix, patJetCharge.clone(src = 'jetTracksAssociatorAtVertex'+_labelName+postfix))
671  knownModules.append('patJetCharge'+_labelName+postfix)
672  ## modify new patJets collection accordingly
673  _newPatJets.addAssociatedTracks=True
674  _newPatJets.trackAssociationSource=cms.InputTag('jetTracksAssociatorAtVertex'+_labelName+postfix)
675  _newPatJets.addJetCharge=True
676  _newPatJets.jetChargeSource=cms.InputTag('patJetCharge'+_labelName+postfix)
677  else:
678  ## modify new patJets collection accordingly
679  _newPatJets.addAssociatedTracks=False
680  _newPatJets.trackAssociationSource=''
681  _newPatJets.addJetCharge=False
682  _newPatJets.jetChargeSource=''
683  ## run btagging if required by user
684  if (bTagging):
685  setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSource, elSource, muSource, runIVF, svClustering, fatJets, groomedFatJets,
686  _algo, rParam, btagDiscriminators, btagInfos, _newPatJets, _labelName, postfix)
687  else:
688  _newPatJets.addBTagInfo = False
689  _newPatJets.addTagInfos = False
690  ## adjust output module; these collections will be empty anyhow, but we do it to stay clean
691  for outputModule in outputModules:
692  if hasattr(process,outputModule):
693  getattr(process,outputModule).outputCommands.append("drop *_"+'selected'+_labelName+postfix+"_tagInfos_*")
694 
695  ## add jet correction factors if required by user
696  if (jetCorrections != None):
697  ## check the jet corrections format
698  checkJetCorrectionsFormat(jetCorrections)
699  ## setup jet energy corrections and MET corrections
700  setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, _newPatJets, _labelName, postfix)
701  else:
702  ## switch jetCorrFactors off
703  _newPatJets.addJetCorrFactors=False
704 
705 addJetCollection=AddJetCollection()
def setupJetCorrections
Definition: jetTools.py:24
def undefinedLabelName
Definition: jetTools.py:1256
_parameters
initialization of the base class
Definition: jetTools.py:385
def setupBTagging
Definition: jetTools.py:173
def checkJetCorrectionsFormat
Definition: jetTools.py:16
def unsupportedJetAlgorithm
Definition: jetTools.py:1263
double split
Definition: MVATrainer.cc:139
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

Member Data Documentation

jetTools.AddJetCollection._comment
private

add comments

Definition at line 387 of file jetTools.py.

Referenced by runJetUncertainties.RunJetUncertainties.__init__(), and runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__init__().

tuple jetTools.AddJetCollection._defaultParameters = dicttypes.SortedKeysDict()
staticprivate

Definition at line 335 of file jetTools.py.

Referenced by HiCoreTools.RestrictInputToAOD.__call__(), trackTools.MakeAODTrackCandidates.__call__(), runJetUncertainties.RunJetUncertainties.__call__(), metTools.AddMETCollection.__call__(), HiCoreTools.RemoveMCMatching.__call__(), trackTools.MakePATTrackCandidates.__call__(), trigTools.SwitchOnTrigger.__call__(), HiCoreTools.RemoveAllPATObjectsBut.__call__(), HiCoreTools.RemoveSpecificPATObjects.__call__(), trigTools.SwitchOnTriggerStandAlone.__call__(), trackTools.MakeTrackCandidates.__call__(), trigTools.SwitchOnTriggerMatching.__call__(), HiCoreTools.RemoveCleaning.__call__(), HiCoreTools.AddCleaning.__call__(), jetTools.AddJetCollection.__call__(), tauTools.AddTauCollection.__call__(), trigTools.SwitchOnTriggerMatchingStandAlone.__call__(), trigTools.SwitchOnTriggerMatchEmbedding.__call__(), jetTools.SwitchJetCollection.__call__(), jetTools.UpdateJetCollection.__call__(), jetTools.AddJetID.__call__(), jetTools.SetTagInfos.__call__(), metTools.AddMETCollection.__init__(), trackTools.MakeAODTrackCandidates.__init__(), HiCoreTools.RestrictInputToAOD.__init__(), runJetUncertainties.RunJetUncertainties.__init__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__init__(), HiCoreTools.RemoveMCMatching.__init__(), trackTools.MakePATTrackCandidates.__init__(), trigTools.SwitchOnTrigger.__init__(), HiCoreTools.RemoveAllPATObjectsBut.__init__(), HiCoreTools.RemoveSpecificPATObjects.__init__(), trigTools.SwitchOnTriggerStandAlone.__init__(), trackTools.MakeTrackCandidates.__init__(), trigTools.SwitchOnTriggerMatching.__init__(), HiCoreTools.RemoveCleaning.__init__(), jetTools.AddJetCollection.__init__(), tauTools.AddTauCollection.__init__(), HiCoreTools.AddCleaning.__init__(), trigTools.SwitchOnTriggerMatchingStandAlone.__init__(), trigTools.SwitchOnTriggerMatchEmbedding.__init__(), jetTools.SwitchJetCollection.__init__(), jetTools.UpdateJetCollection.__init__(), jetTools.AddJetID.__init__(), jetTools.SetTagInfos.__init__(), ConfigToolBase.ConfigToolBase.dumpPython(), ConfigToolBase.ConfigToolBase.getAllowedValues(), HiCoreTools.RestrictInputToAOD.getDefaultParameters(), trackTools.MakeAODTrackCandidates.getDefaultParameters(), metTools.AddMETCollection.getDefaultParameters(), HiCoreTools.RemoveMCMatching.getDefaultParameters(), trackTools.MakePATTrackCandidates.getDefaultParameters(), trigTools.SwitchOnTrigger.getDefaultParameters(), HiCoreTools.RemoveAllPATObjectsBut.getDefaultParameters(), HiCoreTools.RemoveSpecificPATObjects.getDefaultParameters(), trigTools.SwitchOnTriggerStandAlone.getDefaultParameters(), trackTools.MakeTrackCandidates.getDefaultParameters(), trigTools.SwitchOnTriggerMatching.getDefaultParameters(), HiCoreTools.RemoveCleaning.getDefaultParameters(), HiCoreTools.AddCleaning.getDefaultParameters(), jetTools.AddJetCollection.getDefaultParameters(), tauTools.AddTauCollection.getDefaultParameters(), trigTools.SwitchOnTriggerMatchingStandAlone.getDefaultParameters(), trigTools.SwitchOnTriggerMatchEmbedding.getDefaultParameters(), jetTools.SwitchJetCollection.getDefaultParameters(), jetTools.UpdateJetCollection.getDefaultParameters(), jetTools.AddJetID.getDefaultParameters(), jetTools.SetTagInfos.getDefaultParameters(), ConfigToolBase.ConfigToolBase.reset(), and ConfigToolBase.ConfigToolBase.setParameter().

string jetTools.AddJetCollection._label = 'addJetCollection'
staticprivate

Definition at line 334 of file jetTools.py.

Referenced by validation.SimpleSample.digest(), validation.SimpleSample.label(), trigTools.SwitchOnTrigger.toolCode(), trigTools.SwitchOnTriggerStandAlone.toolCode(), trigTools.SwitchOnTriggerMatching.toolCode(), trigTools.SwitchOnTriggerMatchingStandAlone.toolCode(), and trigTools.SwitchOnTriggerMatchEmbedding.toolCode().

jetTools.AddJetCollection._parameters
private

initialization of the base class

add all parameters that should be known to the class set defaults

Definition at line 385 of file jetTools.py.

Referenced by runJetUncertainties.RunJetUncertainties.__init__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__init__(), HiCoreTools.RestrictInputToAOD.toolCode(), trackTools.MakeAODTrackCandidates.toolCode(), metTools.AddMETCollection.toolCode(), runJetUncertainties.RunJetUncertainties.toolCode(), HiCoreTools.RemoveMCMatching.toolCode(), trackTools.MakePATTrackCandidates.toolCode(), trigTools.SwitchOnTrigger.toolCode(), HiCoreTools.RemoveAllPATObjectsBut.toolCode(), HiCoreTools.RemoveSpecificPATObjects.toolCode(), trigTools.SwitchOnTriggerStandAlone.toolCode(), trackTools.MakeTrackCandidates.toolCode(), HiCoreTools.RemoveCleaning.toolCode(), trigTools.SwitchOnTriggerMatching.toolCode(), HiCoreTools.AddCleaning.toolCode(), tauTools.AddTauCollection.toolCode(), jetTools.AddJetCollection.toolCode(), trigTools.SwitchOnTriggerMatchingStandAlone.toolCode(), trigTools.SwitchOnTriggerMatchEmbedding.toolCode(), jetTools.SwitchJetCollection.toolCode(), jetTools.UpdateJetCollection.toolCode(), jetTools.AddJetID.toolCode(), and jetTools.SetTagInfos.toolCode().