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 818 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 825 of file jetTools.py.

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

825  def __init__(self):
826  """
827  Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase to be usable in the configEditor.
828  """
829  ## initialization of the base class
830  ConfigToolBase.__init__(self)
831  ## add all parameters that should be known to the class
832  self.addParameter(self._defaultParameters,'labelName', 'UNDEFINED', "Label name of the new patJet collection.", str)
833  self.addParameter(self._defaultParameters,'postfix','', "Postfix from usePF2PAT.", str)
834  self.addParameter(self._defaultParameters,'btagPrefix','', "Prefix to be added to b-tag discriminator and TagInfo names", str)
835  self.addParameter(self._defaultParameters,'jetSource','', "Label of the input collection from which the new patJet collection should be created", cms.InputTag)
836  self.addParameter(self._defaultParameters,'pfCandidates',cms.InputTag('particleFlow'), "Label of the input collection for candidatecandidatese used in b-tagging", cms.InputTag)
837  self.addParameter(self._defaultParameters,'explicitJTA', False, "Use explicit jet-track association")
838  self.addParameter(self._defaultParameters,'pvSource',cms.InputTag('offlinePrimaryVertices'), "Label of the input collection for primary vertices used in b-tagging", cms.InputTag)
839  self.addParameter(self._defaultParameters,'svSource',cms.InputTag('inclusiveCandidateSecondaryVertices'), "Label of the input collection for IVF vertices used in b-tagging", cms.InputTag)
840  self.addParameter(self._defaultParameters,'elSource',cms.InputTag('gedGsfElectrons'), "Label of the input collection for electrons used in b-tagging", cms.InputTag)
841  self.addParameter(self._defaultParameters,'muSource',cms.InputTag('muons'), "Label of the input collection for muons used in b-tagging", cms.InputTag)
842  self.addParameter(self._defaultParameters,'runIVF', False, "Re-run IVF secondary vertex reconstruction")
843  self.addParameter(self._defaultParameters,'tightBTagNTkHits', False, "Enable legacy tight b-tag track selection")
844  self.addParameter(self._defaultParameters,'loadStdRecoBTag', False, "Load the standard reconstruction b-tagging modules")
845  self.addParameter(self._defaultParameters,'svClustering', False, "Secondary vertices ghost-associated to jets using jet clustering (mostly intended for subjets)")
846  self.addParameter(self._defaultParameters,'fatJets', cms.InputTag(''), "Fat jet collection used for secondary vertex clustering", cms.InputTag)
847  self.addParameter(self._defaultParameters,'groomedFatJets', cms.InputTag(''), "Groomed fat jet collection used for secondary vertex clustering", cms.InputTag)
848  self.addParameter(self._defaultParameters,'algo', 'AK', "Jet algorithm of the input collection from which the new patJet collection should be created")
849  self.addParameter(self._defaultParameters,'rParam', 0.4, "Jet size (distance parameter R used in jet clustering)")
850  self.addParameter(self._defaultParameters,'getJetMCFlavour', True, "Get jet MC truth flavour")
851  self.addParameter(self._defaultParameters,'genJetCollection', cms.InputTag("ak4GenJets"), "GenJet collection to match to", cms.InputTag)
852  self.addParameter(self._defaultParameters,'genParticles', cms.InputTag("genParticles"), "GenParticle collection to be used", cms.InputTag)
853  self.addParameter(self._defaultParameters,'jetCorrections',None, "Add all relevant information about jet energy corrections that you want to be added to your new patJet \
854  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 \
855  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 \
856  new patJet collection. This should be given as a list of strings. Available values are L1Offset, L1FastJet, L1JPTOffset, L2Relative, L3Absolute, L5Falvour, L7Parton; the \
857  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 \
858  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 \
859  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\' \
860  and \'type-2\' are not case sensitive.", tuple, acceptNoneValue=True)
861  self.addParameter(self._defaultParameters,'btagDiscriminators',['None'], "If you are interested in btagging, in most cases just the labels of the btag discriminators that \
862  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. \
863  If this list is empty no btag discriminator information will be added to your new patJet collection.", allowedValues=(list(set().union(supportedBtagDiscr.keys(),supportedMetaDiscr.keys()))),Type=list)
864  self.addParameter(self._defaultParameters,'btagInfos',['None'], "The btagInfos objects contain all relevant information from which all discriminators of a certain \
865  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 \
866  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 \
867  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 \
868  will be added to your new patJet collection.", allowedValues=supportedBtagInfos,Type=list)
869  self.addParameter(self._defaultParameters,'jetTrackAssociation',False, "Add JetTrackAssociation and JetCharge from reconstructed tracks to your new patJet collection. This \
870  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 \
871  your new patJetCollection. If btag information of any form is added to the new patJet collection this information will be added automatically.")
872  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 \
873  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 \
874  to more than one output module.")
875  ## set defaults
876  self._parameters=copy.deepcopy(self._defaultParameters)
877  ## add comments
878  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\
879  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 \
880  the descriptions of each parameter for more information."
881 
_parameters
initialization of the base class
Definition: jetTools.py:876
_comment
add comments
Definition: jetTools.py:878
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 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 888 of file jetTools.py.

