CMS 3D CMS Logo

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

Public Member Functions

def __delattr__
 
def __init__
 
def __setattr__
 
def __setstate__
 
def add_
 
def aliases_
 
def analyzerNames
 
def analyzers_
 
def dumpConfig
 
def dumpPython
 
def endpaths_
 
def es_prefers_
 
def es_producers_
 
def es_sources_
 
def extend
 
def fillProcessDesc
 
def filterNames
 
def filters_
 
def globalReplace
 
def load
 
def looper_
 
def name_
 
def outputModules_
 
def pathNames
 
def paths_
 
def prefer
 
def producerNames
 
def producers_
 
def prune
 
def psets_
 
def schedule_
 
def sequences_
 
def services_
 
def setLooper_
 
def setName_
 
def setPartialSchedule_
 
def setSchedule_
 
def setSource_
 
def setStrict
 
def setSubProcess_
 
def source_
 
def subProcess_
 
def validate
 
def vpsets_
 

Properties

 aliases = property(aliases_,doc="dictionary containing the aliases for the process")
 
 analyzers = property(analyzers_,doc="dictionary containing the analyzers for the process")
 
 endpaths = property(endpaths_,doc="dictionary containing the endpaths for the process")
 
 es_prefers = property(es_prefers_,doc="dictionary containing the es_prefers for the process")
 
 es_producers = property(es_producers_,doc="dictionary containing the es_producers for the process")
 
 es_sources = property(es_sources_,doc="dictionary containing the es_sources for the process")
 
 filters = property(filters_, doc="dictionary containing the filters for the process")
 
 looper = property(looper_,setLooper_,doc='the main looper or None if not set')
 
 outputModules = property(outputModules_,doc="dictionary containing the output_modules for the process")
 
 paths = property(paths_,doc="dictionary containing the paths for the process")
 
 process = property(name_,setName_, doc="name of the process")
 
 producers = property(producers_,doc="dictionary containing the producers for the process")
 
 psets = property(psets_,doc="dictionary containing the PSets for the process")
 
 schedule = property(schedule_,setSchedule_,doc='the schedule or None if not set')
 
 sequences = property(sequences_,doc="dictionary containing the sequences for the process")
 
 services = property(services_,doc="dictionary containing the services for the process")
 
 source = property(source_,setSource_,doc='the main source or None if not set')
 
 subProcess = property(subProcess_,setSubProcess_,doc='the SubProcess or None if not set')
 
 vpsets = property(vpsets_,doc="dictionary containing the PSets for the process")
 

Private Member Functions

def __findFirstSequenceUsingModule
 
def __setObjectLabel
 
def _dumpConfigESPrefers
 
def _dumpConfigNamedList
 
def _dumpConfigOptionallyNamedList
 
def _dumpConfigUnnamedList
 
def _dumpPython
 
def _dumpPythonList
 
def _findPreferred
 
def _insertInto
 
def _insertManyInto
 
def _insertOneInto
 
def _insertPaths
 
def _okToPlace
 
def _place
 
def _placeAlias
 
def _placeAnalyzer
 
def _placeEndPath
 
def _placeESPrefer
 
def _placeESProducer
 
def _placeESSource
 
def _placeFilter
 
def _placeLooper
 
def _placeOutputModule
 
def _placePath
 
def _placeProducer
 
def _placePSet
 
def _placeSequence
 
def _placeService
 
def _placeSource
 
def _placeSubProcess
 
def _placeVPSet
 
def _pruneModules
 
def _replaceInSequences
 
def _sequencesInDependencyOrder
 
def _validateSequence
 

Private Attributes

 __isStrict
 
 __ppset
 
 __process
 
 __processPSet
 
 __thelist
 

Detailed Description

Root class for a CMS configuration process

Definition at line 100 of file Config.py.

Constructor & Destructor Documentation

def Config.Process.__init__ (   self,
  name,
  Mods 
)
The argument 'name' will be the name applied to this Process
    Can optionally pass as additional arguments cms.Modifier instances
    which will be used ot modify the Process as it is built

Definition at line 102 of file Config.py.

Referenced by Config.Process.fillProcessDesc().

103  def __init__(self,name,*Mods):
104  """The argument 'name' will be the name applied to this Process
105  Can optionally pass as additional arguments cms.Modifier instances
106  which will be used ot modify the Process as it is built
107  """
108  self.__dict__['_Process__name'] = name
109  if not name.isalnum():
110  raise RuntimeError("Error: The process name is an empty string or contains non-alphanumeric characters")
111  self.__dict__['_Process__filters'] = {}
112  self.__dict__['_Process__producers'] = {}
113  self.__dict__['_Process__source'] = None
114  self.__dict__['_Process__looper'] = None
115  self.__dict__['_Process__subProcess'] = None
116  self.__dict__['_Process__schedule'] = None
117  self.__dict__['_Process__analyzers'] = {}
118  self.__dict__['_Process__outputmodules'] = {}
119  self.__dict__['_Process__paths'] = DictTypes.SortedKeysDict() # have to keep the order
120  self.__dict__['_Process__endpaths'] = DictTypes.SortedKeysDict() # of definition
121  self.__dict__['_Process__sequences'] = {}
122  self.__dict__['_Process__services'] = {}
123  self.__dict__['_Process__essources'] = {}
124  self.__dict__['_Process__esproducers'] = {}
125  self.__dict__['_Process__esprefers'] = {}
126  self.__dict__['_Process__aliases'] = {}
127  self.__dict__['_Process__psets']={}
128  self.__dict__['_Process__vpsets']={}
129  self.__dict__['_cloneToObjectDict'] = {}
130  # policy switch to avoid object overwriting during extend/load
131  self.__dict__['_Process__InExtendCall'] = False
132  self.__dict__['_Process__partialschedules'] = {}
133  self.__isStrict = False
134  self.__dict__['_Process__modifiers'] = Mods
135  for m in self.__modifiers:
136  m._setChosen()
def __init__
Definition: Config.py:102

Member Function Documentation

def Config.Process.__delattr__ (   self,
  name 
)

Definition at line 390 of file Config.py.

Referenced by Config.Process.__setattr__().

391  def __delattr__(self,name):
392  if not hasattr(self,name):
393  raise KeyError('process does not know about '+name)
394  elif name.startswith('_Process__'):
395  raise ValueError('this attribute cannot be deleted')
396  else:
397  # we have to remove it from all dictionaries/registries
398  dicts = [item for item in self.__dict__.values() if (type(item)==dict or type(item)==DictTypes.SortedKeysDict)]
399  for reg in dicts:
400  if reg.has_key(name): del reg[name]
401  # if it was a labelable object, the label needs to be removed
402  obj = getattr(self,name)
403  if isinstance(obj,_Labelable):
404  getattr(self,name).setLabel(None)
405  # now remove it from the process itself
406  try:
407  del self.__dict__[name]
408  except:
409  pass
def __delattr__
Definition: Config.py:390
def Config.Process.__findFirstSequenceUsingModule (   self,
  seqs,
  mod 
)
private
Given a container of sequences, find the first sequence containing mod
and return the sequence. If no sequence is found, return None

Definition at line 379 of file Config.py.

References list().

Referenced by Config.Process.__setattr__().

380  def __findFirstSequenceUsingModule(self,seqs,mod):
381  """Given a container of sequences, find the first sequence containing mod
382  and return the sequence. If no sequence is found, return None"""
383  from FWCore.ParameterSet.SequenceTypes import ModuleNodeVisitor
384  for sequenceable in seqs.itervalues():
385  l = list()
386  v = ModuleNodeVisitor(l)
387  sequenceable.visit(v)
388  if mod in l:
389  return sequenceable
return None
def __findFirstSequenceUsingModule
Definition: Config.py:379
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
def Config.Process.__setattr__ (   self,
  name,
  value 
)

Definition at line 301 of file Config.py.

References Config.Process.__delattr__(), Config.Process.__findFirstSequenceUsingModule(), Config.Process.__isStrict, Config.Process.__setObjectLabel(), Config.Process._okToPlace(), Config.Process._replaceInSequences(), Config.Process.add_(), Config.Process.endpaths, Config.Process.paths, and Config.Process.sequences.

Referenced by Config.Process._findPreferred(), and Config.Process.extend().

