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 702 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 709 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().

709  def __init__(self):
710  """
711  Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase to be usable in the configEditor.
712  """
713  ## initialization of the base class
714  ConfigToolBase.__init__(self)
715  ## add all parameters that should be known to the class
716  self.addParameter(self._defaultParameters,'labelName', 'UNDEFINED', "Label name of the new patJet collection.", str)
717  self.addParameter(self._defaultParameters,'postfix','', "Postfix from usePF2PAT.", str)
718  self.addParameter(self._defaultParameters,'btagPrefix','', "Prefix to be added to b-tag discriminator and TagInfo names", str)
719  self.addParameter(self._defaultParameters,'jetSource','', "Label of the input collection from which the new patJet collection should be created", cms.InputTag)
720  self.addParameter(self._defaultParameters,'pfCandidates',cms.InputTag('particleFlow'), "Label of the input collection for candidatecandidatese used in b-tagging", cms.InputTag)
721  self.addParameter(self._defaultParameters,'explicitJTA', False, "Use explicit jet-track association")
722  self.addParameter(self._defaultParameters,'pvSource',cms.InputTag('offlinePrimaryVertices'), "Label of the input collection for primary vertices used in b-tagging", cms.InputTag)
723  self.addParameter(self._defaultParameters,'svSource',cms.InputTag('inclusiveCandidateSecondaryVertices'), "Label of the input collection for IVF vertices used in b-tagging", cms.InputTag)
724  self.addParameter(self._defaultParameters,'elSource',cms.InputTag('gedGsfElectrons'), "Label of the input collection for electrons used in b-tagging", cms.InputTag)
725  self.addParameter(self._defaultParameters,'muSource',cms.InputTag('muons'), "Label of the input collection for muons used in b-tagging", cms.InputTag)
726  self.addParameter(self._defaultParameters,'runIVF', False, "Re-run IVF secondary vertex reconstruction")
727  self.addParameter(self._defaultParameters,'tightBTagNTkHits', False, "Enable legacy tight b-tag track selection")
728  self.addParameter(self._defaultParameters,'loadStdRecoBTag', False, "Load the standard reconstruction b-tagging modules")
729  self.addParameter(self._defaultParameters,'svClustering', False, "Secondary vertices ghost-associated to jets using jet clustering (mostly intended for subjets)")
730  self.addParameter(self._defaultParameters,'fatJets', cms.InputTag(''), "Fat jet collection used for secondary vertex clustering", cms.InputTag)
731  self.addParameter(self._defaultParameters,'groomedFatJets', cms.InputTag(''), "Groomed fat jet collection used for secondary vertex clustering", cms.InputTag)
732  self.addParameter(self._defaultParameters,'algo', 'AK', "Jet algorithm of the input collection from which the new patJet collection should be created")
733  self.addParameter(self._defaultParameters,'rParam', 0.4, "Jet size (distance parameter R used in jet clustering)")
734  self.addParameter(self._defaultParameters,'getJetMCFlavour', True, "Get jet MC truth flavour")
735  self.addParameter(self._defaultParameters,'genJetCollection', cms.InputTag("ak4GenJets"), "GenJet collection to match to", cms.InputTag)
736  self.addParameter(self._defaultParameters,'genParticles', cms.InputTag("genParticles"), "GenParticle collection to be used", cms.InputTag)
737  self.addParameter(self._defaultParameters,'jetCorrections',None, "Add all relevant information about jet energy corrections that you want to be added to your new patJet \
738  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 \
739  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 \
740  new patJet collection. This should be given as a list of strings. Available values are L1Offset, L1FastJet, L1JPTOffset, L2Relative, L3Absolute, L5Falvour, L7Parton; the \
741  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 \
742  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 \
743  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\' \
744  and \'type-2\' are not case sensitive.", tuple, acceptNoneValue=True)
745  self.addParameter(self._defaultParameters,'btagDiscriminators',['None'], "If you are interested in btagging, in most cases just the labels of the btag discriminators that \
746  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. \
747  If this list is empty no btag discriminator information will be added to your new patJet collection.", allowedValues=(supportedBtagDiscr.keys()+supportedMetaDiscr.keys()),Type=list)
748  self.addParameter(self._defaultParameters,'btagInfos',['None'], "The btagInfos objects contain all relevant information from which all discriminators of a certain \
749  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 \
750  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 \
751  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 \
752  will be added to your new patJet collection.", allowedValues=supportedBtagInfos,Type=list)
753  self.addParameter(self._defaultParameters,'jetTrackAssociation',False, "Add JetTrackAssociation and JetCharge from reconstructed tracks to your new patJet collection. This \
754  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 \
755  your new patJetCollection. If btag information of any form is added to the new patJet collection this information will be added automatically.")
756  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 \
757  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 \
758  to more than one output module.")
759  ## set defaults
760  self._parameters=copy.deepcopy(self._defaultParameters)
761  ## add comments
762  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\
763  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 \
764  the descriptions of each parameter for more information."
765 
_parameters
initialization of the base class
Definition: jetTools.py:760
_comment
add comments
Definition: jetTools.py:762

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 772 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(), 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(), 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().