References editorTools.UserCodeTool._defaultParameters, heavyIonTools.ConfigureHeavyIons._defaultParameters, coreTools.RunOnData._defaultParameters, Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool._defaultParameters, heavyIonTools.ProductionDefaults._defaultParameters, editorTools.ChangeSource._defaultParameters, cmsswVersionTools.PickRelValInputFiles._defaultParameters, coreTools.RemoveMCMatching._defaultParameters, heavyIonTools.SelectionDefaults._defaultParameters, heavyIonTools.DisbaleMonteCarloDeps._defaultParameters, jetTools.AddJetCollection._defaultParameters, SignedImpactParameter3D.apply(), SignedDecayLength3D.apply(), SignedTransverseImpactParameter.apply(), gen::PhotosInterfaceBase.apply(), SurveyParameters.apply(), DummyOOTPileupCorrection.apply(), MatrixReader.MatrixReader.apply, gen::PhotosppInterface.apply(), gen::PhotosInterface.apply(), FWPSetCellEditor.apply(), BeamSpotAlignmentParameters.apply(), RigidBodyAlignmentParameters.apply(), FWGUIEventFilter.apply(), DeviationsFromFileSensor2D.apply(), AlignmentParameters.apply(), ConfigToolBase.ConfigToolBase.apply(), BowedSurfaceAlignmentParameters.apply(), OOTPileupCorrData.apply(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ImportTool.apply(), Vispa.Plugins.ConfigEditor.ToolDataAccessor.ApplyTool.apply(), AbsOOTPileupCorrection.apply(), Vispa.Gui.BoxContentDialog.BoxContentDialog.apply(), TwoBowedSurfacesAlignmentParameters.apply(), reco::modules::TrackerTrackHitFilter::Rule.apply(), Vispa.Plugins.ConfigEditor.ToolDialog.ToolDialog.apply(), cmsswVersionTools.PickRelValInputFiles.apply(), models.RegExp.apply(), npstat::ArrayND< Num1, Len1, Dim1 >.apply(), npstat::ArrayND< Numeric >.apply(), npstat::ArrayND< Numeric, StackLen, StackDim >.apply(), Config.ProcessModifier.apply(), PedeReader.setParameter(), QIE8Simulator.setParameter(), AbsElectronicODERHS.setParameter(), SiStripLorentzAngleCalibration.setParameter(), SiPixelLorentzAngleCalibration.setParameter(), IntegratedCalibrationBase.setParameter(), SiStripBackplaneCalibration.setParameter(), fit::RootMinuit< Function >.setParameter(), and ConfigToolBase.ConfigToolBase.setParameter().

888  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):
889  """
890  Function call wrapper. This will check the parameters and call the actual implementation that
891  can be found in toolCode via the base class function apply.
892  """
893  if labelName is None:
894  labelName=self._defaultParameters['labelName'].value
895  self.setParameter('labelName', labelName)
896  if postfix is None:
897  postfix=self._defaultParameters['postfix'].value
898  self.setParameter('postfix', postfix)
899  if btagPrefix is None:
900  btagPrefix=self._defaultParameters['btagPrefix'].value
901  self.setParameter('btagPrefix', btagPrefix)
902  if jetSource is None:
903  jetSource=self._defaultParameters['jetSource'].value
904  self.setParameter('jetSource', jetSource)
905  if pfCandidates is None:
906  pfCandidates=self._defaultParameters['pfCandidates'].value
907  self.setParameter('pfCandidates', pfCandidates)
908  if explicitJTA is None:
909  explicitJTA=self._defaultParameters['explicitJTA'].value
910  self.setParameter('explicitJTA', explicitJTA)
911  if pvSource is None:
912  pvSource=self._defaultParameters['pvSource'].value
913  self.setParameter('pvSource', pvSource)
914  if svSource is None:
915  svSource=self._defaultParameters['svSource'].value
916  self.setParameter('svSource', svSource)
917  if elSource is None:
918  elSource=self._defaultParameters['elSource'].value
919  self.setParameter('elSource', elSource)
920  if muSource is None:
921  muSource=self._defaultParameters['muSource'].value
922  self.setParameter('muSource', muSource)
923  if runIVF is None:
924  runIVF=self._defaultParameters['runIVF'].value
925  self.setParameter('runIVF', runIVF)
926  if tightBTagNTkHits is None:
927  tightBTagNTkHits=self._defaultParameters['tightBTagNTkHits'].value
928  self.setParameter('tightBTagNTkHits', tightBTagNTkHits)
929  if loadStdRecoBTag is None:
930  loadStdRecoBTag=self._defaultParameters['loadStdRecoBTag'].value
931  self.setParameter('loadStdRecoBTag', loadStdRecoBTag)
932  if svClustering is None:
933  svClustering=self._defaultParameters['svClustering'].value
934  self.setParameter('svClustering', svClustering)
935  if fatJets is None:
936  fatJets=self._defaultParameters['fatJets'].value
937  self.setParameter('fatJets', fatJets)
938  if groomedFatJets is None:
939  groomedFatJets=self._defaultParameters['groomedFatJets'].value
940  self.setParameter('groomedFatJets', groomedFatJets)
941  if algo is None:
942  algo=self._defaultParameters['algo'].value
943  self.setParameter('algo', algo)
944  if rParam is None:
945  rParam=self._defaultParameters['rParam'].value
946  self.setParameter('rParam', rParam)
947  if getJetMCFlavour is None:
948  getJetMCFlavour=self._defaultParameters['getJetMCFlavour'].value
949  self.setParameter('getJetMCFlavour', getJetMCFlavour)
950  if genJetCollection is None:
951  genJetCollection=self._defaultParameters['genJetCollection'].value
952  self.setParameter('genJetCollection', genJetCollection)
953  if genParticles is None:
954  genParticles=self._defaultParameters['genParticles'].value
955  self.setParameter('genParticles', genParticles)
956  if jetCorrections is None:
957  jetCorrections=self._defaultParameters['jetCorrections'].value
958  self.setParameter('jetCorrections', jetCorrections)
959  if btagDiscriminators is None:
960  btagDiscriminators=self._defaultParameters['btagDiscriminators'].value
961  self.setParameter('btagDiscriminators', btagDiscriminators)
962  if btagInfos is None:
963  btagInfos=self._defaultParameters['btagInfos'].value
964  self.setParameter('btagInfos', btagInfos)
965  if jetTrackAssociation is None:
966  jetTrackAssociation=self._defaultParameters['jetTrackAssociation'].value
967  self.setParameter('jetTrackAssociation', jetTrackAssociation)
968  if outputModules is None:
969  outputModules=self._defaultParameters['outputModules'].value
970  self.setParameter('outputModules', outputModules)
971  self.apply(process)
972 
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:888
def jetTools.AddJetCollection.getDefaultParameters (   self)
def jetTools.AddJetCollection.toolCode (   self,
  process 
)
Tool code implementation