302  def __setattr__(self,name,value):
303  # check if the name is well-formed (only _ and alphanumerics are allowed)
304  if not name.replace('_','').isalnum():
305  raise ValueError('The label '+name+' contains forbiden characters')
306 
307  # private variable exempt from all this
308  if name.startswith('_Process__'):
309  self.__dict__[name]=value
310  return
311  if not isinstance(value,_ConfigureComponent):
312  raise TypeError("can only assign labels to an object which inherits from '_ConfigureComponent'\n"
313  +"an instance of "+str(type(value))+" will not work")
314  if not isinstance(value,_Labelable) and not isinstance(value,Source) and not isinstance(value,Looper) and not isinstance(value,Schedule):
315  if name == value.type_():
316  self.add_(value)
317  return
318  else:
319  raise TypeError("an instance of "+str(type(value))+" can not be assigned the label '"+name+"'.\n"+
320  "Please either use the label '"+value.type_()+" or use the 'add_' method instead.")
321  #clone the item
322  if self.__isStrict:
323  newValue =value.copy()
324  try:
325  newValue._filename = value._filename
326  except:
327  pass
328  value.setIsFrozen()
329  else:
330  newValue =value
331  if not self._okToPlace(name, value, self.__dict__):
332  newFile='top level config'
333  if hasattr(value,'_filename'):
334  newFile = value._filename
335  oldFile='top level config'
336  oldValue = getattr(self,name)
337  if hasattr(oldValue,'_filename'):
338  oldFile = oldValue._filename
339  msg = "Trying to override definition of process."+name
340  msg += "\n new object defined in: "+newFile
341  msg += "\n existing object defined in: "+oldFile
342  raise ValueError(msg)
343  # remove the old object of the name (if there is one)
344  if hasattr(self,name) and not (getattr(self,name)==newValue):
345  # Compain if items in sequences from load() statements have
346  # degeneratate names, but if the user overwrites a name in the
347  # main config, replace it everywhere
348  if isinstance(newValue, _Sequenceable):
349  if not self.__InExtendCall:
350  self._replaceInSequences(name, newValue)
351  else:
352  #should check to see if used in sequence before complaining
353  newFile='top level config'
354  if hasattr(value,'_filename'):
355  newFile = value._filename
356  oldFile='top level config'
357  oldValue = getattr(self,name)
358  if hasattr(oldValue,'_filename'):
359  oldFile = oldValue._filename
360  msg1 = "Trying to override definition of "+name+" while it is used by the sequence "
361  msg2 = "\n new object defined in: "+newFile
362  msg2 += "\n existing object defined in: "+oldFile
363  s = self.__findFirstSequenceUsingModule(self.sequences,oldValue)
364  if s is not None:
365  raise ValueError(msg1+s.label_()+msg2)
366  s = self.__findFirstSequenceUsingModule(self.paths,oldValue)
367  if s is not None:
368  raise ValueError(msg1+s.label_()+msg2)
369  s = self.__findFirstSequenceUsingModule(self.endpaths,oldValue)
370  if s is not None:
371  raise ValueError(msg1+s.label_()+msg2)
372  self.__delattr__(name)
373  self.__dict__[name]=newValue
374  if isinstance(newValue,_Labelable):
375  self.__setObjectLabel(newValue, name)
376  self._cloneToObjectDict[id(value)] = newValue
377  self._cloneToObjectDict[id(newValue)] = newValue
378  #now put in proper bucket
newValue._place(name,self)
def __setObjectLabel
Definition: Config.py:274
def _replaceInSequences
Definition: Config.py:725
def __delattr__
Definition: Config.py:390
def _okToPlace
Definition: Config.py:425
def __findFirstSequenceUsingModule
Definition: Config.py:379
def __setattr__
Definition: Config.py:301
def Config.Process.__setObjectLabel (   self,
  object,
  newLabel 
)
private

Definition at line 274 of file Config.py.

Referenced by Config.Process.__setattr__(), Config.Process._place(), and Config.Process.extend().

275  def __setObjectLabel(self, object, newLabel) :
276  if not object.hasLabel_() :
277  object.setLabel(newLabel)
278  return
279  if newLabel == object.label_() :
280  return
281  if newLabel is None :
282  object.setLabel(None)
283  return
284  if (hasattr(self, object.label_()) and id(getattr(self, object.label_())) == id(object)) :
285  msg100 = "Attempting to change the label of an attribute of the Process\n"
286  msg101 = "Old label = "+object.label_()+" New label = "+newLabel+"\n"
287  msg102 = "Type = "+str(type(object))+"\n"
288  msg103 = "Some possible solutions:\n"
289  msg104 = " 1. Clone modules instead of using simple assignment. Cloning is\n"
290  msg105 = " also preferred for other types when possible.\n"
291  msg106 = " 2. Declare new names starting with an underscore if they are\n"
292  msg107 = " for temporaries you do not want propagated into the Process. The\n"
293  msg108 = " underscore tells \"from x import *\" and process.load not to import\n"
294  msg109 = " the name.\n"
295  msg110 = " 3. Reorganize so the assigment is not necessary. Giving a second\n"
296  msg111 = " name to the same object usually causes confusion and problems.\n"
297  msg112 = " 4. Compose Sequences: newName = cms.Sequence(oldName)\n"
298  raise ValueError(msg100+msg101+msg102+msg103+msg104+msg105+msg106+msg107+msg108+msg109+msg110+msg111+msg112)
299  object.setLabel(None)
300  object.setLabel(newLabel)
def __setObjectLabel
Definition: Config.py:274
def Config.Process.__setstate__ (   self,
  pkldict 
)
Unpickling hook.

Since cloneToObjectDict stores a hash of objects by their
id() it needs to be updated when unpickling to use the
new object id values instantiated during the unpickle.

Definition at line 155 of file Config.py.

156  def __setstate__(self, pkldict):
157  """
158  Unpickling hook.
159 
160  Since cloneToObjectDict stores a hash of objects by their
161  id() it needs to be updated when unpickling to use the
162  new object id values instantiated during the unpickle.
163 
164  """
165  self.__dict__.update(pkldict)
166  tmpDict = {}
167  for value in self._cloneToObjectDict.values():
168  tmpDict[id(value)] = value
169  self.__dict__['_cloneToObjectDict'] = tmpDict
170 
171 
def __setstate__
Definition: Config.py:155
def Config.Process._dumpConfigESPrefers (   self,
  options 
)
private

Definition at line 637 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

638  def _dumpConfigESPrefers(self, options):
639  result = ''
640  for item in self.es_prefers_().itervalues():
641  result +=options.indentation()+'es_prefer '+item.targetLabel_()+' = '+item.dumpConfig(options)
return result
def _dumpConfigESPrefers
Definition: Config.py:637
def es_prefers_
Definition: Config.py:257
def Config.Process._dumpConfigNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 559 of file Config.py.

Referenced by Config.Process.dumpConfig().

560  def _dumpConfigNamedList(self,items,typeName,options):
561  returnValue = ''
562  for name,item in items:
563  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigNamedList
Definition: Config.py:559
def Config.Process._dumpConfigOptionallyNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 569 of file Config.py.

Referenced by Config.Process.dumpConfig().

570  def _dumpConfigOptionallyNamedList(self,items,typeName,options):
571  returnValue = ''
572  for name,item in items:
573  if name == item.type_():
574  name = ''
575  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigOptionallyNamedList
Definition: Config.py:569
def Config.Process._dumpConfigUnnamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 564 of file Config.py.

Referenced by Config.Process.dumpConfig().

565  def _dumpConfigUnnamedList(self,items,typeName,options):
566  returnValue = ''
567  for name,item in items:
568  returnValue +=options.indentation()+typeName+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigUnnamedList
Definition: Config.py:564
def Config.Process._dumpPython (   self,
  d,
  options 
)
private

Definition at line 691 of file Config.py.

Referenced by Config.Process.dumpPython().

692  def _dumpPython(self, d, options):
693  result = ''
694  for name, value in sorted(d.iteritems()):
695  result += value.dumpPythonAs(name,options)+'\n'
return result
def _dumpPython
Definition: Config.py:691
def Config.Process._dumpPythonList (   self,
  d,
  options 
)
private

Definition at line 642 of file Config.py.

Referenced by Config.Process.dumpPython().

643  def _dumpPythonList(self, d, options):
644  returnValue = ''
645  if isinstance(d, DictTypes.SortedKeysDict):
646  for name,item in d.items():
647  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
648  else:
649  for name,item in sorted(d.items()):
650  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonList
Definition: Config.py:642
def Config.Process._findPreferred (   self,
  esname,
  d,
  args,
  kargs 
)
private

Definition at line 955 of file Config.py.

