CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 667 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 674 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().

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

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

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

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

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

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

jetTools.AddJetCollection._defaultParameters
staticprivate

Definition at line 672 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 725 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().