File indexing completed on 2024-04-06 12:23:57
0001 from PhysicsTools.PatAlgos.tools.ConfigToolBase import *
0002
0003 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
0004
0005 class AddMETCollection(ConfigToolBase):
0006 """
0007 Tool to add alternative MET collection(s) to your PAT Tuple
0008 """
0009 _label='addMETCollection'
0010 _defaultParameters=dicttypes.SortedKeysDict()
0011
0012 def __init__(self):
0013 """
0014 Initialize elements of the class. Note that the tool needs to be derived from ConfigToolBase
0015 to be usable in the configEditor.
0016 """
0017
0018 ConfigToolBase.__init__(self)
0019
0020 self.addParameter(self._defaultParameters,'labelName',self._defaultValue, "Label name of the new patMET collection.", str)
0021 self.addParameter(self._defaultParameters,'metSource',self._defaultValue, "Label of the input collection from which the new patMet collection should be created.", str)
0022
0023 self._parameters=copy.deepcopy(self._defaultParameters)
0024
0025 self._comment = "Add alternative MET collections as PAT object to your PAT Tuple"
0026
0027 def getDefaultParameters(self):
0028 """
0029 Return default parameters of the class
0030 """
0031 return self._defaultParameters
0032
0033 def __call__(self,process,labelName=None,metSource=None):
0034 """
0035 Function call wrapper. This will check the parameters and call the actual implementation that
0036 can be found in toolCode via the base class function apply.
0037 """
0038 if labelName is None:
0039 labelName=self._defaultParameters['labelName'].value
0040 self.setParameter('labelName', labelName)
0041 if metSource is None:
0042 metSource=self._defaultParameters['metSource'].value
0043 self.setParameter('metSource', metSource)
0044 self.apply(process)
0045
0046 def toolCode(self, process):
0047 """
0048 Tool code implementation
0049 """
0050
0051 labelName=self._parameters['labelName'].value
0052 metSource=self._parameters['metSource'].value
0053
0054 from PhysicsTools.PatAlgos.producersLayer1.metProducer_cfi import patMETs
0055
0056 task = getPatAlgosToolsTask(process)
0057 addToProcessAndTask(labelName, patMETs.clone(metSource = metSource, addMuonCorrections=False), process, task)
0058
0059
0060 if hasattr(process, "out"):
0061 process.out.outputCommands+=["keep *_{LABEL_NAME}_*_*".format(LABEL_NAME=labelName)]
0062
0063 addMETCollection=AddMETCollection()