References python.Node.Node.__setattr__(), psClasses.BuildTreeNode.__setattr__(), Config.Process.__setattr__(), and Config.FilteredStream.__setattr__.

956  def _findPreferred(self, esname, d,*args,**kargs):
957  # is esname a name in the dictionary?
958  if esname in d:
959  typ = d[esname].type_()
960  if typ == esname:
961  self.__setattr__( esname+"_prefer", ESPrefer(typ,*args,**kargs) )
962  else:
963  self.__setattr__( esname+"_prefer", ESPrefer(typ, esname,*args,**kargs) )
964  return True
965  else:
966  # maybe it's an unnamed ESModule?
967  found = False
968  for name, value in d.iteritems():
969  if value.type_() == esname:
970  if found:
971  raise RuntimeError("More than one ES module for "+esname)
972  found = True
973  self.__setattr__(esname+"_prefer", ESPrefer(d[esname].type_()) )
974  return found
975 
def _findPreferred
Definition: Config.py:955
def __setattr__
Definition: Config.py:301
def Config.Process._insertInto (   self,
  parameterSet,
  itemDict 
)
private

Definition at line 740 of file Config.py.

741  def _insertInto(self, parameterSet, itemDict):
742  for name,value in itemDict.iteritems():
value.insertInto(parameterSet, name)
def _insertInto
Definition: Config.py:740
def Config.Process._insertManyInto (   self,
  parameterSet,
  label,
  itemDict,
  tracked 
)
private

Definition at line 750 of file Config.py.

751  def _insertManyInto(self, parameterSet, label, itemDict, tracked):
752  l = []
753  for name,value in itemDict.iteritems():
754  newLabel = value.nameInProcessDesc_(name)
755  l.append(newLabel)
756  value.insertInto(parameterSet, name)
757  # alphabetical order is easier to compare with old language
758  l.sort()
parameterSet.addVString(tracked, label, l)
def _insertManyInto
Definition: Config.py:750
def Config.Process._insertOneInto (   self,
  parameterSet,
  label,
  item,
  tracked 
)
private

Definition at line 743 of file Config.py.

744  def _insertOneInto(self, parameterSet, label, item, tracked):
745  vitems = []
746  if not item == None:
747  newlabel = item.nameInProcessDesc_(label)
748  vitems = [newlabel]
749  item.insertInto(parameterSet, newlabel)
parameterSet.addVString(tracked, label, vitems)
def _insertOneInto
Definition: Config.py:743
def Config.Process._insertPaths (   self,
  processPSet 
)
private

Definition at line 759 of file Config.py.

References Config.Process.endpaths_(), edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, edm::PathsAndConsumesOfModules.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::SubProcess.schedule_, edm::EventProcessor.schedule_, and cmsPerfHarvest.visit().

760  def _insertPaths(self, processPSet):
761  scheduledPaths = []
762  triggerPaths = []
763  endpaths = []
764  if self.schedule_() == None:
765  # make one from triggerpaths & endpaths
766  for name,value in self.paths_().iteritems():
767  scheduledPaths.append(name)
768  triggerPaths.append(name)
769  for name,value in self.endpaths_().iteritems():
770  scheduledPaths.append(name)
771  endpaths.append(name)
772  else:
773  for path in self.schedule_():
774  pathname = path.label_()
775  scheduledPaths.append(pathname)
776  if self.endpaths_().has_key(pathname):
777  endpaths.append(pathname)
778  else:
779  triggerPaths.append(pathname)
780  processPSet.addVString(True, "@end_paths", endpaths)
781  processPSet.addVString(True, "@paths", scheduledPaths)
782  # trigger_paths are a little different
783  p = processPSet.newPSet()
784  p.addVString(True, "@trigger_paths", triggerPaths)
785  processPSet.addPSet(True, "@trigger_paths", p)
786  # add all these paths
787  pathValidator = PathValidator()
788  endpathValidator = EndPathValidator()
789  for triggername in triggerPaths:
790  #self.paths_()[triggername].insertInto(processPSet, triggername, self.sequences_())
791  pathValidator.setLabel(triggername)
792  self.paths_()[triggername].visit(pathValidator)
793  self.paths_()[triggername].insertInto(processPSet, triggername, self.__dict__)
794  for endpathname in endpaths:
795  #self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.sequences_())
796  endpathValidator.setLabel(endpathname)
797  self.endpaths_()[endpathname].visit(endpathValidator)
798  self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.__dict__)
799  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths
Definition: Config.py:759
def visit
Retrieve data from a perf suite output (sub) directory, only examines TimeSize at the moment...
def schedule_
Definition: Config.py:225
def endpaths_
Definition: Config.py:217
def Config.Process._okToPlace (   self,
  name,
  mod,
  d 
)
private

Definition at line 425 of file Config.py.

References Config.Process.__isStrict.

Referenced by Config.Process.__setattr__(), and Config.Process._place().

426  def _okToPlace(self, name, mod, d):
427  if not self.__InExtendCall:
428  # if going
429  return True
430  elif not self.__isStrict:
431  return True
432  elif name in d:
433  # if there's an old copy, and the new one
434  # hasn't been modified, we're done. Still
435  # not quite safe if something has been defined twice.
436  # Need to add checks
437  if mod._isModified:
438  if d[name]._isModified:
439  return False
440  else:
441  return True
442  else:
443  return True
444  else:
445  return True
def _okToPlace
Definition: Config.py:425
def Config.Process._place (   self,
  name,
  mod,
  d 
)
private

Definition at line 446 of file Config.py.

References Config.Process.__isStrict, Config.Process.__setObjectLabel(), and Config.Process._okToPlace().

Referenced by Config.Process._placeAlias(), Config.Process._placeAnalyzer(), Config.Process._placeEndPath(), Config.Process._placeESPrefer(), Config.Process._placeESProducer(), Config.Process._placeESSource(), Config.Process._placeFilter(), Config.Process._placeOutputModule(), Config.Process._placePath(), Config.Process._placeProducer(), Config.Process._placePSet(), Config.Process._placeSequence(), Config.Process._placeService(), Config.Process._placeVPSet(), and Config.Process.setPartialSchedule_().

447  def _place(self, name, mod, d):
448  if self._okToPlace(name, mod, d):
449  if self.__isStrict and isinstance(mod, _ModuleSequenceType):
450  d[name] = mod._postProcessFixup(self._cloneToObjectDict)
451  else:
452  d[name] = mod
453  if isinstance(mod,_Labelable):
self.__setObjectLabel(mod, name)
def __setObjectLabel
Definition: Config.py:274
def _okToPlace
Definition: Config.py:425
def Config.Process._placeAlias (   self,
  name,
  mod 
)
private

Definition at line 485 of file Config.py.

References Config.Process._place().

486  def _placeAlias(self,name,mod):
self._place(name, mod, self.__aliases)
def _placeAlias
Definition: Config.py:485
def Config.Process._placeAnalyzer (   self,
  name,
  mod 
)
private

Definition at line 460 of file Config.py.

References Config.Process._place().

461  def _placeAnalyzer(self,name,mod):
self._place(name, mod, self.__analyzers)
def _placeAnalyzer
Definition: Config.py:460
def Config.Process._placeEndPath (   self,
  name,
  mod 
)
private

Definition at line 469 of file Config.py.

References Config.Process._place(), Config.Process._validateSequence(), and ExceptionHandling.format_outerframe().

