CMS 3D CMS Logo

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__ (self, process, labelName=None, postfix=None, btagPrefix=None, jetSource=None, pfCandidates=None, explicitJTA=None, pvSource=None, svSource=None, elSource=None, muSource=None, runIVF=None, tightBTagNTkHits=None, loadStdRecoBTag=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)
 
def __init__ (self)
 
def getDefaultParameters (self)
 
def toolCode (self, process)
 

Private Attributes

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

Static Private Attributes

 _defaultParameters
 
 _label
 

Detailed Description

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

Definition at line 666 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 673 of file jetTools.py.

References heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, heavyIonTools.ProductionDefaults._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(), l1t::TriggerSystem.addParameter(), LutXml.addParameter(), ConfigToolBase.ConfigToolBase.addParameter(), and edm::ParameterSet.addParameter().

673  def __init__(self):
674  """
675  Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase to be usable in the configEditor.
676  """
677  ## initialization of the base class
678  ConfigToolBase.__init__(self)
679  ## add all parameters that should be known to the class
680  self.addParameter(self._defaultParameters,'labelName', 'UNDEFINED', "Label name of the new patJet collection.", str)
681  self.addParameter(self._defaultParameters,'postfix','', "Postfix from usePF2PAT.", str)
682  self.addParameter(self._defaultParameters,'btagPrefix','', "Prefix to be added to b-tag discriminator and TagInfo names", str)
683  self.addParameter(self._defaultParameters,'jetSource','', "Label of the input collection from which the new patJet collection should be created", cms.InputTag)
684  self.addParameter(self._defaultParameters,'pfCandidates',cms.InputTag('particleFlow'), "Label of the input collection for candidatecandidatese used in b-tagging", cms.InputTag)
685  self.addParameter(self._defaultParameters,'explicitJTA', False, "Use explicit jet-track association")
686  self.addParameter(self._defaultParameters,'pvSource',cms.InputTag('offlinePrimaryVertices'), "Label of the input collection for primary vertices used in b-tagging", cms.InputTag)
687  self.addParameter(self._defaultParameters,'svSource',cms.InputTag('inclusiveCandidateSecondaryVertices'), "Label of the input collection for IVF vertices used in b-tagging", cms.InputTag)
688  self.addParameter(self._defaultParameters,'elSource',cms.InputTag('gedGsfElectrons'), "Label of the input collection for electrons used in b-tagging", cms.InputTag)
689  self.addParameter(self._defaultParameters,'muSource',cms.InputTag('muons'), "Label of the input collection for muons used in b-tagging", cms.InputTag)
690  self.addParameter(self._defaultParameters,'runIVF', False, "Re-run IVF secondary vertex reconstruction")
691  self.addParameter(self._defaultParameters,'tightBTagNTkHits', False, "Enable legacy tight b-tag track selection")
692  self.addParameter(self._defaultParameters,'loadStdRecoBTag', False, "Load the standard reconstruction b-tagging modules")
693  self.addParameter(self._defaultParameters,'svClustering', False, "Secondary vertices ghost-associated to jets using jet clustering (mostly intended for subjets)")
694  self.addParameter(self._defaultParameters,'fatJets', cms.InputTag(''), "Fat jet collection used for secondary vertex clustering", cms.InputTag)
695  self.addParameter(self._defaultParameters,'groomedFatJets', cms.InputTag(''), "Groomed fat jet collection used for secondary vertex clustering", cms.InputTag)
696  self.addParameter(self._defaultParameters,'algo', 'AK', "Jet algorithm of the input collection from which the new patJet collection should be created")
697  self.addParameter(self._defaultParameters,'rParam', 0.4, "Jet size (distance parameter R used in jet clustering)")
698  self.addParameter(self._defaultParameters,'getJetMCFlavour', True, "Get jet MC truth flavour")
699  self.addParameter(self._defaultParameters,'genJetCollection', cms.InputTag("ak4GenJets"), "GenJet collection to match to", cms.InputTag)
700  self.addParameter(self._defaultParameters,'genParticles', cms.InputTag("genParticles"), "GenParticle collection to be used", cms.InputTag)
701  self.addParameter(self._defaultParameters,'jetCorrections',None, "Add all relevant information about jet energy corrections that you want to be added to your new patJet \
702  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 \
703  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 \
704  new patJet collection. This should be given as a list of strings. Available values are L1Offset, L1FastJet, L1JPTOffset, L2Relative, L3Absolute, L5Falvour, L7Parton; the \
705  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 \
706  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 \
707  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\' \
708  and \'type-2\' are not case sensitive.", tuple, acceptNoneValue=True)
709  self.addParameter(self._defaultParameters,'btagDiscriminators',['None'], "If you are interested in btagging, in most cases just the labels of the btag discriminators that \
710  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. \
711  If this list is empty no btag discriminator information will be added to your new patJet collection.", allowedValues=supportedBtagDiscr.keys(),Type=list)
712  self.addParameter(self._defaultParameters,'btagInfos',['None'], "The btagInfos objects contain all relevant information from which all discriminators of a certain \
713  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 \
714  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 \
715  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 \
716  will be added to your new patJet collection.", allowedValues=supportedBtagInfos,Type=list)
717  self.addParameter(self._defaultParameters,'jetTrackAssociation',False, "Add JetTrackAssociation and JetCharge from reconstructed tracks to your new patJet collection. This \
718  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 \
719  your new patJetCollection. If btag information of any form is added to the new patJet collection this information will be added automatically.")
720  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 \
721  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 \
722  to more than one output module.")
723  ## set defaults
724  self._parameters=copy.deepcopy(self._defaultParameters)
725  ## add comments
726  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\
727  energy correction factors, btag information and generator match information to the new patJet collection depending on the parameters that you pass on to this function. Consult \
728  the descriptions of each parameter for more information."
729 
_parameters
initialization of the base class
Definition: jetTools.py:724
_comment
add comments
Definition: jetTools.py:726

