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 - requested label is "+name)
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:727
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 639 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

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

Definition at line 561 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 571 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 566 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 693 of file Config.py.

Referenced by Config.Process.dumpPython().

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

Definition at line 644 of file Config.py.

Referenced by Config.Process.dumpPython().

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

Definition at line 957 of file Config.py.

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

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

Definition at line 742 of file Config.py.

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

Definition at line 752 of file Config.py.

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

Definition at line 745 of file Config.py.

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

Definition at line 761 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_, 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().

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

Referenced by Config.Process.prune().

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

Definition at line 727 of file Config.py.

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

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

Definition at line 661 of file Config.py.

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

Referenced by Config.Process.dumpPython().

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

Definition at line 653 of file Config.py.

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

654  def _validateSequence(self, sequence, label):
655  # See if every module has been inserted into the process
656  try:
657  l = set()
658  nameVisitor = NodeNameVisitor(l)
659  sequence.visit(nameVisitor)
660  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:653
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 578 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_, 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().

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

699  def dumpPython(self, options=PrintOptions()):
700  """return a string containing the equivalent process defined using python"""
701  result = "import FWCore.ParameterSet.Config as cms\n\n"
702  result += "process = cms.Process(\""+self.__name+"\")\n\n"
703  if self.source_():
704  result += "process.source = "+self.source_().dumpPython(options)
705  if self.looper_():
706  result += "process.looper = "+self.looper_().dumpPython()
707  if self.subProcess_():
708  result += self.subProcess_().dumpPython(options)
709  result+=self._dumpPythonList(self.producers_(), options)
710  result+=self._dumpPythonList(self.filters_() , options)
711  result+=self._dumpPythonList(self.analyzers_(), options)
712  result+=self._dumpPythonList(self.outputModules_(), options)
713  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
714  result+=self._dumpPythonList(self.paths_(), options)
715  result+=self._dumpPythonList(self.endpaths_(), options)
716  result+=self._dumpPythonList(self.services_(), options)
717  result+=self._dumpPythonList(self.es_producers_(), options)
718  result+=self._dumpPythonList(self.es_sources_(), options)
719  result+=self._dumpPython(self.es_prefers_(), options)
720  result+=self._dumpPythonList(self.aliases_(), options)
721  result+=self._dumpPythonList(self.psets, options)
722  result+=self._dumpPythonList(self.vpsets, options)
723  if self.schedule:
724  pathNames = ['process.'+p.label_() for p in self.schedule]
725  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
726 
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:698
def es_prefers_
Definition: Config.py:257
def _sequencesInDependencyOrder
Definition: Config.py:661
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:644
def _dumpPython
Definition: Config.py:693
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 MatrixUtil.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  # In these cases 'item' could be None if the specific object was not defined
530  if item is not None:
531  self.__setattr__(name,item)
532  elif isinstance(item,_ModuleSequenceType):
533  seqs[name]=item
534  elif isinstance(item,_Labelable):
535  self.__setattr__(name,item)
536  if not item.hasLabel_() :
537  item.setLabel(name)
538  elif isinstance(item,Schedule):
539  self.__setattr__(name,item)
540  elif isinstance(item,_Unlabelable):
541  self.add_(item)
542  elif isinstance(item,ProcessModifier):
543  item.apply(self)
544  elif isinstance(item,ProcessFragment):
545  self.extend(item)
546 
547  #now create a sequence which uses the newly made items
548  for name in seqs.iterkeys():
549  seq = seqs[name]
550  #newSeq = seq.copy()
551  #
552  if id(seq) not in self._cloneToObjectDict:
553  self.__setattr__(name,seq)
554  else:
555  newSeq = self._cloneToObjectDict[id(seq)]
556  self.__dict__[name]=newSeq
557  self.__setObjectLabel(newSeq, name)
558  #now put in proper bucket
559  newSeq._place(name,self)
560  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 864 of file Config.py.

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

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

References Config.Process._replaceInSequences().

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

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

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

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

Config.Process.__process
private

Definition at line 880 of file Config.py.

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

Config.Process.__processPSet
private

Definition at line 869 of file Config.py.

Config.Process.__thelist
private

Definition at line 868 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.addExtraStream(), 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_HLT(), ConfigBuilder.ConfigBuilder.prepare_LHE(), ConfigBuilder.ConfigBuilder.prepare_PATFILTER(), 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 Config.Process.dumpConfig(), and Config.Process.dumpPython().

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