470  def _placeEndPath(self,name,mod):
471  self._validateSequence(mod, name)
472  try:
473  self._place(name, mod, self.__endpaths)
474  except ModuleCloneError, msg:
475  context = format_outerframe(4)
raise Exception("%sThe module %s in endpath %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence
Definition: Config.py:651
def _placeEndPath
Definition: Config.py:469
def Config.Process._placeESPrefer (   self,
  name,
  mod 
)
private

Definition at line 481 of file Config.py.

References Config.Process._place().

482  def _placeESPrefer(self,name,mod):
self._place(name, mod, self.__esprefers)
def _placeESPrefer
Definition: Config.py:481
def Config.Process._placeESProducer (   self,
  name,
  mod 
)
private

Definition at line 479 of file Config.py.

References Config.Process._place().

480  def _placeESProducer(self,name,mod):
self._place(name, mod, self.__esproducers)
def _placeESProducer
Definition: Config.py:479
def Config.Process._placeESSource (   self,
  name,
  mod 
)
private

Definition at line 483 of file Config.py.

References Config.Process._place().

484  def _placeESSource(self,name,mod):
self._place(name, mod, self.__essources)
def _placeESSource
Definition: Config.py:483
def Config.Process._placeFilter (   self,
  name,
  mod 
)
private

Definition at line 458 of file Config.py.

References Config.Process._place().

459  def _placeFilter(self,name,mod):
self._place(name, mod, self.__filters)
def _placeFilter
Definition: Config.py:458
def Config.Process._placeLooper (   self,
  name,
  mod 
)
private

Definition at line 499 of file Config.py.

Referenced by Config.Process.setLooper_().

500  def _placeLooper(self,name,mod):
501  if name != 'looper':
502  raise ValueError("The label '"+name+"' can not be used for a Looper. Only 'looper' is allowed.")
503  self.__dict__['_Process__looper'] = mod
self.__dict__[mod.type_()] = mod
def _placeLooper
Definition: Config.py:499
def Config.Process._placeOutputModule (   self,
  name,
  mod 
)
private

Definition at line 454 of file Config.py.

References Config.Process._place().

455  def _placeOutputModule(self,name,mod):
self._place(name, mod, self.__outputmodules)
def _placeOutputModule
Definition: Config.py:454
def Config.Process._placePath (   self,
  name,
  mod 
)
private

Definition at line 462 of file Config.py.

References Config.Process._place(), Config.Process._validateSequence(), and ExceptionHandling.format_outerframe().

463  def _placePath(self,name,mod):
464  self._validateSequence(mod, name)
465  try:
466  self._place(name, mod, self.__paths)
467  except ModuleCloneError, msg:
468  context = format_outerframe(4)
raise Exception("%sThe module %s in path %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence
Definition: Config.py:651
def _placePath
Definition: Config.py:462
def Config.Process._placeProducer (   self,
  name,
  mod 
)
private

Definition at line 456 of file Config.py.

References Config.Process._place().

457  def _placeProducer(self,name,mod):
self._place(name, mod, self.__producers)
def _placeProducer
Definition: Config.py:456
def Config.Process._placePSet (   self,
  name,
  mod 
)
private

Definition at line 487 of file Config.py.

References Config.Process._place().

488  def _placePSet(self,name,mod):
self._place(name, mod, self.__psets)
def _placePSet
Definition: Config.py:487
def Config.Process._placeSequence (   self,
  name,
  mod 
)
private

Definition at line 476 of file Config.py.

References Config.Process._place(), and Config.Process._validateSequence().

477  def _placeSequence(self,name,mod):
478  self._validateSequence(mod, name)
self._place(name, mod, self.__sequences)
def _validateSequence
Definition: Config.py:651
def _placeSequence
Definition: Config.py:476
def Config.Process._placeService (   self,
  typeName,
  mod 
)
private

Definition at line 509 of file Config.py.

References Config.Process._place().

510  def _placeService(self,typeName,mod):
511  self._place(typeName, mod, self.__services)
self.__dict__[typeName]=mod
def _placeService
Definition: Config.py:509
def Config.Process._placeSource (   self,
  name,
  mod 
)
private
Allow the source to be referenced by 'source' or by type name

Definition at line 491 of file Config.py.

Referenced by Config.Process.setSource_().

492  def _placeSource(self,name,mod):
493  """Allow the source to be referenced by 'source' or by type name"""
494  if name != 'source':
495  raise ValueError("The label '"+name+"' can not be used for a Source. Only 'source' is allowed.")
496  if self.__dict__['_Process__source'] is not None :
497  del self.__dict__[self.__dict__['_Process__source'].type_()]
498  self.__dict__['_Process__source'] = mod
self.__dict__[mod.type_()] = mod
def _placeSource
Definition: Config.py:491
def Config.Process._placeSubProcess (   self,
  name,
  mod 
)
private

Definition at line 504 of file Config.py.

Referenced by Config.Process.setSubProcess_().

505  def _placeSubProcess(self,name,mod):
506  if name != 'subProcess':
507  raise ValueError("The label '"+name+"' can not be used for a SubProcess. Only 'subProcess' is allowed.")
508  self.__dict__['_Process__subProcess'] = mod
self.__dict__[mod.type_()] = mod
def _placeSubProcess
Definition: Config.py:504
def Config.Process._placeVPSet (   self,
  name,
  mod 
)
private

Definition at line 489 of file Config.py.

References Config.Process._place().

490  def _placeVPSet(self,name,mod):
self._place(name, mod, self.__vpsets)
def _placeVPSet
Definition: Config.py:489
def Config.Process._pruneModules (   self,
  d,
  scheduledNames 
)
private

Definition at line 855 of file Config.py.

Referenced by Config.Process.prune().

856  def _pruneModules(self, d, scheduledNames):
857  moduleNames = set(d.keys())
858  junk = moduleNames - scheduledNames
859  for name in junk:
860  delattr(self, name)
861  return junk
def _pruneModules
Definition: Config.py:855
def Config.Process._replaceInSequences (   self,
  label,
  new 
)
private

Definition at line 725 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.globalReplace().

726  def _replaceInSequences(self, label, new):
727  old = getattr(self,label)
728  #TODO - replace by iterator concatenation
729  for sequenceable in self.sequences.itervalues():
730  sequenceable.replace(old,new)
731  for sequenceable in self.paths.itervalues():
732  sequenceable.replace(old,new)
733  for sequenceable in self.endpaths.itervalues():
sequenceable.replace(old,new)
def _replaceInSequences
Definition: Config.py:725
def Config.Process._sequencesInDependencyOrder (   self)
private

Definition at line 659 of file Config.py.

References python.multivaluedict.dict, join(), and Config.Process.sequences.

Referenced by Config.Process.dumpPython().

660  def _sequencesInDependencyOrder(self):
661  #for each sequence, see what other sequences it depends upon
662  returnValue=DictTypes.SortedKeysDict()
663  dependencies = {}
664  for label,seq in self.sequences.iteritems():
665  d = []
666  v = SequenceVisitor(d)
667  seq.visit(v)
668  dependencies[label]=[dep.label_() for dep in d if dep.hasLabel_()]
669  resolvedDependencies=True
670  #keep looping until we can no longer get rid of all dependencies
671  # if that happens it means we have circular dependencies
672  iterCount = 0
673  while resolvedDependencies:
674  iterCount += 1
675  resolvedDependencies = (0 != len(dependencies))
676  oldDeps = dict(dependencies)
677  for label,deps in oldDeps.iteritems():
678  # don't try too hard
679  if len(deps)==0 or iterCount > 100:
680  iterCount = 0
681  resolvedDependencies=True
682  returnValue[label]=self.sequences[label]
683  #remove this as a dependency for all other sequences
684  del dependencies[label]
685  for lb2,deps2 in dependencies.iteritems():
686  while deps2.count(label):
687  deps2.remove(label)
688  if len(dependencies):
689  raise RuntimeError("circular sequence dependency discovered \n"+
690  ",".join([label for label,junk in dependencies.iteritems()]))
return returnValue
def _sequencesInDependencyOrder
Definition: Config.py:659
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def Config.Process._validateSequence (   self,
  sequence,
  label 
)
private

Definition at line 651 of file Config.py.

Referenced by Config.Process._placeEndPath(), Config.Process._placePath(), and Config.Process._placeSequence().

652  def _validateSequence(self, sequence, label):
653  # See if every module has been inserted into the process
654  try:
655  l = set()
656  nameVisitor = NodeNameVisitor(l)
657  sequence.visit(nameVisitor)
658  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:651
def Config.Process.add_ (   self,
  value 
)
Allows addition of components which do not have to have a label, e.g. Services

Definition at line 410 of file Config.py.

References Config.Process.__isStrict.

Referenced by Config.Process.__setattr__(), and Config.Process.extend().

411  def add_(self,value):
412  """Allows addition of components which do not have to have a label, e.g. Services"""
413  if not isinstance(value,_ConfigureComponent):
414  raise TypeError
415  if not isinstance(value,_Unlabelable):
416  raise TypeError
417  #clone the item
418  #clone the item
419  if self.__isStrict:
420  newValue =value.copy()
421  value.setIsFrozen()
422  else:
423  newValue =value
424  newValue._place('',self)
def Config.Process.aliases_ (   self)
returns a dict of the aliases that have been added to the Process

Definition at line 261 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

262  def aliases_(self):
263  """returns a dict of the aliases that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__aliases)
def aliases_
Definition: Config.py:261
def Config.Process.analyzerNames (   self)
Returns a string containing all the EDAnalyzer labels separated by a blank

Definition at line 145 of file Config.py.

References HLTMuonValidator.analyzers_, Config.Process.analyzers_(), join(), and relativeConstraints.keys.

146  def analyzerNames(self):
147  """Returns a string containing all the EDAnalyzer labels separated by a blank"""
return ' '.join(self.analyzers_().keys())
def analyzers_
Definition: Config.py:205
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def analyzerNames
Definition: Config.py:145
def Config.Process.analyzers_ (   self)
returns a dict of the analyzers which have been added to the Process

Definition at line 205 of file Config.py.

Referenced by Config.Process.analyzerNames(), Config.Process.dumpConfig(), Config.Process.dumpPython(), and Config.Process.prune().

206  def analyzers_(self):
207  """returns a dict of the analyzers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__analyzers)
def analyzers_
Definition: Config.py:205
def Config.Process.dumpConfig (   self,
  options = PrintOptions() 
)
return a string containing the equivalent process defined using the old configuration language

Definition at line 576 of file Config.py.

References dataset.Dataset.__name, Config.Process._dumpConfigESPrefers(), Config.Process._dumpConfigNamedList(), Config.Process._dumpConfigOptionallyNamedList(), Config.Process._dumpConfigUnnamedList(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, edm::PathsAndConsumesOfModules.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.schedule, Config.Process.sequences_(), edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, Config.Process.subProcess_(), edm::SubProcess.subProcess_, and edm::EventProcessor.subProcess_.

Referenced by Types.SecSource.configValue().

577  def dumpConfig(self, options=PrintOptions()):
578  """return a string containing the equivalent process defined using the old configuration language"""
579  config = "process "+self.__name+" = {\n"
580  options.indent()
581  if self.source_():
582  config += options.indentation()+"source = "+self.source_().dumpConfig(options)
583  if self.looper_():
584  config += options.indentation()+"looper = "+self.looper_().dumpConfig(options)
585  if self.subProcess_():
586  config += options.indentation()+"subProcess = "+self.subProcess_().dumpConfig(options)
587 
588  config+=self._dumpConfigNamedList(self.producers_().iteritems(),
589  'module',
590  options)
591  config+=self._dumpConfigNamedList(self.filters_().iteritems(),
592  'module',
593  options)
594  config+=self._dumpConfigNamedList(self.analyzers_().iteritems(),
595  'module',
596  options)
597  config+=self._dumpConfigNamedList(self.outputModules_().iteritems(),
598  'module',
599  options)
600  config+=self._dumpConfigNamedList(self.sequences_().iteritems(),
601  'sequence',
602  options)
603  config+=self._dumpConfigNamedList(self.paths_().iteritems(),
604  'path',
605  options)
606  config+=self._dumpConfigNamedList(self.endpaths_().iteritems(),
607  'endpath',
608  options)
609  config+=self._dumpConfigUnnamedList(self.services_().iteritems(),
610  'service',
611  options)
612  config+=self._dumpConfigNamedList(self.aliases_().iteritems(),
613  'alias',
614  options)
615  config+=self._dumpConfigOptionallyNamedList(
616  self.es_producers_().iteritems(),
617  'es_module',
618  options)
619  config+=self._dumpConfigOptionallyNamedList(
620  self.es_sources_().iteritems(),
621  'es_source',
622  options)
623  config += self._dumpConfigESPrefers(options)
624  for name,item in self.psets.iteritems():
625  config +=options.indentation()+item.configTypeName()+' '+name+' = '+item.configValue(options)
626  for name,item in self.vpsets.iteritems():
627  config +=options.indentation()+'VPSet '+name+' = '+item.configValue(options)
628  if self.schedule:
629  pathNames = [p.label_() for p in self.schedule]
630  config +=options.indentation()+'schedule = {'+','.join(pathNames)+'}\n'
631 
632 # config+=self._dumpConfigNamedList(self.vpsets.iteritems(),
633 # 'VPSet',
634 # options)
635  config += "}\n"
636  options.unindent()
return config
def es_sources_
Definition: Config.py:253
def subProcess_
Definition: Config.py:199
def _dumpConfigUnnamedList
Definition: Config.py:564
def es_producers_
Definition: Config.py:249
def aliases_
Definition: Config.py:261
def _dumpConfigESPrefers
Definition: Config.py:637
def _dumpConfigOptionallyNamedList
Definition: Config.py:569
def filters_
Definition: Config.py:172
def outputModules_
Definition: Config.py:209
def producers_
Definition: Config.py:183
def analyzers_
Definition: Config.py:205
def dumpConfig
Definition: Config.py:576
def services_
Definition: Config.py:245
def sequences_
Definition: Config.py:221
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _dumpConfigNamedList
Definition: Config.py:559
def endpaths_
Definition: Config.py:217
def Config.Process.dumpPython (   self,
  options = PrintOptions() 
)
return a string containing the equivalent process defined using python

Definition at line 696 of file Config.py.

References dataset.Dataset.__name, Config.Process._dumpPython(), Config.Process._dumpPythonList(), Config.Process._sequencesInDependencyOrder(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), Config.Process.es_prefers_(), Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, edm::PathsAndConsumesOfModules.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), pf2pat::EventHypothesis.producers_, Config.Process.producers_(), CmsswTask.CmsswTask.psets, Config.Process.psets, Config.Process.schedule, edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, Config.Process.subProcess_(), edm::SubProcess.subProcess_, edm::EventProcessor.subProcess_, and Config.Process.vpsets.

Referenced by Mixins._Parameterizable.__addParameter(), Mixins._ParameterTypeBase.__repr__(), Mixins._Parameterizable.__repr__(), Mixins._ValidatingParameterListBase.__repr__(), Types.VPSet.__repr__(), and Mixins._Parameterizable.__setattr__().

697  def dumpPython(self, options=PrintOptions()):
698  """return a string containing the equivalent process defined using python"""
699  result = "import FWCore.ParameterSet.Config as cms\n\n"
700  result += "process = cms.Process(\""+self.__name+"\")\n\n"
701  if self.source_():
702  result += "process.source = "+self.source_().dumpPython(options)
703  if self.looper_():
704  result += "process.looper = "+self.looper_().dumpPython()
705  if self.subProcess_():
706  result += self.subProcess_().dumpPython(options)
707  result+=self._dumpPythonList(self.producers_(), options)
708  result+=self._dumpPythonList(self.filters_() , options)
709  result+=self._dumpPythonList(self.analyzers_(), options)
710  result+=self._dumpPythonList(self.outputModules_(), options)
711  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
712  result+=self._dumpPythonList(self.paths_(), options)
713  result+=self._dumpPythonList(self.endpaths_(), options)
714  result+=self._dumpPythonList(self.services_(), options)
715  result+=self._dumpPythonList(self.es_producers_(), options)
716  result+=self._dumpPythonList(self.es_sources_(), options)
717  result+=self._dumpPython(self.es_prefers_(), options)
718  result+=self._dumpPythonList(self.aliases_(), options)
719  result+=self._dumpPythonList(self.psets, options)
720  result+=self._dumpPythonList(self.vpsets, options)
721  if self.schedule:
722  pathNames = ['process.'+p.label_() for p in self.schedule]
723  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
724 
return result
def es_sources_
Definition: Config.py:253
def subProcess_
Definition: Config.py:199
def es_producers_
Definition: Config.py:249
def aliases_
Definition: Config.py:261
def filters_
Definition: Config.py:172
def dumpPython
Definition: Config.py:696
def es_prefers_
Definition: Config.py:257
def _sequencesInDependencyOrder
Definition: Config.py:659
def outputModules_
Definition: Config.py:209
def producers_
Definition: Config.py:183
def analyzers_
Definition: Config.py:205
def services_
Definition: Config.py:245
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _dumpPythonList
Definition: Config.py:642
def _dumpPython
Definition: Config.py:691
def endpaths_
Definition: Config.py:217
def Config.Process.endpaths_ (   self)
returns a dict of the endpaths which have been added to the Process

Definition at line 217 of file Config.py.

Referenced by Config.Process._insertPaths(), Config.Process.dumpConfig(), and Config.Process.dumpPython().

218  def endpaths_(self):
219  """returns a dict of the endpaths which have been added to the Process"""
return DictTypes.SortedAndFixedKeysDict(self.__endpaths)
def endpaths_
Definition: Config.py:217
def Config.Process.es_prefers_ (   self)
returns a dict of the es_prefers which have been added to the Process

Definition at line 257 of file Config.py.

Referenced by Config.Process._dumpConfigESPrefers(), and Config.Process.dumpPython().

258  def es_prefers_(self):
259  """returns a dict of the es_prefers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esprefers)
def es_prefers_
Definition: Config.py:257
def Config.Process.es_producers_ (   self)
returns a dict of the esproducers which have been added to the Process

Definition at line 249 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

250  def es_producers_(self):
251  """returns a dict of the esproducers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esproducers)
def es_producers_
Definition: Config.py:249
def Config.Process.es_sources_ (   self)
returns a the es_sources which have been added to the Process