Member Function Documentation

def jetTools.AddJetCollection.__call__ (   self,
  process,
  labelName = None,
  postfix = None,
  btagPrefix = None,
  jetSource = None,
  pfCandidates = None,
  explicitJTA = None,
  pvSource = None,
  svSource = None,
  elSource = None,
  muSource = None,
  runIVF = None,
  tightBTagNTkHits = None,
  loadStdRecoBTag = 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 736 of file jetTools.py.

References heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, heavyIonTools.ProductionDefaults._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(), DummyOOTPileupCorrection.apply(), HcalDeterministicFit.apply(), gen::PhotosppInterface.apply(), gen::PhotosInterface.apply(), SurveyParameters.apply(), FWPSetCellEditor.apply(), FWGUIEventFilter.apply(), DeviationsFromFileSensor2D.apply(), BeamSpotAlignmentParameters.apply(), RigidBodyAlignmentParameters.apply(), ConfigToolBase.ConfigToolBase.apply(), AlignmentParameters.apply(), BowedSurfaceAlignmentParameters.apply(), OOTPileupCorrData.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(), Vispa.Plugins.ConfigEditor.ToolDialog.ToolDialog.apply(), PulseShapeFitOOTPileupCorrection.apply(), reco::Add< T >.apply(), reco::Sub< T >.apply(), reco::Mul< T >.apply(), reco::Div< T >.apply(), cmsswVersionTools.PickRelValInputFiles.apply(), reco::And< bool >.apply(), models.RegExp.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(), PedeReader.setParameter(), QIE8Simulator.setParameter(), AbsElectronicODERHS.setParameter(), IntegratedCalibrationBase.setParameter(), SiStripLorentzAngleCalibration.setParameter(), SiPixelLorentzAngleCalibration.setParameter(), SiStripBackplaneCalibration.setParameter(), fit::RootMinuit< Function >.setParameter(), and ConfigToolBase.ConfigToolBase.setParameter().

736  def __call__(self,process,labelName=None,postfix=None,btagPrefix=None,jetSource=None,pfCandidates=None,explicitJTA=None,pvSource=None,svSource=None,elSource=None,muSource=None,runIVF=None,tightBTagNTkHits=None,loadStdRecoBTag=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):
737  """
738  Function call wrapper. This will check the parameters and call the actual implementation that
739  can be found in toolCode via the base class function apply.
740  """
741  if labelName is None:
742  labelName=self._defaultParameters['labelName'].value
743  self.setParameter('labelName', labelName)
744  if postfix is None:
745  postfix=self._defaultParameters['postfix'].value
746  self.setParameter('postfix', postfix)
747  if btagPrefix is None:
748  btagPrefix=self._defaultParameters['btagPrefix'].value
749  self.setParameter('btagPrefix', btagPrefix)
750  if jetSource is None:
751  jetSource=self._defaultParameters['jetSource'].value
752  self.setParameter('jetSource', jetSource)
753  if pfCandidates is None:
754  pfCandidates=self._defaultParameters['pfCandidates'].value
755  self.setParameter('pfCandidates', pfCandidates)
756  if explicitJTA is None:
757  explicitJTA=self._defaultParameters['explicitJTA'].value
758  self.setParameter('explicitJTA', explicitJTA)
759  if pvSource is None:
760  pvSource=self._defaultParameters['pvSource'].value
761  self.setParameter('pvSource', pvSource)
762  if svSource is None:
763  svSource=self._defaultParameters['svSource'].value
764  self.setParameter('svSource', svSource)
765  if elSource is None:
766  elSource=self._defaultParameters['elSource'].value
767  self.setParameter('elSource', elSource)
768  if muSource is None:
769  muSource=self._defaultParameters['muSource'].value
770  self.setParameter('muSource', muSource)
771  if runIVF is None:
772  runIVF=self._defaultParameters['runIVF'].value
773  self.setParameter('runIVF', runIVF)
774  if tightBTagNTkHits is None:
775  tightBTagNTkHits=self._defaultParameters['tightBTagNTkHits'].value
776  self.setParameter('tightBTagNTkHits', tightBTagNTkHits)
777  if loadStdRecoBTag is None:
778  loadStdRecoBTag=self._defaultParameters['loadStdRecoBTag'].value
779  self.setParameter('loadStdRecoBTag', loadStdRecoBTag)
780  if svClustering is None:
781  svClustering=self._defaultParameters['svClustering'].value
782  self.setParameter('svClustering', svClustering)
783  if fatJets is None:
784  fatJets=self._defaultParameters['fatJets'].value
785  self.setParameter('fatJets', fatJets)
786  if groomedFatJets is None:
787  groomedFatJets=self._defaultParameters['groomedFatJets'].value
788  self.setParameter('groomedFatJets', groomedFatJets)
789  if algo is None:
790  algo=self._defaultParameters['algo'].value
791  self.setParameter('algo', algo)
792  if rParam is None:
793  rParam=self._defaultParameters['rParam'].value
794  self.setParameter('rParam', rParam)
795  if getJetMCFlavour is None:
796  getJetMCFlavour=self._defaultParameters['getJetMCFlavour'].value
797  self.setParameter('getJetMCFlavour', getJetMCFlavour)
798  if genJetCollection is None:
799  genJetCollection=self._defaultParameters['genJetCollection'].value
800  self.setParameter('genJetCollection', genJetCollection)
801  if genParticles is None:
802  genParticles=self._defaultParameters['genParticles'].value
803  self.setParameter('genParticles', genParticles)
804  if jetCorrections is None:
805  jetCorrections=self._defaultParameters['jetCorrections'].value
806  self.setParameter('jetCorrections', jetCorrections)
807  if btagDiscriminators is None:
808  btagDiscriminators=self._defaultParameters['btagDiscriminators'].value
809  self.setParameter('btagDiscriminators', btagDiscriminators)
810  if btagInfos is None:
811  btagInfos=self._defaultParameters['btagInfos'].value
812  self.setParameter('btagInfos', btagInfos)
813  if jetTrackAssociation is None:
814  jetTrackAssociation=self._defaultParameters['jetTrackAssociation'].value
815  self.setParameter('jetTrackAssociation', jetTrackAssociation)
816  if outputModules is None:
817  outputModules=self._defaultParameters['outputModules'].value
818  self.setParameter('outputModules', outputModules)
819  self.apply(process)
820 
def __call__(self, process, labelName=None, postfix=None, btagPrefix=None, jetSource=None, pfCandidates=None, explicitJTA=None, pvSource=None, svSource=None, elSource=None, muSource=None, runIVF=None, tightBTagNTkHits=None, loadStdRecoBTag=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)
Definition: jetTools.py:736
def jetTools.AddJetCollection.getDefaultParameters (   self)
def jetTools.AddJetCollection.toolCode (   self,
  process 
)
Tool code implementation

Definition at line 821 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, cmsswVersionTools.PickRelValInputFiles._parameters, coreTools.RemoveMCMatching._parameters, heavyIonTools.SelectionDefaults._parameters, heavyIonTools.DisbaleMonteCarloDeps._parameters, jetTools.AddJetCollection._parameters, helpers.addToProcessAndTask(), jetTools.checkJetCorrectionsFormat(), helpers.getPatAlgosToolsTask(), list(), jetTools.setupBTagging(), jetTools.setupJetCorrections(), split, jetTools.undefinedLabelName(), jetTools.unsupportedJetAlgorithm(), and pileupCalc.upper.

821  def toolCode(self, process):
822  """
823  Tool code implementation
824  """
825  task = getPatAlgosToolsTask(process)
826 
827  ## initialize parameters
828  labelName=self._parameters['labelName'].value
829  postfix=self._parameters['postfix'].value
830  btagPrefix=self._parameters['btagPrefix'].value
831  jetSource=self._parameters['jetSource'].value
832  pfCandidates=self._parameters['pfCandidates'].value
833  explicitJTA=self._parameters['explicitJTA'].value
834  pvSource=self._parameters['pvSource'].value
835  svSource=self._parameters['svSource'].value
836  elSource=self._parameters['elSource'].value
837  muSource=self._parameters['muSource'].value
838  runIVF=self._parameters['runIVF'].value
839  tightBTagNTkHits=self._parameters['tightBTagNTkHits'].value
840  loadStdRecoBTag=self._parameters['loadStdRecoBTag'].value
841  svClustering=self._parameters['svClustering'].value
842  fatJets=self._parameters['fatJets'].value
843  groomedFatJets=self._parameters['groomedFatJets'].value
844  algo=self._parameters['algo'].value
845  rParam=self._parameters['rParam'].value
846  getJetMCFlavour=self._parameters['getJetMCFlavour'].value
847  genJetCollection=self._parameters['genJetCollection'].value
848  genParticles=self._parameters['genParticles'].value
849  jetCorrections=self._parameters['jetCorrections'].value
850  btagDiscriminators=list(self._parameters['btagDiscriminators'].value)
851  btagInfos=list(self._parameters['btagInfos'].value)
852  jetTrackAssociation=self._parameters['jetTrackAssociation'].value
853  outputModules=list(self._parameters['outputModules'].value)
854 
855  ## added jets must have a defined 'labelName'
856  if labelName=='UNDEFINED':
857  undefinedLabelName(self)
858 
859  ## a list of all producer modules, which are already known to process
860  knownModules = process.producerNames().split()
861  ## determine whether btagging information is required or not
862  if btagDiscriminators.count('None')>0:
863  btagDiscriminators.remove('None')
864  if btagInfos.count('None')>0:
865  btagInfos.remove('None')
866  bTagging=(len(btagDiscriminators)>0 or len(btagInfos)>0)
867  ## check if any legacy btag discriminators are being used
868  infos = 0
869  for info in btagInfos:
870  if info.startswith('pf'): infos = infos + 1
871  if 'softpf' in info.lower(): infos = infos + 1
872  tags = 0
873  for tag in btagDiscriminators:
874  if tag.startswith('pf'): tags = tags + 1
875  if 'softpf' in tag.lower(): tags = tags + 1
876  bTaggingLegacy=(len(btagDiscriminators)>tags or len(btagInfos)>infos)
877  ## construct postfix label for auxiliary modules; this postfix
878  ## label will start with a capitalized first letter following
879  ## the CMS naming conventions and for improved readablility
880  _labelName=labelName[:1].upper()+labelName[1:]
881 
882  ## supported algo types are ak, ca, and kt
883  _algo=''
884  for x in ["ak", "ca", "kt"]:
885  if x in algo.lower():
886  _algo=supportedJetAlgos[x]
887  break
888  if _algo=='':
890  ## add new patJets to process (keep instance for later further modifications)
891  from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import _patJets as patJets
892  if 'patJets'+_labelName+postfix in knownModules :
893  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
894  _newPatJets.jetSource=jetSource
895  else :
896  addToProcessAndTask('patJets'+_labelName+postfix, patJets.clone(jetSource=jetSource), process, task)
897  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
898  knownModules.append('patJets'+_labelName+postfix)
899  ## add new selectedPatJets to process
901  if 'selectedPatJets'+_labelName+postfix in knownModules :
902  _newSelectedPatJets=getattr(process, 'selectedPatJets'+_labelName+postfix)
903  _newSelectedPatJets.src='patJets'+_labelName+postfix
904  else :
905  addToProcessAndTask('selectedPatJets'+_labelName+postfix,
906  selectedPatJets.clone(src='patJets'+_labelName+postfix),
907  process, task)
908  knownModules.append('selectedPatJets'+_labelName+postfix)
909 
910  ## add new patJetPartonMatch to process
911  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetPartonMatch
912  if 'patJetPartonMatch'+_labelName+postfix in knownModules :
913  _newPatJetPartonMatch=getattr(process, 'patJetPartonMatch'+_labelName+postfix)
914  _newPatJetPartonMatch.src=jetSource
915  _newPatJetPartonMatch.matched=genParticles
916  else :
917  addToProcessAndTask('patJetPartonMatch'+_labelName+postfix,
918  patJetPartonMatch.clone(src=jetSource, matched=genParticles),
919  process, task)
920  knownModules.append('patJetPartonMatch'+_labelName+postfix)
921  ## add new patJetGenJetMatch to process
922  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetGenJetMatch
923  if 'patJetGenJetMatch'+_labelName+postfix in knownModules :
924  _newPatJetGenJetMatch=getattr(process, 'patJetGenJetMatch'+_labelName+postfix)
925  _newPatJetGenJetMatch.src=jetSource
926  _newPatJetGenJetMatch.maxDeltaR=rParam
927  _newPatJetGenJetMatch.matched=genJetCollection
928  else :
929  addToProcessAndTask('patJetGenJetMatch'+_labelName+postfix,
930  patJetGenJetMatch.clone(src=jetSource, maxDeltaR=rParam, matched=genJetCollection),
931  process, task)
932  knownModules.append('patJetGenJetMatch'+_labelName+postfix)
933  ## modify new patJets collection accordingly
934  _newPatJets.genJetMatch.setModuleLabel('patJetGenJetMatch'+_labelName+postfix)
935  _newPatJets.genPartonMatch.setModuleLabel('patJetPartonMatch'+_labelName+postfix)
936  ## get jet MC truth flavour if required by user
937  if (getJetMCFlavour):
938  ## legacy jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
939  ## add new patJetPartonsLegacy to process
940  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonsLegacy
941  if 'patJetPartonsLegacy'+postfix not in knownModules :
942  addToProcessAndTask('patJetPartonsLegacy'+postfix, patJetPartonsLegacy.clone(src=genParticles),
943  process, task)
944  knownModules.append('patJetPartonsLegacy'+postfix)
945  else:
946  getattr(process, 'patJetPartonsLegacy'+postfix).src=genParticles
947  ## add new patJetPartonAssociationLegacy to process
948  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonAssociationLegacy
949  if 'patJetPartonAssociationLegacy'+_labelName+postfix in knownModules :
950  _newPatJetPartonAssociation=getattr(process, 'patJetPartonAssociationLegacy'+_labelName+postfix)
951  _newPatJetPartonAssociation.jets=jetSource
952  else :
953  addToProcessAndTask('patJetPartonAssociationLegacy'+_labelName+postfix,
954  patJetPartonAssociationLegacy.clone(jets=jetSource), process, task)
955  knownModules.append('patJetPartonAssociationLegacy'+_labelName+postfix)
956  ## add new patJetPartonAssociationLegacy to process
957  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociationLegacy
958  if 'patJetFlavourAssociationLegacy'+_labelName+postfix in knownModules :
959  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociationLegacy'+_labelName+postfix)
960  _newPatJetFlavourAssociation.srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix
961  else:
962  addToProcessAndTask('patJetFlavourAssociationLegacy'+_labelName+postfix,
963  patJetFlavourAssociationLegacy.clone(
964  srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix),
965  process, task)
966  knownModules.append('patJetFlavourAssociationLegacy'+_labelName+postfix)
967  ## modify new patJets collection accordingly
968  _newPatJets.JetPartonMapSource.setModuleLabel('patJetFlavourAssociationLegacy'+_labelName+postfix)
969  ## new jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
970  ## add new patJetPartons to process
972  if 'patJetPartons'+postfix not in knownModules :
973  addToProcessAndTask('patJetPartons'+postfix, patJetPartons.clone(particles=genParticles), process, task)
974  knownModules.append('patJetPartons'+postfix)
975  else:
976  getattr(process, 'patJetPartons'+postfix).particles=genParticles
977  ## add new patJetFlavourAssociation to process
978  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociation
979  if 'patJetFlavourAssociation'+_labelName+postfix in knownModules :
980  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
981  _newPatJetFlavourAssociation.jets=jetSource
982  _newPatJetFlavourAssociation.jetAlgorithm=_algo
983  _newPatJetFlavourAssociation.rParam=rParam
984  _newPatJetFlavourAssociation.bHadrons=cms.InputTag("patJetPartons"+postfix,"bHadrons")
985  _newPatJetFlavourAssociation.cHadrons=cms.InputTag("patJetPartons"+postfix,"cHadrons")
986  _newPatJetFlavourAssociation.partons=cms.InputTag("patJetPartons"+postfix,"algorithmicPartons")
987  _newPatJetFlavourAssociation.leptons=cms.InputTag("patJetPartons"+postfix,"leptons")
988  else :
989  addToProcessAndTask('patJetFlavourAssociation'+_labelName+postfix,
990  patJetFlavourAssociation.clone(
991  jets=jetSource,
992  jetAlgorithm=_algo,
993  rParam=rParam,
994  bHadrons = cms.InputTag("patJetPartons"+postfix,"bHadrons"),
995  cHadrons = cms.InputTag("patJetPartons"+postfix,"cHadrons"),
996  partons = cms.InputTag("patJetPartons"+postfix,"algorithmicPartons"),
997  leptons = cms.InputTag("patJetPartons"+postfix,"leptons")),
998  process, task)
999 
1000  knownModules.append('patJetFlavourAssociation'+_labelName+postfix)
1001  ## modify new patJets collection accordingly
1002  _newPatJets.JetFlavourInfoSource.setModuleLabel('patJetFlavourAssociation'+_labelName+postfix)
1003  ## if the jets is actually a subjet
1004  if fatJets != cms.InputTag('') and groomedFatJets != cms.InputTag(''):
1005  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
1006  _newPatJetFlavourAssociation.jets=fatJets
1007  _newPatJetFlavourAssociation.groomedJets=groomedFatJets
1008  _newPatJetFlavourAssociation.subjets=jetSource
1009  _newPatJets.JetFlavourInfoSource=cms.InputTag('patJetFlavourAssociation'+_labelName+postfix,'SubJets')
1010  else:
1011  _newPatJets.getJetMCFlavour = False
1012 
1013  ## add jetTrackAssociation for legacy btagging (or jetTracksAssociation only) if required by user
1014  if (jetTrackAssociation or bTaggingLegacy):
1015  ## add new jetTracksAssociationAtVertex to process
1016  from RecoJets.JetAssociationProducers.ak4JTA_cff import ak4JetTracksAssociatorAtVertex, ak4JetTracksAssociatorExplicit
1017  if 'jetTracksAssociationAtVertex'+_labelName+postfix in knownModules :
1018  _newJetTracksAssociationAtVertex=getattr(process, 'jetTracksAssociatorAtVertex'+_labelName+postfix)
1019  _newJetTracksAssociationAtVertex.jets=jetSource
1020  _newJetTracksAssociationAtVertex.pvSrc=pvSource
1021  else:
1022  jetTracksAssociator=ak4JetTracksAssociatorAtVertex
1023  if explicitJTA:
1024  jetTracksAssociator=ak4JetTracksAssociatorExplicit
1025  addToProcessAndTask('jetTracksAssociatorAtVertex'+_labelName+postfix,
1026  jetTracksAssociator.clone(jets=jetSource,pvSrc=pvSource),
1027  process, task)
1028  knownModules.append('jetTracksAssociationAtVertex'+_labelName+postfix)
1029  ## add new patJetCharge to process
1031  if 'patJetCharge'+_labelName+postfix in knownModules :
1032  _newPatJetCharge=getattr(process, 'patJetCharge'+_labelName+postfix)
1033  _newPatJetCharge.src='jetTracksAssociatorAtVertex'+_labelName+postfix
1034  else:
1035  addToProcessAndTask('patJetCharge'+_labelName+postfix,
1036  patJetCharge.clone(src = 'jetTracksAssociatorAtVertex'+_labelName+postfix),
1037  process, task)
1038  knownModules.append('patJetCharge'+_labelName+postfix)
1039  ## modify new patJets collection accordingly
1040  _newPatJets.addAssociatedTracks=True
1041  _newPatJets.trackAssociationSource=cms.InputTag('jetTracksAssociatorAtVertex'+_labelName+postfix)
1042  _newPatJets.addJetCharge=True
1043  _newPatJets.jetChargeSource=cms.InputTag('patJetCharge'+_labelName+postfix)
1044  else:
1045  ## modify new patJets collection accordingly
1046  _newPatJets.addAssociatedTracks=False
1047  _newPatJets.trackAssociationSource=''
1048  _newPatJets.addJetCharge=False
1049  _newPatJets.jetChargeSource=''
1050  ## run btagging if required by user
1051  if (bTagging):
1052  setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSource, elSource, muSource, runIVF, tightBTagNTkHits, loadStdRecoBTag, svClustering, fatJets, groomedFatJets,
1053  _algo, rParam, btagDiscriminators, btagInfos, _newPatJets, _labelName, btagPrefix, postfix)
1054  else:
1055  _newPatJets.addBTagInfo = False
1056  _newPatJets.addTagInfos = False
1057  ## adjust output module; these collections will be empty anyhow, but we do it to stay clean
1058  for outputModule in outputModules:
1059  if hasattr(process,outputModule):
1060  getattr(process,outputModule).outputCommands.append("drop *_"+'selected'+_labelName+postfix+"_tagInfos_*")
1061 
1062  ## add jet correction factors if required by user
1063  if (jetCorrections != None):
1064  ## check the jet corrections format
1065  checkJetCorrectionsFormat(jetCorrections)
1066  ## setup jet energy corrections and MET corrections
1067  setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, _newPatJets, _labelName, postfix)
1068  else:
1069  ## switch jetCorrFactors off
1070  _newPatJets.addJetCorrFactors=False
1071 
1072 addJetCollection=AddJetCollection()
1073 
def undefinedLabelName(obj)
Definition: jetTools.py:1669
def toolCode(self, process)
Definition: jetTools.py:821
def addToProcessAndTask(label, module, process, task)
Definition: helpers.py:27
def setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, patJets, labelName, postfix)
Definition: jetTools.py:24
_parameters
initialization of the base class
Definition: jetTools.py:724
def setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSource, elSource, muSource, runIVF, tightBTagNTkHits, loadStdRecoBTag, svClustering, fatJets, groomedFatJets, algo, rParam, btagDiscriminators, btagInfos, patJets, labelName, btagPrefix, postfix)
Definition: jetTools.py:235
def checkJetCorrectionsFormat(jetCorrections)
Definition: jetTools.py:16
def getPatAlgosToolsTask(process)
Definition: helpers.py:12
double split
Definition: MVATrainer.cc:139
def unsupportedJetAlgorithm(obj)
Definition: jetTools.py:1676
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 726 of file jetTools.py.

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 671 of file jetTools.py.