772  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):
773  """
774  Function call wrapper. This will check the parameters and call the actual implementation that
775  can be found in toolCode via the base class function apply.
776  """
777  if labelName is None:
778  labelName=self._defaultParameters['labelName'].value
779  self.setParameter('labelName', labelName)
780  if postfix is None:
781  postfix=self._defaultParameters['postfix'].value
782  self.setParameter('postfix', postfix)
783  if btagPrefix is None:
784  btagPrefix=self._defaultParameters['btagPrefix'].value
785  self.setParameter('btagPrefix', btagPrefix)
786  if jetSource is None:
787  jetSource=self._defaultParameters['jetSource'].value
788  self.setParameter('jetSource', jetSource)
789  if pfCandidates is None:
790  pfCandidates=self._defaultParameters['pfCandidates'].value
791  self.setParameter('pfCandidates', pfCandidates)
792  if explicitJTA is None:
793  explicitJTA=self._defaultParameters['explicitJTA'].value
794  self.setParameter('explicitJTA', explicitJTA)
795  if pvSource is None:
796  pvSource=self._defaultParameters['pvSource'].value
797  self.setParameter('pvSource', pvSource)
798  if svSource is None:
799  svSource=self._defaultParameters['svSource'].value
800  self.setParameter('svSource', svSource)
801  if elSource is None:
802  elSource=self._defaultParameters['elSource'].value
803  self.setParameter('elSource', elSource)
804  if muSource is None:
805  muSource=self._defaultParameters['muSource'].value
806  self.setParameter('muSource', muSource)
807  if runIVF is None:
808  runIVF=self._defaultParameters['runIVF'].value
809  self.setParameter('runIVF', runIVF)
810  if tightBTagNTkHits is None:
811  tightBTagNTkHits=self._defaultParameters['tightBTagNTkHits'].value
812  self.setParameter('tightBTagNTkHits', tightBTagNTkHits)
813  if loadStdRecoBTag is None:
814  loadStdRecoBTag=self._defaultParameters['loadStdRecoBTag'].value
815  self.setParameter('loadStdRecoBTag', loadStdRecoBTag)
816  if svClustering is None:
817  svClustering=self._defaultParameters['svClustering'].value
818  self.setParameter('svClustering', svClustering)
819  if fatJets is None:
820  fatJets=self._defaultParameters['fatJets'].value
821  self.setParameter('fatJets', fatJets)
822  if groomedFatJets is None:
823  groomedFatJets=self._defaultParameters['groomedFatJets'].value
824  self.setParameter('groomedFatJets', groomedFatJets)
825  if algo is None:
826  algo=self._defaultParameters['algo'].value
827  self.setParameter('algo', algo)
828  if rParam is None:
829  rParam=self._defaultParameters['rParam'].value
830  self.setParameter('rParam', rParam)
831  if getJetMCFlavour is None:
832  getJetMCFlavour=self._defaultParameters['getJetMCFlavour'].value
833  self.setParameter('getJetMCFlavour', getJetMCFlavour)
834  if genJetCollection is None:
835  genJetCollection=self._defaultParameters['genJetCollection'].value
836  self.setParameter('genJetCollection', genJetCollection)
837  if genParticles is None:
838  genParticles=self._defaultParameters['genParticles'].value
839  self.setParameter('genParticles', genParticles)
840  if jetCorrections is None:
841  jetCorrections=self._defaultParameters['jetCorrections'].value
842  self.setParameter('jetCorrections', jetCorrections)
843  if btagDiscriminators is None:
844  btagDiscriminators=self._defaultParameters['btagDiscriminators'].value
845  self.setParameter('btagDiscriminators', btagDiscriminators)
846  if btagInfos is None:
847  btagInfos=self._defaultParameters['btagInfos'].value
848  self.setParameter('btagInfos', btagInfos)
849  if jetTrackAssociation is None:
850  jetTrackAssociation=self._defaultParameters['jetTrackAssociation'].value
851  self.setParameter('jetTrackAssociation', jetTrackAssociation)
852  if outputModules is None:
853  outputModules=self._defaultParameters['outputModules'].value
854  self.setParameter('outputModules', outputModules)
855  self.apply(process)
856 
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:772
def jetTools.AddJetCollection.getDefaultParameters (   self)
def jetTools.AddJetCollection.toolCode (   self,
  process 
)
Tool code implementation

Definition at line 857 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.

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

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 707 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 760 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().