Definition at line 253 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

254  def es_sources_(self):
255  """returns a the es_sources which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__essources)
def es_sources_
Definition: Config.py:253
def Config.Process.extend (   self,
  other,
  items = () 
)
Look in other and find types which we can use

Definition at line 516 of file Config.py.

References python.Node.Node.__setattr__(), psClasses.BuildTreeNode.__setattr__(), Config.Process.__setattr__(), Config.FilteredStream.__setattr__, Config.Process.__setObjectLabel(), Config.Process.add_(), python.multivaluedict.dict, dir, ora::ContainerSchema.extend(), python.seqvaluedict.seqdict.extend(), svgfig.SVG.extend(), and Config.Process.extend().

Referenced by relval_steps.WF.__init__(), Config.Process.extend(), Config.Process.load(), and Mixins._ValidatingParameterListBase.setValue().

517  def extend(self,other,items=()):
518  """Look in other and find types which we can use"""
519  # enable explicit check to avoid overwriting of existing objects
520  self.__dict__['_Process__InExtendCall'] = True
521 
522  seqs = dict()
523  for name in dir(other):
524  #'from XX import *' ignores these, and so should we.
525  if name.startswith('_'):
526  continue
527  item = getattr(other,name)
528  if name == "source" or name == "looper" or name == "subProcess":
529  self.__setattr__(name,item)
530  elif isinstance(item,_ModuleSequenceType):
531  seqs[name]=item
532  elif isinstance(item,_Labelable):
533  self.__setattr__(name,item)
534  if not item.hasLabel_() :
535  item.setLabel(name)
536  elif isinstance(item,Schedule):
537  self.__setattr__(name,item)
538  elif isinstance(item,_Unlabelable):
539  self.add_(item)
540  elif isinstance(item,ProcessModifier):
541  item.apply(self)
542  elif isinstance(item,ProcessFragment):
543  self.extend(item)
544 
545  #now create a sequence which uses the newly made items
546  for name in seqs.iterkeys():
547  seq = seqs[name]
548  #newSeq = seq.copy()
549  #
550  if id(seq) not in self._cloneToObjectDict:
551  self.__setattr__(name,seq)
552  else:
553  newSeq = self._cloneToObjectDict[id(seq)]
554  self.__dict__[name]=newSeq
555  self.__setObjectLabel(newSeq, name)
556  #now put in proper bucket
557  newSeq._place(name,self)
558  self.__dict__['_Process__InExtendCall'] = False
def __setObjectLabel
Definition: Config.py:274
def __setattr__
Definition: Config.py:301
dbl *** dir
Definition: mlp_gen.cc:35
def Config.Process.fillProcessDesc (   self,
  processPSet 
)
Used by the framework to convert python to C++ objects

Definition at line 862 of file Config.py.

References Config.Process.__init__(), and dbtoconf.object.

863  def fillProcessDesc(self, processPSet):
864  """Used by the framework to convert python to C++ objects"""
865  class ServiceInjectorAdaptor(object):
866  def __init__(self,ppset,thelist):
867  self.__thelist = thelist
868  self.__processPSet = ppset
869  def addService(self,pset):
870  self.__thelist.append(pset)
871  def newPSet(self):
872  return self.__processPSet.newPSet()
873  #This adaptor is used to 'add' the method 'getTopPSet_'
874  # to the ProcessDesc and PythonParameterSet C++ classes.
875  # This method is needed for the PSet refToPSet_ functionality.
876  class TopLevelPSetAcessorAdaptor(object):
877  def __init__(self,ppset,process):
878  self.__ppset = ppset
879  self.__process = process
880  def __getattr__(self,attr):
881  return getattr(self.__ppset,attr)
882  def getTopPSet_(self,label):
883  return getattr(self.__process,label)
884  def newPSet(self):
885  return TopLevelPSetAcessorAdaptor(self.__ppset.newPSet(),self.__process)
886  def addPSet(self,tracked,name,ppset):
887  return self.__ppset.addPSet(tracked,name,self.__extractPSet(ppset))
888  def addVPSet(self,tracked,name,vpset):
889  return self.__ppset.addVPSet(tracked,name,[self.__extractPSet(x) for x in vpset])
890  def __extractPSet(self,pset):
891  if isinstance(pset,TopLevelPSetAcessorAdaptor):
892  return pset.__ppset
893  return pset
894 
895  self.validate()
896  processPSet.addString(True, "@process_name", self.name_())
897  all_modules = self.producers_().copy()
898  all_modules.update(self.filters_())
899  all_modules.update(self.analyzers_())
900  all_modules.update(self.outputModules_())
901  adaptor = TopLevelPSetAcessorAdaptor(processPSet,self)
902  self._insertInto(adaptor, self.psets_())
903  self._insertInto(adaptor, self.vpsets_())
904  self._insertManyInto(adaptor, "@all_modules", all_modules, True)
905  self._insertOneInto(adaptor, "@all_sources", self.source_(), True)
906  self._insertOneInto(adaptor, "@all_loopers", self.looper_(), True)
907  self._insertOneInto(adaptor, "@all_subprocesses", self.subProcess_(), False)
908  self._insertManyInto(adaptor, "@all_esmodules", self.es_producers_(), True)
909  self._insertManyInto(adaptor, "@all_essources", self.es_sources_(), True)
910  self._insertManyInto(adaptor, "@all_esprefers", self.es_prefers_(), True)
911  self._insertManyInto(adaptor, "@all_aliases", self.aliases_(), True)
912  self._insertPaths(adaptor)
913  #handle services differently
914  services = []
915  for n in self.services_():
916  getattr(self,n).insertInto(ServiceInjectorAdaptor(adaptor,services))
917  adaptor.addVPSet(False,"services",services)
918  return processPSet
def es_sources_
Definition: Config.py:253
def subProcess_
Definition: Config.py:199
def _insertManyInto
Definition: Config.py:750
def es_producers_
Definition: Config.py:249
def aliases_
Definition: Config.py:261
def filters_
Definition: Config.py:172
def es_prefers_
Definition: Config.py:257
def _insertPaths
Definition: Config.py:759
def outputModules_
Definition: Config.py:209
def producers_
Definition: Config.py:183
def fillProcessDesc
Definition: Config.py:862
def __init__
Definition: Config.py:102
def _insertInto
Definition: Config.py:740
def analyzers_
Definition: Config.py:205
def services_
Definition: Config.py:245
def validate
Definition: Config.py:919
def _insertOneInto
Definition: Config.py:743
list object
Definition: dbtoconf.py:77
def Config.Process.filterNames (   self)
Returns a string containing all the EDFilter labels separated by a blank

Definition at line 148 of file Config.py.

References pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, join(), and relativeConstraints.keys.

149  def filterNames(self):
150  """Returns a string containing all the EDFilter labels separated by a blank"""
return ' '.join(self.filters_().keys())
def filterNames
Definition: Config.py:148
def filters_
Definition: Config.py:172
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def Config.Process.filters_ (   self)
returns a dict of the filters which have been added to the Process

Definition at line 172 of file Config.py.

Referenced by Config.Process.dumpConfig(), Config.Process.dumpPython(), Config.Process.filterNames(), and Config.Process.prune().

173  def filters_(self):
174  """returns a dict of the filters which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__filters)
def filters_
Definition: Config.py:172
def Config.Process.globalReplace (   self,
  label,
  new 
)
Replace the item with label 'label' by object 'new' in the process and all sequences/paths

