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:724
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 636 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

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

Definition at line 558 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 568 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 563 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 690 of file Config.py.

Referenced by Config.Process.dumpPython().

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

Definition at line 641 of file Config.py.

Referenced by Config.Process.dumpPython().

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

Definition at line 954 of file Config.py.

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

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

Definition at line 739 of file Config.py.

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

Definition at line 749 of file Config.py.

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

Definition at line 742 of file Config.py.

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

Definition at line 758 of file Config.py.

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

759  def _insertPaths(self, processPSet):
760  scheduledPaths = []
761  triggerPaths = []
762  endpaths = []
763  if self.schedule_() == None:
764  # make one from triggerpaths & endpaths
765  for name,value in self.paths_().iteritems():
766  scheduledPaths.append(name)
767  triggerPaths.append(name)
768  for name,value in self.endpaths_().iteritems():
769  scheduledPaths.append(name)
770  endpaths.append(name)
771  else:
772  for path in self.schedule_():
773  pathname = path.label_()
774  scheduledPaths.append(pathname)
775  if self.endpaths_().has_key(pathname):
776  endpaths.append(pathname)
777  else:
778  triggerPaths.append(pathname)
779  processPSet.addVString(True, "@end_paths", endpaths)
780  processPSet.addVString(True, "@paths", scheduledPaths)
781  # trigger_paths are a little different
782  p = processPSet.newPSet()
783  p.addVString(True, "@trigger_paths", triggerPaths)
784  processPSet.addPSet(True, "@trigger_paths", p)
785  # add all these paths
786  pathValidator = PathValidator()
787  endpathValidator = EndPathValidator()
788  for triggername in triggerPaths:
789  #self.paths_()[triggername].insertInto(processPSet, triggername, self.sequences_())
790  pathValidator.setLabel(triggername)
791  self.paths_()[triggername].visit(pathValidator)
792  self.paths_()[triggername].insertInto(processPSet, triggername, self.__dict__)
793  for endpathname in endpaths:
794  #self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.sequences_())
795  endpathValidator.setLabel(endpathname)
796  self.endpaths_()[endpathname].visit(endpathValidator)
797  self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.__dict__)
798  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths
Definition: Config.py:758
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:650
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:650
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:650
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 854 of file Config.py.

Referenced by Config.Process.prune().

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

Definition at line 724 of file Config.py.

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

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

Definition at line 658 of file Config.py.

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

Referenced by Config.Process.dumpPython().

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

Definition at line 650 of file Config.py.

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

651  def _validateSequence(self, sequence, label):
652  # See if every module has been inserted into the process
653  try:
654  l = set()
655  nameVisitor = NodeNameVisitor(l)
656  sequence.visit(nameVisitor)
657  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:650
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 575 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_, FourVectorHLTOnline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.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().

576  def dumpConfig(self, options=PrintOptions()):
577  """return a string containing the equivalent process defined using the old configuration language"""
578  config = "process "+self.__name+" = {\n"
579  options.indent()
580  if self.source_():
581  config += options.indentation()+"source = "+self.source_().dumpConfig(options)
582  if self.looper_():
583  config += options.indentation()+"looper = "+self.looper_().dumpConfig(options)
584  if self.subProcess_():
585  config += options.indentation()+"subProcess = "+self.subProcess_().dumpConfig(options)
586 
587  config+=self._dumpConfigNamedList(self.producers_().iteritems(),
588  'module',
589  options)
590  config+=self._dumpConfigNamedList(self.filters_().iteritems(),
591  'module',
592  options)
593  config+=self._dumpConfigNamedList(self.analyzers_().iteritems(),
594  'module',
595  options)
596  config+=self._dumpConfigNamedList(self.outputModules_().iteritems(),
597  'module',
598  options)
599  config+=self._dumpConfigNamedList(self.sequences_().iteritems(),
600  'sequence',
601  options)
602  config+=self._dumpConfigNamedList(self.paths_().iteritems(),
603  'path',
604  options)
605  config+=self._dumpConfigNamedList(self.endpaths_().iteritems(),
606  'endpath',
607  options)
608  config+=self._dumpConfigUnnamedList(self.services_().iteritems(),
609  'service',
610  options)
611  config+=self._dumpConfigNamedList(self.aliases_().iteritems(),
612  'alias',
613  options)
614  config+=self._dumpConfigOptionallyNamedList(
615  self.es_producers_().iteritems(),
616  'es_module',
617  options)
618  config+=self._dumpConfigOptionallyNamedList(
619  self.es_sources_().iteritems(),
620  'es_source',
621  options)
622  config += self._dumpConfigESPrefers(options)
623  for name,item in self.psets.iteritems():
624  config +=options.indentation()+item.configTypeName()+' '+name+' = '+item.configValue(options)
625  for name,item in self.vpsets.iteritems():
626  config +=options.indentation()+'VPSet '+name+' = '+item.configValue(options)
627  if self.schedule:
628  pathNames = [p.label_() for p in self.schedule]
629  config +=options.indentation()+'schedule = {'+','.join(pathNames)+'}\n'
630 
631 # config+=self._dumpConfigNamedList(self.vpsets.iteritems(),
632 # 'VPSet',
633 # options)
634  config += "}\n"
635  options.unindent()
return config
def es_sources_
Definition: Config.py:253
def subProcess_
Definition: Config.py:199
def _dumpConfigUnnamedList
Definition: Config.py:563
def es_producers_
Definition: Config.py:249
def aliases_
Definition: Config.py:261
def _dumpConfigESPrefers
Definition: Config.py:636
def _dumpConfigOptionallyNamedList
Definition: Config.py:568
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:575
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:558
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 695 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_, FourVectorHLTOnline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, heppy::TriggerBitChecker.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.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__().

