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

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

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 799 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().

799  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):
800  """
801  Function call wrapper. This will check the parameters and call the actual implementation that
802  can be found in toolCode via the base class function apply.
803  """
804  if labelName is None:
805  labelName=self._defaultParameters['labelName'].value
806  self.setParameter('labelName', labelName)
807  if postfix is None:
808  postfix=self._defaultParameters['postfix'].value
809  self.setParameter('postfix', postfix)
810  if btagPrefix is None:
811  btagPrefix=self._defaultParameters['btagPrefix'].value
812  self.setParameter('btagPrefix', btagPrefix)
813  if jetSource is None:
814  jetSource=self._defaultParameters['jetSource'].value
815  self.setParameter('jetSource', jetSource)
816  if pfCandidates is None:
817  pfCandidates=self._defaultParameters['pfCandidates'].value
818  self.setParameter('pfCandidates', pfCandidates)
819  if explicitJTA is None:
820  explicitJTA=self._defaultParameters['explicitJTA'].value
821  self.setParameter('explicitJTA', explicitJTA)
822  if pvSource is None:
823  pvSource=self._defaultParameters['pvSource'].value
824  self.setParameter('pvSource', pvSource)
825  if svSource is None:
826  svSource=self._defaultParameters['svSource'].value
827  self.setParameter('svSource', svSource)
828  if elSource is None:
829  elSource=self._defaultParameters['elSource'].value
830  self.setParameter('elSource', elSource)
831  if muSource is None:
832  muSource=self._defaultParameters['muSource'].value
833  self.setParameter('muSource', muSource)
834  if runIVF is None:
835  runIVF=self._defaultParameters['runIVF'].value
836  self.setParameter('runIVF', runIVF)
837  if tightBTagNTkHits is None:
838  tightBTagNTkHits=self._defaultParameters['tightBTagNTkHits'].value
839  self.setParameter('tightBTagNTkHits', tightBTagNTkHits)
840  if loadStdRecoBTag is None:
841  loadStdRecoBTag=self._defaultParameters['loadStdRecoBTag'].value
842  self.setParameter('loadStdRecoBTag', loadStdRecoBTag)
843  if svClustering is None:
844  svClustering=self._defaultParameters['svClustering'].value
845  self.setParameter('svClustering', svClustering)
846  if fatJets is None:
847  fatJets=self._defaultParameters['fatJets'].value
848  self.setParameter('fatJets', fatJets)
849  if groomedFatJets is None:
850  groomedFatJets=self._defaultParameters['groomedFatJets'].value
851  self.setParameter('groomedFatJets', groomedFatJets)
852  if algo is None:
853  algo=self._defaultParameters['algo'].value
854  self.setParameter('algo', algo)
855  if rParam is None:
856  rParam=self._defaultParameters['rParam'].value
857  self.setParameter('rParam', rParam)
858  if getJetMCFlavour is None:
859  getJetMCFlavour=self._defaultParameters['getJetMCFlavour'].value
860  self.setParameter('getJetMCFlavour', getJetMCFlavour)
861  if genJetCollection is None:
862  genJetCollection=self._defaultParameters['genJetCollection'].value
863  self.setParameter('genJetCollection', genJetCollection)
864  if genParticles is None:
865  genParticles=self._defaultParameters['genParticles'].value
866  self.setParameter('genParticles', genParticles)
867  if jetCorrections is None:
868  jetCorrections=self._defaultParameters['jetCorrections'].value
869  self.setParameter('jetCorrections', jetCorrections)
870  if btagDiscriminators is None:
871  btagDiscriminators=self._defaultParameters['btagDiscriminators'].value
872  self.setParameter('btagDiscriminators', btagDiscriminators)
873  if btagInfos is None:
874  btagInfos=self._defaultParameters['btagInfos'].value
875  self.setParameter('btagInfos', btagInfos)
876  if jetTrackAssociation is None:
877  jetTrackAssociation=self._defaultParameters['jetTrackAssociation'].value
878  self.setParameter('jetTrackAssociation', jetTrackAssociation)
879  if outputModules is None:
880  outputModules=self._defaultParameters['outputModules'].value
881  self.setParameter('outputModules', outputModules)
882  self.apply(process)
883 
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:799
def jetTools.AddJetCollection.getDefaultParameters (   self)
def jetTools.AddJetCollection.toolCode (   self,
  process 
)
Tool code implementation

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

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

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 734 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 787 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().