Definition at line 734 of file Config.py.

References Config.Process._replaceInSequences().

735  def globalReplace(self,label,new):
736  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths"""
737  if not hasattr(self,label):
738  raise LookupError("process has no item of label "+label)
739  self._replaceInSequences(label, new)
setattr(self,label,new)
def _replaceInSequences
Definition: Config.py:725
def globalReplace
Definition: Config.py:734
def Config.Process.load (   self,
  moduleName 
)

Definition at line 512 of file Config.py.

References ora::ContainerSchema.extend(), python.seqvaluedict.seqdict.extend(), svgfig.SVG.extend(), and Config.Process.extend().

513  def load(self, moduleName):
514  moduleName = moduleName.replace("/",".")
515  module = __import__(moduleName)
self.extend(sys.modules[moduleName])
def Config.Process.looper_ (   self)
returns the looper which has been added to the Process or None if none have been added

Definition at line 193 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

194  def looper_(self):
195  """returns the looper which has been added to the Process or None if none have been added"""
return self.__looper
def Config.Process.name_ (   self)

Definition at line 176 of file Config.py.

References dataset.Dataset.__name.

177  def name_(self):
return self.__name
def Config.Process.outputModules_ (   self)
returns a dict of the output modules which have been added to the Process

Definition at line 209 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

210  def outputModules_(self):
211  """returns a dict of the output modules which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__outputmodules)
def outputModules_
Definition: Config.py:209
def Config.Process.pathNames (   self)
Returns a string containing all the Path names separated by a blank

