CMS 3D CMS Logo

Public Member Functions | Private Attributes

ConfigBuilder::ConfigBuilder::MassSearchReplaceProcessNameVisitor Class Reference

List of all members.

Public Member Functions

def __init__
def doIt
def enter
def leave

Private Attributes

 _paramReplace
 _paramSearch
 _verbose
 _whitelist

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 1205 of file ConfigBuilder.py.


Constructor & Destructor Documentation

def ConfigBuilder::ConfigBuilder::MassSearchReplaceProcessNameVisitor::__init__ (   self,
  paramSearch,
  paramReplace,
  verbose = False,
  whitelist = () 
)

Definition at line 1208 of file ConfigBuilder.py.

01209                                                                                       :
01210                     self._paramReplace = paramReplace
01211                     self._paramSearch = paramSearch
01212                     self._verbose = verbose
01213                     self._whitelist = whitelist


Member Function Documentation

def ConfigBuilder::ConfigBuilder::MassSearchReplaceProcessNameVisitor::doIt (   self,
  pset,
  base 
)

Definition at line 1214 of file ConfigBuilder.py.

01215                                     :
01216                     if isinstance(pset, cms._Parameterizable):
01217                             for name in pset.parameters_().keys():
01218                                     # skip whitelisted parameters
01219                                     if name in self._whitelist:
01220                                         continue
01221                                     # if I use pset.parameters_().items() I get copies of the parameter values
01222                                     # so I can't modify the nested pset
01223                                     value = getattr(pset,name)
01224                                     type = value.pythonTypeName()
01225                                     if type in ('cms.PSet', 'cms.untracked.PSet'):
01226                                         self.doIt(value,base+"."+name)
01227                                     elif type in ('cms.VPSet', 'cms.untracked.VPSet'):
01228                                         for (i,ps) in enumerate(value): self.doIt(ps, "%s.%s[%d]"%(base,name,i) )
01229                                     elif type in ('cms.string', 'cms.untracked.string'):
01230                                         if value.value() == self._paramSearch:
01231                                             if self._verbose: print "set string process name %s.%s %s ==> %s"% (base, name, value, self._paramReplace)
01232                                             setattr(pset, name,self._paramReplace)
01233                                     elif type in ('cms.VInputTag', 'cms.untracked.VInputTag'):
01234                                             for (i,n) in enumerate(value):
01235                                                     if not isinstance(n, cms.InputTag):
01236                                                             n=cms.InputTag(n)
01237                                                     if n.processName == self._paramSearch:
01238                                                             # VInputTag can be declared as a list of strings, so ensure that n is formatted correctly
01239                                                             if self._verbose:print "set process name %s.%s[%d] %s ==> %s " % (base, name, i, n, self._paramReplace)
01240                                                             setattr(n,"processName",self._paramReplace)
01241                                                             value[i]=n
01242                                     elif type in ('cms.vstring', 'cms.untracked.vstring'):
01243                                             for (i,n) in enumerate(value):
01244                                                     if n==self._paramSearch:
01245                                                             getattr(pset,name)[i]=self._paramReplace
01246                                     elif type in ('cms.InputTag', 'cms.untracked.InputTag'):
01247                                             if value.processName == self._paramSearch:
01248                                                     if self._verbose: print "set process name %s.%s %s ==> %s " % (base, name, value, self._paramReplace)
01249                                                     setattr(getattr(pset, name),"processName",self._paramReplace)

def ConfigBuilder::ConfigBuilder::MassSearchReplaceProcessNameVisitor::enter (   self,
  visitee 
)

Definition at line 1250 of file ConfigBuilder.py.

01251                                    :
01252                     label = ''
01253                     try:
01254                             label = visitee.label()
01255                     except AttributeError:
01256                             label = '<Module not in a Process>'
01257                     except:
01258                             label = 'other execption'
01259                     self.doIt(visitee, label)

def ConfigBuilder::ConfigBuilder::MassSearchReplaceProcessNameVisitor::leave (   self,
  visitee 
)

Definition at line 1260 of file ConfigBuilder.py.

01261                                    :
01262                     pass
01263 
    #change the process name used to address HLT results in any sequence

Member Data Documentation

Definition at line 1208 of file ConfigBuilder.py.

Definition at line 1208 of file ConfigBuilder.py.

Definition at line 1208 of file ConfigBuilder.py.

Definition at line 1208 of file ConfigBuilder.py.