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 831 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 838 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().

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

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

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

Definition at line 986 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 pfDeepBoostedJetPreprocessParams_cfi.upper.

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

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 836 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 889 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().