Definition at line 151 of file Config.py.

References join(), relativeConstraints.keys, edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, edm::PathsAndConsumesOfModules.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, and Config.Process.paths_().

152  def pathNames(self):
153  """Returns a string containing all the Path names separated by a blank"""
154  return ' '.join(self.paths_().keys())
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def pathNames
Definition: Config.py:151
def Config.Process.paths_ (   self)
returns a dict of the paths which have been added to the Process

Definition at line 213 of file Config.py.

Referenced by Config.Process._insertPaths(), Config.Process.dumpConfig(), Config.Process.dumpPython(), and Config.Process.pathNames().

214  def paths_(self):
215  """returns a dict of the paths which have been added to the Process"""
return DictTypes.SortedAndFixedKeysDict(self.__paths)
def Config.Process.prefer (   self,
  esmodule,
  args,
  kargs 
)
Prefer this ES source or producer.  The argument can
   either be an object label, e.g.,
     process.prefer(process.juicerProducer) (not supported yet)
   or a name of an ESSource or ESProducer
     process.prefer("juicer")
   or a type of unnamed ESSource or ESProducer
     process.prefer("JuicerProducer")
   In addition, you can pass as a labelled arguments the name of the Record you wish to
   prefer where the type passed is a cms.vstring and that vstring can contain the
   name of the C++ types in the Record which are being preferred, e.g.,
      #prefer all data in record 'OrangeRecord' from 'juicer'
      process.prefer("juicer", OrangeRecord=cms.vstring())
   or
      #prefer only "Orange" data in "OrangeRecord" from "juicer"
      process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
   or
      #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
      ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))

Definition at line 926 of file Config.py.

927  def prefer(self, esmodule,*args,**kargs):
928  """Prefer this ES source or producer. The argument can
929  either be an object label, e.g.,
930  process.prefer(process.juicerProducer) (not supported yet)
931  or a name of an ESSource or ESProducer
932  process.prefer("juicer")
933  or a type of unnamed ESSource or ESProducer
934  process.prefer("JuicerProducer")
935  In addition, you can pass as a labelled arguments the name of the Record you wish to
936  prefer where the type passed is a cms.vstring and that vstring can contain the
937  name of the C++ types in the Record which are being preferred, e.g.,
938  #prefer all data in record 'OrangeRecord' from 'juicer'
939  process.prefer("juicer", OrangeRecord=cms.vstring())
940  or
941  #prefer only "Orange" data in "OrangeRecord" from "juicer"
942  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
943  or
944  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
945  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
946  """
947  # see if this refers to a named ESProducer
948  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
949  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
950  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
951  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
952  pass
953  else:
954  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
def es_sources_
Definition: Config.py:253
def _findPreferred
Definition: Config.py:955
def es_producers_
Definition: Config.py:249
def Config.Process.producerNames (   self)
Returns a string containing all the EDProducer labels separated by a blank

Definition at line 142 of file Config.py.

References join(), relativeConstraints.keys, pf2pat::EventHypothesis.producers_, and Config.Process.producers_().

143  def producerNames(self):
144  """Returns a string containing all the EDProducer labels separated by a blank"""
return ' '.join(self.producers_().keys())
def producers_
Definition: Config.py:183
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def producerNames
Definition: Config.py:142
def Config.Process.producers_ (   self)
returns a dict of the producers which have been added to the Process

Definition at line 183 of file Config.py.

Referenced by Config.Process.dumpConfig(), Config.Process.dumpPython(), Config.Process.producerNames(), and Config.Process.prune().

184  def producers_(self):
185  """returns a dict of the producers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__producers)
def producers_
Definition: Config.py:183
def Config.Process.prune (   self,
  verbose = False 
)
Remove clutter from the process which we think is unnecessary:
tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
not in the schedule will also be removed, along with an modules and sequences used only by
those removed Paths and EndPaths.

Definition at line 800 of file Config.py.

References Config.Process._pruneModules(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths, pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, join(), list(), Config.Process.paths, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::SubProcess.schedule_, edm::EventProcessor.schedule_, and Config.Process.vpsets_().

Referenced by dirstructure.Directory.prune().

801  def prune(self,verbose=False):
802  """ Remove clutter from the process which we think is unnecessary:
803  tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
804  not in the schedule will also be removed, along with an modules and sequences used only by
805  those removed Paths and EndPaths."""
806 # need to update this to only prune psets not on refToPSets
807 # but for now, remove the delattr
808 # for name in self.psets_():
809 # if getattr(self,name).isTracked():
810 # delattr(self, name)
811  for name in self.vpsets_():
812  delattr(self, name)
813  #first we need to resolve any SequencePlaceholders being used
814  for x in self.paths.itervalues():
815  x.resolve(self.__dict__)
816  for x in self.endpaths.itervalues():
817  x.resolve(self.__dict__)
818  usedModules = set()
819  unneededPaths = set()
820  if self.schedule_():
821  usedModules=set(self.schedule_().moduleNames())
822  #get rid of unused paths
823  schedNames = set(( x.label_() for x in self.schedule_()))
824  names = set(self.paths)
825  names.update(set(self.endpaths))
826  unneededPaths = names - schedNames
827  for n in unneededPaths:
828  delattr(self,n)
829  else:
830  pths = list(self.paths.itervalues())
831  pths.extend(self.endpaths.itervalues())
832  temp = Schedule(*pths)
833  usedModules=set(temp.moduleNames())
834  unneededModules = self._pruneModules(self.producers_(), usedModules)
835  unneededModules.update(self._pruneModules(self.filters_(), usedModules))
836  unneededModules.update(self._pruneModules(self.analyzers_(), usedModules))
837  #remove sequences that do not appear in remaining paths and endpaths
838  seqs = list()
839  sv = SequenceVisitor(seqs)
840  for p in self.paths.itervalues():
841  p.visit(sv)
842  for p in self.endpaths.itervalues():
843  p.visit(sv)
844  keepSeqSet = set(( s for s in seqs if s.hasLabel_()))
845  availableSeqs = set(self.sequences.itervalues())
846  unneededSeqs = availableSeqs-keepSeqSet
847  unneededSeqLabels = []
848  for s in unneededSeqs:
849  unneededSeqLabels.append(s.label_())
850  delattr(self,s.label_())
851  if verbose:
852  print "prune removed the following:"
853  print " modules:"+",".join(unneededModules)
854  print " sequences:"+",".join(unneededSeqLabels)
print " paths/endpaths:"+",".join(unneededPaths)
def filters_
Definition: Config.py:172
def producers_
Definition: Config.py:183
def analyzers_
Definition: Config.py:205
def schedule_
Definition: Config.py:225
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _pruneModules
Definition: Config.py:855
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
def Config.Process.psets_ (   self)
returns a dict of the PSets which have been added to the Process

Definition at line 265 of file Config.py.

266  def psets_(self):
267  """returns a dict of the PSets which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__psets)
def Config.Process.schedule_ (   self)
returns the schedule which has been added to the Process or None if none have been added

Definition at line 225 of file Config.py.

Referenced by Config.Process._insertPaths(), and Config.Process.prune().

226  def schedule_(self):
227  """returns the schedule which has been added to the Process or None if none have been added"""
return self.__schedule
def schedule_
Definition: Config.py:225
def Config.Process.sequences_ (   self)
returns a dict of the sequences which have been added to the Process

Definition at line 221 of file Config.py.

Referenced by Config.Process.dumpConfig().

222  def sequences_(self):
223  """returns a dict of the sequences which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__sequences)
def sequences_
Definition: Config.py:221
def Config.Process.services_ (   self)
returns a dict of the services which have been added to the Process

Definition at line 245 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

246  def services_(self):
247  """returns a dict of the services which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__services)
def services_
Definition: Config.py:245
def Config.Process.setLooper_ (   self,
  lpr 
)

