CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
helpers.MassSearchReplaceAnyInputTagVisitor Class Reference
Inheritance diagram for helpers.MassSearchReplaceAnyInputTagVisitor:

Public Member Functions

def __init__
 
def doIt
 
def enter
 
def leave
 

Static Public Member Functions

def standardizeInputTagFmt
 

Private Attributes

 _moduleLabelOnly
 
 _moduleName
 
 _paramReplace
 
 _paramSearch
 
 _verbose
 

Detailed Description

Visitor that travels within a cms.Sequence, looks for a parameter and replace its value
   It will climb down within PSets, VPSets and VInputTags to find its target

Definition at line 50 of file helpers.py.

Constructor & Destructor Documentation

def helpers.MassSearchReplaceAnyInputTagVisitor.__init__ (   self,
  paramSearch,
  paramReplace,
  verbose = False,
  moduleLabelOnly = False 
)

Member Function Documentation

def helpers.MassSearchReplaceAnyInputTagVisitor.doIt (   self,
  pset,
  base 
)

Definition at line 59 of file helpers.py.

References helpers.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly, helpers.MassSearchReplaceAnyInputTagVisitor._paramReplace, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramReplace, helpers.MassSearchReplaceParamVisitor._paramSearch, helpers.MassSearchReplaceAnyInputTagVisitor._paramSearch, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramSearch, helpers.MassSearchReplaceParamVisitor._verbose, HTMHTAnalyzer._verbose, helpers.MassSearchReplaceAnyInputTagVisitor._verbose, MuCorrMETAnalyzer._verbose, TcMETAnalyzer._verbose, PFMETAnalyzer._verbose, METAnalyzer._verbose, CaloMETAnalyzer._verbose, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._verbose, TkCommonModeCalculator.doIt(), MedianCommonModeCalculator.doIt(), TT6CommonModeCalculator.doIt(), smproxy::DQMArchiver.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), smproxy::DataManager.doIt(), smproxy::EventRetriever< RegInfo, QueueCollectionPtr >.doIt(), ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor.doIt(), and helpers.MassSearchReplaceAnyInputTagVisitor.standardizeInputTagFmt().

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceAnyInputTagVisitor.enter(), and helpers.MassSearchReplaceAnyInputTagVisitor.enter().

59 
60  def doIt(self,pset,base):
61  if isinstance(pset, cms._Parameterizable):
62  for name in pset.parameterNames_():
63  # if I use pset.parameters_().items() I get copies of the parameter values
64  # so I can't modify the nested pset
65  value = getattr(pset,name)
66  type = value.pythonTypeName()
67  if type == 'cms.PSet':
68  self.doIt(value,base+"."+name)
69  elif type == 'cms.VPSet':
70  for (i,ps) in enumerate(value): self.doIt(ps, "%s.%s[%d]"%(base,name,i) )
71  elif type == 'cms.VInputTag':
72  for (i,n) in enumerate(value):
73  # VInputTag can be declared as a list of strings, so ensure that n is formatted correctly
74  n = self.standardizeInputTagFmt(n)
75  if (n == self._paramSearch):
76  if self._verbose:print "Replace %s.%s[%d] %s ==> %s " % (base, name, i, self._paramSearch, self._paramReplace)
77  value[i] = self._paramReplace
78  elif self._moduleLabelOnly and n.moduleLabel == self._paramSearch.moduleLabel:
79  nrep = n; nrep.moduleLabel = self._paramReplace.moduleLabel
80  if self._verbose:print "Replace %s.%s[%d] %s ==> %s " % (base, name, i, n, nrep)
81  value[i] = nrep
82  elif type.endswith('.InputTag'):
83  if value == self._paramSearch:
84  if self._verbose:print "Replace %s.%s %s ==> %s " % (base, name, self._paramSearch, self._paramReplace)
85  from copy import deepcopy
86  if 'untracked' in type:
87  setattr(pset, name, cms.untracked.InputTag(self._paramReplace.getModuleLabel(),
88  self._paramReplace.getProductInstanceLabel(),
89  self._paramReplace.getProcessName()))
90  else:
91  setattr(pset, name, deepcopy(self._paramReplace) )
92  elif self._moduleLabelOnly and value.moduleLabel == self._paramSearch.moduleLabel:
93  from copy import deepcopy
94  repl = deepcopy(getattr(pset, name))
95  repl.moduleLabel = self._paramReplace.moduleLabel
96  setattr(pset, name, repl)
97  if self._verbose:print "Replace %s.%s %s ==> %s " % (base, name, value, repl)
98 
def helpers.MassSearchReplaceAnyInputTagVisitor.enter (   self,
  visitee 
)

Definition at line 106 of file helpers.py.

References TkCommonModeCalculator.doIt(), MedianCommonModeCalculator.doIt(), TT6CommonModeCalculator.doIt(), smproxy::DQMArchiver.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), smproxy::DataManager.doIt(), smproxy::EventRetriever< RegInfo, QueueCollectionPtr >.doIt(), and ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor.doIt().

107  def enter(self,visitee):
108  label = ''
109  try: label = visitee.label_()
110  except AttributeError: label = '<Module not in a Process>'
self.doIt(visitee, label)
def helpers.MassSearchReplaceAnyInputTagVisitor.leave (   self,
  visitee 
)

Definition at line 111 of file helpers.py.

112  def leave(self,visitee):
113  pass
114 
#FIXME name is not generic enough now
def helpers.MassSearchReplaceAnyInputTagVisitor.standardizeInputTagFmt (   inputTag)
static
helper function to ensure that the InputTag is defined as cms.InputTag(str) and not as a plain str 

Definition at line 100 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), and HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt().

101  def standardizeInputTagFmt(inputTag):
102  ''' helper function to ensure that the InputTag is defined as cms.InputTag(str) and not as a plain str '''
103  if not isinstance(inputTag, cms.InputTag):
104  return cms.InputTag(inputTag)
105  return inputTag

Member Data Documentation

helpers.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly
private

Definition at line 58 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), and HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt().

helpers.MassSearchReplaceAnyInputTagVisitor._moduleName
private

Definition at line 56 of file helpers.py.

helpers.MassSearchReplaceAnyInputTagVisitor._paramReplace
private

Definition at line 55 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), and HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt().

helpers.MassSearchReplaceAnyInputTagVisitor._paramSearch
private

Definition at line 54 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceParamVisitor.enter(), HiHelperTools.MassSearchParamVisitor.enter(), and helpers.MassSearchParamVisitor.enter().

helpers.MassSearchReplaceAnyInputTagVisitor._verbose
private

Definition at line 57 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceParamVisitor.enter(), cmsPerfSuite.PerfSuite.mkCandleDir(), cmsPerfSuite.PerfSuite.optionParse(), cmsPerfSuite.PerfSuite.printFlush(), cmsPerfSuite.PerfSuite.runcmd(), and cmsPerfSuite.PerfSuite.runCmdSet().