696  def dumpPython(self, options=PrintOptions()):
697  """return a string containing the equivalent process defined using python"""
698  result = "import FWCore.ParameterSet.Config as cms\n\n"
699  result += "process = cms.Process(\""+self.__name+"\")\n\n"
700  if self.source_():
701  result += "process.source = "+self.source_().dumpPython(options)
702  if self.looper_():
703  result += "process.looper = "+self.looper_().dumpPython()
704  if self.subProcess_():
705  result += self.subProcess_().dumpPython(options)
706  result+=self._dumpPythonList(self.producers_(), options)
707  result+=self._dumpPythonList(self.filters_() , options)
708  result+=self._dumpPythonList(self.analyzers_(), options)
709  result+=self._dumpPythonList(self.outputModules_(), options)
710  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
711  result+=self._dumpPythonList(self.paths_(), options)
712  result+=self._dumpPythonList(self.endpaths_(), options)
713  result+=self._dumpPythonList(self.services_(), options)
714  result+=self._dumpPythonList(self.es_producers_(), options)
715  result+=self._dumpPythonList(self.es_sources_(), options)
716  result+=self._dumpPython(self.es_prefers_(), options)
717  result+=self._dumpPythonList(self.aliases_(), options)
718  result+=self._dumpPythonList(self.psets, options)
719  result+=self._dumpPythonList(self.vpsets, options)
720  if self.schedule:
721  pathNames = ['process.'+p.label_() for p in self.schedule]
722  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
723 
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:695
def es_prefers_
Definition: Config.py:257
def _sequencesInDependencyOrder
Definition: Config.py:658
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:641
def _dumpPython
Definition: Config.py:690
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, and dir.

Referenced by relval_steps.WF.__init__(), 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 
541  #now create a sequence which uses the newly made items
542  for name in seqs.iterkeys():
543  seq = seqs[name]
544  #newSeq = seq.copy()
545  #
546  if id(seq) not in self._cloneToObjectDict:
547  self.__setattr__(name,seq)
548  else:
549  newSeq = self._cloneToObjectDict[id(seq)]
550  self.__dict__[name]=newSeq
551  self.__setObjectLabel(newSeq, name)
552  #now put in proper bucket
553  newSeq._place(name,self)
554  self.__dict__['_Process__InExtendCall'] = False
555  # apply any newly acquired process modifiers
556  for m in self.__modifiers:
557  m._applyNewProcessModifiers(self)
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 861 of file Config.py.

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

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

References Config.Process._replaceInSequences().

734  def globalReplace(self,label,new):
735  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths"""
736  if not hasattr(self,label):
737  raise LookupError("process has no item of label "+label)
738  self._replaceInSequences(label, new)
setattr(self,label,new)
def _replaceInSequences
Definition: Config.py:724
def globalReplace
Definition: Config.py:733
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_, 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 925 of file Config.py.

926  def prefer(self, esmodule,*args,**kargs):
927  """Prefer this ES source or producer. The argument can
928  either be an object label, e.g.,
929  process.prefer(process.juicerProducer) (not supported yet)
930  or a name of an ESSource or ESProducer
931  process.prefer("juicer")
932  or a type of unnamed ESSource or ESProducer
933  process.prefer("JuicerProducer")
934  In addition, you can pass as a labelled arguments the name of the Record you wish to
935  prefer where the type passed is a cms.vstring and that vstring can contain the
936  name of the C++ types in the Record which are being preferred, e.g.,
937  #prefer all data in record 'OrangeRecord' from 'juicer'
938  process.prefer("juicer", OrangeRecord=cms.vstring())
939  or
940  #prefer only "Orange" data in "OrangeRecord" from "juicer"
941  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
942  or
943  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
944  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
945  """
946  # see if this refers to a named ESProducer
947  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
948  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
949  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
950  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
951  pass
952  else:
953  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
def es_sources_
Definition: Config.py:253
def _findPreferred
Definition: Config.py:954
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 799 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_, FourVectorHLTOnline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), list(), Config.Process.paths, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, Config.Process.schedule_(), edm::SubProcess.schedule_, edm::EventProcessor.schedule_, and Config.Process.vpsets_().

Referenced by dirstructure.Directory.prune().

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

919  def validate(self):
920  # check if there's some input
921  # Breaks too many unit tests for now
922  #if self.source_() == None and self.looper_() == None:
923  # raise RuntimeError("No input source was found for this process")
924  pass
def validate
Definition: Config.py:918
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 876 of file Config.py.

Config.Process.__process
private

Definition at line 877 of file Config.py.

Config.Process.__processPSet
private

Definition at line 866 of file Config.py.

Config.Process.__thelist
private

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

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().