Referenced by HiCoreTools.RestrictInputToAOD.__call__(), trackTools.MakeAODTrackCandidates.__call__(), runJetUncertainties.RunJetUncertainties.__call__(), metTools.AddMETCollection.__call__(), editorTools.ChangeSource.__call__(), HiCoreTools.RemoveMCMatching.__call__(), trackTools.MakePATTrackCandidates.__call__(), trigTools.SwitchOnTrigger.__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__call__(), HiCoreTools.RemoveAllPATObjectsBut.__call__(), HiCoreTools.RemoveSpecificPATObjects.__call__(), trigTools.SwitchOnTriggerStandAlone.__call__(), trackTools.MakeTrackCandidates.__call__(), tauTools.AddTauCollection.__call__(), trigTools.SwitchOnTriggerMatching.__call__(), HiCoreTools.RemoveCleaning.__call__(), HiCoreTools.AddCleaning.__call__(), trigTools.SwitchOnTriggerMatchingStandAlone.__call__(), trigTools.SwitchOnTriggerMatchEmbedding.__call__(), jetTools.AddJetCollection.__call__(), jetTools.SwitchJetCollection.__call__(), jetTools.UpdateJetCollection.__call__(), jetTools.AddJetID.__call__(), jetTools.SetTagInfos.__call__(), editorTools.UserCodeTool.__init__(), metTools.AddMETCollection.__init__(), HiCoreTools.RestrictInputToAOD.__init__(), trackTools.MakeAODTrackCandidates.__init__(), runJetUncertainties.RunJetUncertainties.__init__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__init__(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool.__init__(), editorTools.ChangeSource.__init__(), HiCoreTools.RemoveMCMatching.__init__(), trackTools.MakePATTrackCandidates.__init__(), trigTools.SwitchOnTrigger.__init__(), HiCoreTools.RemoveAllPATObjectsBut.__init__(), HiCoreTools.RemoveSpecificPATObjects.__init__(), trigTools.SwitchOnTriggerStandAlone.__init__(), trackTools.MakeTrackCandidates.__init__(), tauTools.AddTauCollection.__init__(), trigTools.SwitchOnTriggerMatching.__init__(), HiCoreTools.RemoveCleaning.__init__(), HiCoreTools.AddCleaning.__init__(), trigTools.SwitchOnTriggerMatchingStandAlone.__init__(), trigTools.SwitchOnTriggerMatchEmbedding.__init__(), jetTools.AddJetCollection.__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(), editorTools.ChangeSource.getDefaultParameters(), HiCoreTools.RemoveMCMatching.getDefaultParameters(), trackTools.MakePATTrackCandidates.getDefaultParameters(), trigTools.SwitchOnTrigger.getDefaultParameters(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.getDefaultParameters(), HiCoreTools.RemoveAllPATObjectsBut.getDefaultParameters(), HiCoreTools.RemoveSpecificPATObjects.getDefaultParameters(), trigTools.SwitchOnTriggerStandAlone.getDefaultParameters(), trackTools.MakeTrackCandidates.getDefaultParameters(), tauTools.AddTauCollection.getDefaultParameters(), trigTools.SwitchOnTriggerMatching.getDefaultParameters(), HiCoreTools.RemoveCleaning.getDefaultParameters(), HiCoreTools.AddCleaning.getDefaultParameters(), trigTools.SwitchOnTriggerMatchingStandAlone.getDefaultParameters(), trigTools.SwitchOnTriggerMatchEmbedding.getDefaultParameters(), jetTools.AddJetCollection.getDefaultParameters(), jetTools.SwitchJetCollection.getDefaultParameters(), jetTools.UpdateJetCollection.getDefaultParameters(), jetTools.AddJetID.getDefaultParameters(), jetTools.SetTagInfos.getDefaultParameters(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.initializeInputTag(), ConfigToolBase.ConfigToolBase.reset(), and ConfigToolBase.ConfigToolBase.setParameter().

jetTools.AddJetCollection._label
staticprivate
jetTools.AddJetCollection._parameters
private

initialization of the base class

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

Definition at line 724 of file jetTools.py.

Referenced by runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.ak4JetReclustering(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.createMVAMETModule(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.createSmearedJetModule(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.extractMET(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.getCorrectedMET(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.getUnclusteredVariationsForMVAMET(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.getVariations(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.jetCleaning(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.jetConfiguration(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.miniAODConfiguration(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.miniAODConfigurationPost(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.produceMET(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.recomputeRawMetFromPfcs(), HiCoreTools.RestrictInputToAOD.toolCode(), trackTools.MakeAODTrackCandidates.toolCode(), metTools.AddMETCollection.toolCode(), runJetUncertainties.RunJetUncertainties.toolCode(), HiCoreTools.RemoveMCMatching.toolCode(), trigTools.SwitchOnTrigger.toolCode(), trackTools.MakePATTrackCandidates.toolCode(), HiCoreTools.RemoveAllPATObjectsBut.toolCode(), HiCoreTools.RemoveSpecificPATObjects.toolCode(), trigTools.SwitchOnTriggerStandAlone.toolCode(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.toolCode(), trackTools.MakeTrackCandidates.toolCode(), tauTools.AddTauCollection.toolCode(), HiCoreTools.RemoveCleaning.toolCode(), trigTools.SwitchOnTriggerMatching.toolCode(), HiCoreTools.AddCleaning.toolCode(), trigTools.SwitchOnTriggerMatchingStandAlone.toolCode(), trigTools.SwitchOnTriggerMatchEmbedding.toolCode(), jetTools.AddJetCollection.toolCode(), jetTools.SwitchJetCollection.toolCode(), jetTools.UpdateJetCollection.toolCode(), jetTools.AddJetID.toolCode(), jetTools.SetTagInfos.toolCode(), and runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.updateJECs().