Definition at line 973 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(), cms::dd.split(), jetTools.undefinedLabelName(), jetTools.unsupportedJetAlgorithm(), and pileupCalc.upper.

973  def toolCode(self, process):
974  """
975  Tool code implementation
976  """
977  task = getPatAlgosToolsTask(process)
978 
979  ## initialize parameters
980  labelName=self._parameters['labelName'].value
981  postfix=self._parameters['postfix'].value
982  btagPrefix=self._parameters['btagPrefix'].value
983  jetSource=self._parameters['jetSource'].value
984  pfCandidates=self._parameters['pfCandidates'].value
985  explicitJTA=self._parameters['explicitJTA'].value
986  pvSource=self._parameters['pvSource'].value
987  svSource=self._parameters['svSource'].value
988  elSource=self._parameters['elSource'].value
989  muSource=self._parameters['muSource'].value
990  runIVF=self._parameters['runIVF'].value
991  tightBTagNTkHits=self._parameters['tightBTagNTkHits'].value
992  loadStdRecoBTag=self._parameters['loadStdRecoBTag'].value
993  svClustering=self._parameters['svClustering'].value
994  fatJets=self._parameters['fatJets'].value
995  groomedFatJets=self._parameters['groomedFatJets'].value
996  algo=self._parameters['algo'].value
997  rParam=self._parameters['rParam'].value
998  getJetMCFlavour=self._parameters['getJetMCFlavour'].value
999  genJetCollection=self._parameters['genJetCollection'].value
1000  genParticles=self._parameters['genParticles'].value
1001  jetCorrections=self._parameters['jetCorrections'].value
1002  btagDiscriminators=list(self._parameters['btagDiscriminators'].value)
1003  btagInfos=list(self._parameters['btagInfos'].value)
1004  jetTrackAssociation=self._parameters['jetTrackAssociation'].value
1005  outputModules=list(self._parameters['outputModules'].value)
1006 
1007  ## added jets must have a defined 'labelName'
1008  if labelName=='UNDEFINED':
1009  undefinedLabelName(self)
1010 
1011  ## a list of all producer modules, which are already known to process
1012  knownModules = process.producerNames().split()
1013  ## determine whether btagging information is required or not
1014  if btagDiscriminators.count('None')>0:
1015  btagDiscriminators.remove('None')
1016  if btagInfos.count('None')>0:
1017  btagInfos.remove('None')
1018  bTagging=(len(btagDiscriminators)>0 or len(btagInfos)>0)
1019  ## check if any legacy btag discriminators are being used
1020  infos = 0
1021  for info in btagInfos:
1022  if info.startswith('pf'): infos = infos + 1
1023  if 'softpf' in info.lower(): infos = infos + 1
1024  tags = 0
1025  for tag in btagDiscriminators:
1026  if tag.startswith('pf'): tags = tags + 1
1027  if 'softpf' in tag.lower(): tags = tags + 1
1028  bTaggingLegacy=(len(btagDiscriminators)>tags or len(btagInfos)>infos)
1029  ## construct postfix label for auxiliary modules; this postfix
1030  ## label will start with a capitalized first letter following
1031  ## the CMS naming conventions and for improved readablility
1032  _labelName=labelName[:1].upper()+labelName[1:]
1033 
1034  ## supported algo types are ak, ca, and kt
1035  _algo=''
1036  for x in ["ak", "ca", "kt"]:
1037  if x in algo.lower():
1038  _algo=supportedJetAlgos[x]
1039  break
1040  if _algo=='':
1042  ## add new patJets to process (keep instance for later further modifications)
1043  from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import _patJets as patJets
1044  if 'patJets'+_labelName+postfix in knownModules :
1045  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
1046  _newPatJets.jetSource=jetSource
1047  else :
1048  addToProcessAndTask('patJets'+_labelName+postfix, patJets.clone(jetSource=jetSource), process, task)
1049  _newPatJets=getattr(process, 'patJets'+_labelName+postfix)
1050  knownModules.append('patJets'+_labelName+postfix)
1051  ## add new selectedPatJets to process
1052  from PhysicsTools.PatAlgos.selectionLayer1.jetSelector_cfi import selectedPatJets
1053  if 'selectedPatJets'+_labelName+postfix in knownModules :
1054  _newSelectedPatJets=getattr(process, 'selectedPatJets'+_labelName+postfix)
1055  _newSelectedPatJets.src='patJets'+_labelName+postfix
1056  else :
1057  addToProcessAndTask('selectedPatJets'+_labelName+postfix,
1058  selectedPatJets.clone(src='patJets'+_labelName+postfix),
1059  process, task)
1060  knownModules.append('selectedPatJets'+_labelName+postfix)
1061 
1062  ## add new patJetPartonMatch to process
1063  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetPartonMatch
1064  if 'patJetPartonMatch'+_labelName+postfix in knownModules :
1065  _newPatJetPartonMatch=getattr(process, 'patJetPartonMatch'+_labelName+postfix)
1066  _newPatJetPartonMatch.src=jetSource
1067  _newPatJetPartonMatch.matched=genParticles
1068  else :
1069  addToProcessAndTask('patJetPartonMatch'+_labelName+postfix,
1070  patJetPartonMatch.clone(src=jetSource, matched=genParticles),
1071  process, task)
1072  knownModules.append('patJetPartonMatch'+_labelName+postfix)
1073  ## add new patJetGenJetMatch to process
1074  from PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi import patJetGenJetMatch
1075  if 'patJetGenJetMatch'+_labelName+postfix in knownModules :
1076  _newPatJetGenJetMatch=getattr(process, 'patJetGenJetMatch'+_labelName+postfix)
1077  _newPatJetGenJetMatch.src=jetSource
1078  _newPatJetGenJetMatch.maxDeltaR=rParam
1079  _newPatJetGenJetMatch.matched=genJetCollection
1080  else :
1081  addToProcessAndTask('patJetGenJetMatch'+_labelName+postfix,
1082  patJetGenJetMatch.clone(src=jetSource, maxDeltaR=rParam, matched=genJetCollection),
1083  process, task)
1084  knownModules.append('patJetGenJetMatch'+_labelName+postfix)
1085  ## modify new patJets collection accordingly
1086  _newPatJets.genJetMatch.setModuleLabel('patJetGenJetMatch'+_labelName+postfix)
1087  _newPatJets.genPartonMatch.setModuleLabel('patJetPartonMatch'+_labelName+postfix)
1088  ## get jet MC truth flavour if required by user
1089  if (getJetMCFlavour):
1090  ## legacy jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
1091  ## add new patJetPartonsLegacy to process
1092  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonsLegacy
1093  if 'patJetPartonsLegacy'+postfix not in knownModules :
1094  addToProcessAndTask('patJetPartonsLegacy'+postfix, patJetPartonsLegacy.clone(src=genParticles),
1095  process, task)
1096  knownModules.append('patJetPartonsLegacy'+postfix)
1097  else:
1098  getattr(process, 'patJetPartonsLegacy'+postfix).src=genParticles
1099  ## add new patJetPartonAssociationLegacy to process
1100  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetPartonAssociationLegacy
1101  if 'patJetPartonAssociationLegacy'+_labelName+postfix in knownModules :
1102  _newPatJetPartonAssociation=getattr(process, 'patJetPartonAssociationLegacy'+_labelName+postfix)
1103  _newPatJetPartonAssociation.jets=jetSource
1104  else :
1105  addToProcessAndTask('patJetPartonAssociationLegacy'+_labelName+postfix,
1106  patJetPartonAssociationLegacy.clone(jets=jetSource), process, task)
1107  knownModules.append('patJetPartonAssociationLegacy'+_labelName+postfix)
1108  ## add new patJetPartonAssociationLegacy to process
1109  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociationLegacy
1110  if 'patJetFlavourAssociationLegacy'+_labelName+postfix in knownModules :
1111  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociationLegacy'+_labelName+postfix)
1112  _newPatJetFlavourAssociation.srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix
1113  else:
1114  addToProcessAndTask('patJetFlavourAssociationLegacy'+_labelName+postfix,
1115  patJetFlavourAssociationLegacy.clone(
1116  srcByReference='patJetPartonAssociationLegacy'+_labelName+postfix),
1117  process, task)
1118  knownModules.append('patJetFlavourAssociationLegacy'+_labelName+postfix)
1119  ## modify new patJets collection accordingly
1120  _newPatJets.JetPartonMapSource.setModuleLabel('patJetFlavourAssociationLegacy'+_labelName+postfix)
1121  ## new jet flavour (see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideBTagMCTools)
1122  ## add new patJetPartons to process
1124  if 'patJetPartons'+postfix not in knownModules :
1125  addToProcessAndTask('patJetPartons'+postfix, patJetPartons.clone(particles=genParticles), process, task)
1126  knownModules.append('patJetPartons'+postfix)
1127  else:
1128  getattr(process, 'patJetPartons'+postfix).particles=genParticles
1129  ## add new patJetFlavourAssociation to process
1130  from PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff import patJetFlavourAssociation
1131  if 'patJetFlavourAssociation'+_labelName+postfix in knownModules :
1132  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
1133  _newPatJetFlavourAssociation.jets=jetSource
1134  _newPatJetFlavourAssociation.jetAlgorithm=_algo
1135  _newPatJetFlavourAssociation.rParam=rParam
1136  _newPatJetFlavourAssociation.bHadrons=cms.InputTag("patJetPartons"+postfix,"bHadrons")
1137  _newPatJetFlavourAssociation.cHadrons=cms.InputTag("patJetPartons"+postfix,"cHadrons")
1138  _newPatJetFlavourAssociation.partons=cms.InputTag("patJetPartons"+postfix,"physicsPartons")
1139  _newPatJetFlavourAssociation.leptons=cms.InputTag("patJetPartons"+postfix,"leptons")
1140  else :
1141  addToProcessAndTask('patJetFlavourAssociation'+_labelName+postfix,
1142  patJetFlavourAssociation.clone(
1143  jets=jetSource,
1144  jetAlgorithm=_algo,
1145  rParam=rParam,
1146  bHadrons = cms.InputTag("patJetPartons"+postfix,"bHadrons"),
1147  cHadrons = cms.InputTag("patJetPartons"+postfix,"cHadrons"),
1148  partons = cms.InputTag("patJetPartons"+postfix,"physicsPartons"),
1149  leptons = cms.InputTag("patJetPartons"+postfix,"leptons")),
1150  process, task)
1151 
1152  knownModules.append('patJetFlavourAssociation'+_labelName+postfix)
1153  ## modify new patJets collection accordingly
1154  _newPatJets.JetFlavourInfoSource.setModuleLabel('patJetFlavourAssociation'+_labelName+postfix)
1155  ## if the jets is actually a subjet
1156  if fatJets != cms.InputTag('') and groomedFatJets != cms.InputTag(''):
1157  _newPatJetFlavourAssociation=getattr(process, 'patJetFlavourAssociation'+_labelName+postfix)
1158  _newPatJetFlavourAssociation.jets=fatJets
1159  _newPatJetFlavourAssociation.groomedJets=groomedFatJets
1160  _newPatJetFlavourAssociation.subjets=jetSource
1161  _newPatJets.JetFlavourInfoSource=cms.InputTag('patJetFlavourAssociation'+_labelName+postfix,'SubJets')
1162  else:
1163  _newPatJets.getJetMCFlavour = False
1164 
1165  ## add jetTrackAssociation for legacy btagging (or jetTracksAssociation only) if required by user
1166  if (jetTrackAssociation or bTaggingLegacy):
1167  ## add new jetTracksAssociationAtVertex to process
1168  from RecoJets.JetAssociationProducers.ak4JTA_cff import ak4JetTracksAssociatorAtVertex, ak4JetTracksAssociatorExplicit
1169  if 'jetTracksAssociationAtVertex'+_labelName+postfix in knownModules :
1170  _newJetTracksAssociationAtVertex=getattr(process, 'jetTracksAssociatorAtVertex'+_labelName+postfix)
1171  _newJetTracksAssociationAtVertex.jets=jetSource
1172  _newJetTracksAssociationAtVertex.pvSrc=pvSource
1173  else:
1174  jetTracksAssociator=ak4JetTracksAssociatorAtVertex
1175  if explicitJTA:
1176  jetTracksAssociator=ak4JetTracksAssociatorExplicit
1177  addToProcessAndTask('jetTracksAssociatorAtVertex'+_labelName+postfix,
1178  jetTracksAssociator.clone(jets=jetSource,pvSrc=pvSource),
1179  process, task)
1180  knownModules.append('jetTracksAssociationAtVertex'+_labelName+postfix)
1181  ## add new patJetCharge to process
1183  if 'patJetCharge'+_labelName+postfix in knownModules :
1184  _newPatJetCharge=getattr(process, 'patJetCharge'+_labelName+postfix)
1185  _newPatJetCharge.src='jetTracksAssociatorAtVertex'+_labelName+postfix
1186  else:
1187  addToProcessAndTask('patJetCharge'+_labelName+postfix,
1188  patJetCharge.clone(src = 'jetTracksAssociatorAtVertex'+_labelName+postfix),
1189  process, task)
1190  knownModules.append('patJetCharge'+_labelName+postfix)
1191  ## modify new patJets collection accordingly
1192  _newPatJets.addAssociatedTracks=True
1193  _newPatJets.trackAssociationSource=cms.InputTag('jetTracksAssociatorAtVertex'+_labelName+postfix)
1194  _newPatJets.addJetCharge=True
1195  _newPatJets.jetChargeSource=cms.InputTag('patJetCharge'+_labelName+postfix)
1196  else:
1197  ## modify new patJets collection accordingly
1198  _newPatJets.addAssociatedTracks=False
1199  _newPatJets.trackAssociationSource=''
1200  _newPatJets.addJetCharge=False
1201  _newPatJets.jetChargeSource=''
1202  ## run btagging if required by user
1203  if (bTagging):
1204  setupBTagging(process, jetSource, pfCandidates, explicitJTA, pvSource, svSource, elSource, muSource, runIVF, tightBTagNTkHits, loadStdRecoBTag, svClustering, fatJets, groomedFatJets,
1205  _algo, rParam, btagDiscriminators, btagInfos, _newPatJets, _labelName, btagPrefix, postfix)
1206  else:
1207  _newPatJets.addBTagInfo = False
1208  _newPatJets.addTagInfos = False
1209  ## adjust output module; these collections will be empty anyhow, but we do it to stay clean
1210  for outputModule in outputModules:
1211  if hasattr(process,outputModule):
1212  getattr(process,outputModule).outputCommands.append("drop *_"+'selected'+_labelName+postfix+"_tagInfos_*")
1213 
1214  ## add jet correction factors if required by user
1215  if (jetCorrections != None):
1216  ## check the jet corrections format
1217  checkJetCorrectionsFormat(jetCorrections)
1218  ## setup jet energy corrections and MET corrections
1219  setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, _newPatJets, _labelName, postfix)
1220  else:
1221  ## switch jetCorrFactors off
1222  _newPatJets.addJetCorrFactors=False
1223 
1224 addJetCollection=AddJetCollection()
1225 
std::vector< std::string_view > split(std::string_view, const char *)
def undefinedLabelName(obj)
Definition: jetTools.py:1828
def toolCode(self, process)
Definition: jetTools.py:973
def addToProcessAndTask(label, module, process, task)
Definition: helpers.py:29
def setupJetCorrections(process, knownModules, jetCorrections, jetSource, pvSource, patJets, labelName, postfix)
Definition: jetTools.py:26
_parameters
initialization of the base class
Definition: jetTools.py:876
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:237
def checkJetCorrectionsFormat(jetCorrections)
Definition: jetTools.py:18
def getPatAlgosToolsTask(process)
Definition: helpers.py:14
def unsupportedJetAlgorithm(obj)
Definition: jetTools.py:1835
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 878 of file jetTools.py.

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 823 of file jetTools.py.