Definition at line 196 of file Config.py.

References Config.Process._placeLooper().

197  def setLooper_(self,lpr):
self._placeLooper('looper',lpr)
def setLooper_
Definition: Config.py:196
def _placeLooper
Definition: Config.py:499
def Config.Process.setName_ (   self,
  name 
)

Definition at line 178 of file Config.py.

179  def setName_(self,name):
180  if not name.isalnum():
181  raise RuntimeError("Error: The process name is an empty string or contains non-alphanumeric characters")
self.__dict__['_Process__name'] = name
def setName_
Definition: Config.py:178
def Config.Process.setPartialSchedule_ (   self,
  sch,
  label 
)

Definition at line 228 of file Config.py.

References Config.Process._place(), and Config.Process.setSchedule_().

229  def setPartialSchedule_(self,sch,label):
230  if label == "schedule":
231  self.setSchedule_(sch)
232  else:
self._place(label, sch, self.__partialschedules)
def setSchedule_
Definition: Config.py:233
def setPartialSchedule_
Definition: Config.py:228
def Config.Process.setSchedule_ (   self,
  sch 
)

Definition at line 233 of file Config.py.

Referenced by Config.Process.setPartialSchedule_().

234  def setSchedule_(self,sch):
235  # See if every module has been inserted into the process
236  index = 0
237  try:
238  for p in sch:
239  p.label_()
240  index +=1
241  except:
242  raise RuntimeError("The path at index "+str(index)+" in the Schedule was not attached to the process.")
243 
self.__dict__['_Process__schedule'] = sch
def setSchedule_
Definition: Config.py:233
def Config.Process.setSource_ (   self,
  src 
)

Definition at line 190 of file Config.py.

References Config.Process._placeSource().

191  def setSource_(self,src):
self._placeSource('source',src)
def setSource_
Definition: Config.py:190
def _placeSource
Definition: Config.py:491
def Config.Process.setStrict (   self,
  value 
)

Definition at line 137 of file Config.py.

References Config.Process.__isStrict.

138  def setStrict(self, value):
139  self.__isStrict = value
140  _Module.__isStrict__ = True
def setStrict
Definition: Config.py:137
def Config.Process.setSubProcess_ (   self,
  lpr 
)

Definition at line 202 of file Config.py.

References Config.Process._placeSubProcess().

203  def setSubProcess_(self,lpr):
self._placeSubProcess('subProcess',lpr)
def setSubProcess_
Definition: Config.py:202
def _placeSubProcess
Definition: Config.py:504
def Config.Process.source_ (   self)
returns the source which has been added to the Process or None if none have been added

Definition at line 187 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

188  def source_(self):
189  """returns the source which has been added to the Process or None if none have been added"""
return self.__source
def Config.Process.subProcess_ (   self)
returns the sub-process which has been added to the Process or None if none have been added

Definition at line 199 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

200  def subProcess_(self):
201  """returns the sub-process which has been added to the Process or None if none have been added"""
return self.__subProcess
def subProcess_
Definition: Config.py:199
def Config.Process.validate (   self)

Definition at line 919 of file Config.py.

920  def validate(self):
921  # check if there's some input
922  # Breaks too many unit tests for now
923  #if self.source_() == None and self.looper_() == None:
924  # raise RuntimeError("No input source was found for this process")
925  pass
def validate
Definition: Config.py:919
def Config.Process.vpsets_ (   self)
returns a dict of the VPSets which have been added to the Process

Definition at line 269 of file Config.py.

Referenced by Config.Process.prune().

270  def vpsets_(self):
271  """returns a dict of the VPSets which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__vpsets)

Member Data Documentation

Config.Process.__isStrict
private

Definition at line 132 of file Config.py.

Referenced by Config.Process.__setattr__(), Config.Process._okToPlace(), Config.Process._place(), Config.Process.add_(), and Config.Process.setStrict().

Config.Process.__ppset
private

Definition at line 877 of file Config.py.

Config.Process.__process
private

Definition at line 878 of file Config.py.

Referenced by Config.ProcessFragment.__delattr__(), Config.ProcessFragment.__dir__(), Config.ProcessFragment.__getattribute__(), and Config.ProcessFragment.__setattr__().

Config.Process.__processPSet
private

Definition at line 867 of file Config.py.

Config.Process.__thelist
private

Definition at line 866 of file Config.py.

Property Documentation

Config.Process.aliases = property(aliases_,doc="dictionary containing the aliases for the process")
static

Definition at line 264 of file Config.py.

Config.Process.analyzers = property(analyzers_,doc="dictionary containing the analyzers for the process")
static

Definition at line 208 of file Config.py.

Referenced by looper.Looper.loop(), and looper.Looper.write().

Config.Process.endpaths = property(endpaths_,doc="dictionary containing the endpaths for the process")
static

Definition at line 220 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.prune().

Config.Process.es_prefers = property(es_prefers_,doc="dictionary containing the es_prefers for the process")
static

Definition at line 260 of file Config.py.

Config.Process.es_producers = property(es_producers_,doc="dictionary containing the es_producers for the process")
static

Definition at line 252 of file Config.py.

Config.Process.es_sources = property(es_sources_,doc="dictionary containing the es_sources for the process")
static

Definition at line 256 of file Config.py.

Config.Process.filters = property(filters_, doc="dictionary containing the filters for the process")
static

Definition at line 175 of file Config.py.

Config.Process.looper = property(looper_,setLooper_,doc='the main looper or None if not set')
static

Definition at line 198 of file Config.py.

Config.Process.outputModules = property(outputModules_,doc="dictionary containing the output_modules for the process")
static

Definition at line 212 of file Config.py.

Config.Process.paths = property(paths_,doc="dictionary containing the paths for the process")
static

Definition at line 216 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.prune().

Config.Process.process = property(name_,setName_, doc="name of the process")
static

Definition at line 182 of file Config.py.

Referenced by ConfigBuilder.ConfigBuilder.__init__(), ConfigBuilder.ConfigBuilder.addExtraStream(), ConfigBuilder.ConfigBuilder.anyOf(), ConfigBuilder.ConfigBuilder.completeInputCommand(), ConfigBuilder.ConfigBuilder.doNotInlineEventContent(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.dumpPython(), ConfigBuilder.ConfigBuilder.PrintAllModules.leave(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.open(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.outputEventContent(), ConfigBuilder.ConfigBuilder.prepare(), ConfigBuilder.ConfigBuilder.prepare_ALCA(), ConfigBuilder.ConfigBuilder.prepare_DQM(), ConfigBuilder.ConfigBuilder.prepare_FASTSIM(), ConfigBuilder.ConfigBuilder.prepare_HARVESTING(), ConfigBuilder.ConfigBuilder.prepare_HLT(), ConfigBuilder.ConfigBuilder.prepare_LHE(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.renameInputTagsInSequence(), ConfigBuilder.ConfigBuilder.scheduleSequence(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.setProcess(), and Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.setProperty().

Config.Process.producers = property(producers_,doc="dictionary containing the producers for the process")
static

Definition at line 186 of file Config.py.

Config.Process.psets = property(psets_,doc="dictionary containing the PSets for the process")
static

Definition at line 268 of file Config.py.

Referenced by Config.Process.dumpPython().

Config.Process.schedule = property(schedule_,setSchedule_,doc='the schedule or None if not set')
static

Definition at line 244 of file Config.py.

Referenced by ConfigBuilder.ConfigBuilder.__init__(), Config.Process.dumpConfig(), Config.Process.dumpPython(), and ConfigBuilder.ConfigBuilder.prepare().

Config.Process.sequences = property(sequences_,doc="dictionary containing the sequences for the process")
static

Definition at line 224 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process._sequencesInDependencyOrder().

Config.Process.services = property(services_,doc="dictionary containing the services for the process")
static

Definition at line 248 of file Config.py.

Referenced by config.Config.__str__().

Config.Process.source = property(source_,setSource_,doc='the main source or None if not set')
static

Definition at line 192 of file Config.py.

Referenced by confdb.HLTProcess.specificCustomize().

Config.Process.subProcess = property(subProcess_,setSubProcess_,doc='the SubProcess or None if not set')
static

Definition at line 204 of file Config.py.

Config.Process.vpsets = property(vpsets_,doc="dictionary containing the PSets for the process")
static

Definition at line 272 of file Config.py.

Referenced by Config.Process.dumpPython().