Referenced by HiCoreTools.RestrictInputToAOD.__call__(), trackTools.MakeAODTrackCandidates.__call__(), runJetUncertainties.RunJetUncertainties.__call__(), metTools.AddMETCollection.__call__(), HiCoreTools.RemoveMCMatching.__call__(), trackTools.MakePATTrackCandidates.__call__(), trigTools.SwitchOnTrigger.__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__call__(), HiCoreTools.RemoveAllPATObjectsBut.__call__(), HiCoreTools.RemoveSpecificPATObjects.__call__(), trigTools.SwitchOnTriggerStandAlone.__call__(), tauTools.AddTauCollection.__call__(), trackTools.MakeTrackCandidates.__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__(), metTools.AddMETCollection.__init__(), trackTools.MakeAODTrackCandidates.__init__(), HiCoreTools.RestrictInputToAOD.__init__(), runJetUncertainties.RunJetUncertainties.__init__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__init__(), HiCoreTools.RemoveMCMatching.__init__(), trackTools.MakePATTrackCandidates.__init__(), trigTools.SwitchOnTrigger.__init__(), HiCoreTools.RemoveAllPATObjectsBut.__init__(), HiCoreTools.RemoveSpecificPATObjects.__init__(), trigTools.SwitchOnTriggerStandAlone.__init__(), tauTools.AddTauCollection.__init__(), trackTools.MakeTrackCandidates.__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(), HiCoreTools.RemoveMCMatching.getDefaultParameters(), trackTools.MakePATTrackCandidates.getDefaultParameters(), trigTools.SwitchOnTrigger.getDefaultParameters(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.getDefaultParameters(), HiCoreTools.RemoveAllPATObjectsBut.getDefaultParameters(), HiCoreTools.RemoveSpecificPATObjects.getDefaultParameters(), trigTools.SwitchOnTriggerStandAlone.getDefaultParameters(), tauTools.AddTauCollection.getDefaultParameters(), trackTools.MakeTrackCandidates.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 876 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.getMETUncertainties(), 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(), tauTools.AddTauCollection.toolCode(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.toolCode(), trackTools.MakeTrackCandidates.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().