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 addSubProcess
 
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 source_
 
def subProcesses_
 
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')
 
 subProcesses = property(subProcesses_,doc='the SubProcesses that have been added to the Process')
 
 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 _dumpPythonSubProcesses
 
def _findPreferred
 
def _insertInto
 
def _insertManyInto
 
def _insertOneInto
 
def _insertPaths
 
def _insertSubProcessesInto
 
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 99 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
    that will be used to modify the Process as it is built

Definition at line 101 of file Config.py.

Referenced by Config.Process.fillProcessDesc().

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

Member Function Documentation

def Config.Process.__delattr__ (   self,
  name 
)

Definition at line 387 of file Config.py.

Referenced by Config.Process.__setattr__().

388  def __delattr__(self,name):
389  if not hasattr(self,name):
390  raise KeyError('process does not know about '+name)
391  elif name.startswith('_Process__'):
392  raise ValueError('this attribute cannot be deleted')
393  else:
394  # we have to remove it from all dictionaries/registries
395  dicts = [item for item in self.__dict__.values() if (type(item)==dict or type(item)==DictTypes.SortedKeysDict)]
396  for reg in dicts:
397  if name in reg: del reg[name]
398  # if it was a labelable object, the label needs to be removed
399  obj = getattr(self,name)
400  if isinstance(obj,_Labelable):
401  getattr(self,name).setLabel(None)
402  # now remove it from the process itself
403  try:
404  del self.__dict__[name]
405  except:
406  pass
def __delattr__
Definition: Config.py:387
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 376 of file Config.py.

References list().

Referenced by Config.Process.__setattr__().

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

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

Definition at line 271 of file Config.py.

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

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

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

Definition at line 643 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

644  def _dumpConfigESPrefers(self, options):
645  result = ''
646  for item in self.es_prefers_().itervalues():
647  result +=options.indentation()+'es_prefer '+item.targetLabel_()+' = '+item.dumpConfig(options)
return result
def _dumpConfigESPrefers
Definition: Config.py:643
def es_prefers_
Definition: Config.py:254
def Config.Process._dumpConfigNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 564 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 574 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 569 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 702 of file Config.py.

Referenced by Config.Process.dumpPython().

703  def _dumpPython(self, d, options):
704  result = ''
705  for name, value in sorted(d.iteritems()):
706  result += value.dumpPythonAs(name,options)+'\n'
return result
def _dumpPython
Definition: Config.py:702
def Config.Process._dumpPythonList (   self,
  d,
  options 
)
private

Definition at line 653 of file Config.py.

Referenced by Config.Process.dumpPython().

654  def _dumpPythonList(self, d, options):
655  returnValue = ''
656  if isinstance(d, DictTypes.SortedKeysDict):
657  for name,item in d.items():
658  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
659  else:
660  for name,item in sorted(d.items()):
661  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonList
Definition: Config.py:653
def Config.Process._dumpPythonSubProcesses (   self,
  l,
  options 
)
private

Definition at line 648 of file Config.py.

Referenced by Config.Process.dumpPython().

649  def _dumpPythonSubProcesses(self, l, options):
650  returnValue = ''
651  for item in l:
652  returnValue += item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonSubProcesses
Definition: Config.py:648
def Config.Process._findPreferred (   self,
  esname,
  d,
  args,
  kargs 
)
private

Definition at line 978 of file Config.py.

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

979  def _findPreferred(self, esname, d,*args,**kargs):
980  # is esname a name in the dictionary?
981  if esname in d:
982  typ = d[esname].type_()
983  if typ == esname:
984  self.__setattr__( esname+"_prefer", ESPrefer(typ,*args,**kargs) )
985  else:
986  self.__setattr__( esname+"_prefer", ESPrefer(typ, esname,*args,**kargs) )
987  return True
988  else:
989  # maybe it's an unnamed ESModule?
990  found = False
991  for name, value in d.iteritems():
992  if value.type_() == esname:
993  if found:
994  raise RuntimeError("More than one ES module for "+esname)
995  found = True
996  self.__setattr__(esname+"_prefer", ESPrefer(d[esname].type_()) )
997  return found
998 
def _findPreferred
Definition: Config.py:978
def __setattr__
Definition: Config.py:298
def Config.Process._insertInto (   self,
  parameterSet,
  itemDict 
)
private

Definition at line 750 of file Config.py.

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

Definition at line 760 of file Config.py.

761  def _insertManyInto(self, parameterSet, label, itemDict, tracked):
762  l = []
763  for name,value in itemDict.iteritems():
764  newLabel = value.nameInProcessDesc_(name)
765  l.append(newLabel)
766  value.insertInto(parameterSet, name)
767  # alphabetical order is easier to compare with old language
768  l.sort()
parameterSet.addVString(tracked, label, l)
def _insertManyInto
Definition: Config.py:760
def Config.Process._insertOneInto (   self,
  parameterSet,
  label,
  item,
  tracked 
)
private

Definition at line 753 of file Config.py.

754  def _insertOneInto(self, parameterSet, label, item, tracked):
755  vitems = []
756  if not item == None:
757  newlabel = item.nameInProcessDesc_(label)
758  vitems = [newlabel]
759  item.insertInto(parameterSet, newlabel)
parameterSet.addVString(tracked, label, vitems)
def _insertOneInto
Definition: Config.py:753
def Config.Process._insertPaths (   self,
  processPSet 
)
private

Definition at line 782 of file Config.py.

References Config.Process.endpaths_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.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::EventProcessor.schedule_, edm::SubProcess.schedule_, and cmsPerfHarvest.visit().

783  def _insertPaths(self, processPSet):
784  scheduledPaths = []
785  triggerPaths = []
786  endpaths = []
787  if self.schedule_() == None:
788  # make one from triggerpaths & endpaths
789  for name,value in self.paths_().iteritems():
790  scheduledPaths.append(name)
791  triggerPaths.append(name)
792  for name,value in self.endpaths_().iteritems():
793  scheduledPaths.append(name)
794  endpaths.append(name)
795  else:
796  for path in self.schedule_():
797  pathname = path.label_()
798  scheduledPaths.append(pathname)
799  if pathname in self.endpaths_():
800  endpaths.append(pathname)
801  else:
802  triggerPaths.append(pathname)
803  processPSet.addVString(True, "@end_paths", endpaths)
804  processPSet.addVString(True, "@paths", scheduledPaths)
805  # trigger_paths are a little different
806  p = processPSet.newPSet()
807  p.addVString(True, "@trigger_paths", triggerPaths)
808  processPSet.addPSet(True, "@trigger_paths", p)
809  # add all these paths
810  pathValidator = PathValidator()
811  endpathValidator = EndPathValidator()
812  for triggername in triggerPaths:
813  #self.paths_()[triggername].insertInto(processPSet, triggername, self.sequences_())
814  pathValidator.setLabel(triggername)
815  self.paths_()[triggername].visit(pathValidator)
816  self.paths_()[triggername].insertInto(processPSet, triggername, self.__dict__)
817  for endpathname in endpaths:
818  #self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.sequences_())
819  endpathValidator.setLabel(endpathname)
820  self.endpaths_()[endpathname].visit(endpathValidator)
821  self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.__dict__)
822  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths
Definition: Config.py:782
def visit
Retrieve data from a perf suite output (sub) directory, only examines TimeSize at the moment...
def schedule_
Definition: Config.py:222
def endpaths_
Definition: Config.py:214
def Config.Process._insertSubProcessesInto (   self,
  parameterSet,
  label,
  itemList,
  tracked 
)
private

Definition at line 769 of file Config.py.

770  def _insertSubProcessesInto(self, parameterSet, label, itemList, tracked):
771  l = []
772  subprocs = []
773  for value in itemList:
774  name = value.getProcessName()
775  newLabel = value.nameInProcessDesc_(name)
776  l.append(newLabel)
777  pset = value.getSubProcessPSet(parameterSet)
778  subprocs.append(pset)
779  # alphabetical order is easier to compare with old language
780  l.sort()
781  parameterSet.addVString(tracked, label, l)
parameterSet.addVPSet(False,"subProcesses",subprocs)
def _insertSubProcessesInto
Definition: Config.py:769
def Config.Process._okToPlace (   self,
  name,
  mod,
  d 
)
private

Definition at line 422 of file Config.py.

References Config.Process.__isStrict.

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

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

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

444  def _place(self, name, mod, d):
445  if self._okToPlace(name, mod, d):
446  if self.__isStrict and isinstance(mod, _ModuleSequenceType):
447  d[name] = mod._postProcessFixup(self._cloneToObjectDict)
448  else:
449  d[name] = mod
450  if isinstance(mod,_Labelable):
self.__setObjectLabel(mod, name)
def __setObjectLabel
Definition: Config.py:271
def _okToPlace
Definition: Config.py:422
def Config.Process._placeAlias (   self,
  name,
  mod 
)
private

Definition at line 482 of file Config.py.

References Config.Process._place().

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

Definition at line 457 of file Config.py.

References Config.Process._place().

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

Definition at line 466 of file Config.py.

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

467  def _placeEndPath(self,name,mod):
468  self._validateSequence(mod, name)
469  try:
470  self._place(name, mod, self.__endpaths)
471  except ModuleCloneError as msg:
472  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:662
def _placeEndPath
Definition: Config.py:466
def Config.Process._placeESPrefer (   self,
  name,
  mod 
)
private

Definition at line 478 of file Config.py.

References Config.Process._place().

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

Definition at line 476 of file Config.py.

References Config.Process._place().

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

Definition at line 480 of file Config.py.

References Config.Process._place().

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

Definition at line 455 of file Config.py.

References Config.Process._place().

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

Definition at line 496 of file Config.py.

Referenced by Config.Process.setLooper_().

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

Definition at line 451 of file Config.py.

References Config.Process._place().

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

Definition at line 459 of file Config.py.

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

460  def _placePath(self,name,mod):
461  self._validateSequence(mod, name)
462  try:
463  self._place(name, mod, self.__paths)
464  except ModuleCloneError as msg:
465  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:662
def _placePath
Definition: Config.py:459
def Config.Process._placeProducer (   self,
  name,
  mod 
)
private

Definition at line 453 of file Config.py.

References Config.Process._place().

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

Definition at line 484 of file Config.py.

References Config.Process._place().

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

Definition at line 473 of file Config.py.

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

474  def _placeSequence(self,name,mod):
475  self._validateSequence(mod, name)
self._place(name, mod, self.__sequences)
def _validateSequence
Definition: Config.py:662
def _placeSequence
Definition: Config.py:473
def Config.Process._placeService (   self,
  typeName,
  mod 
)
private

Definition at line 506 of file Config.py.

References Config.Process._place().

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

Definition at line 488 of file Config.py.

Referenced by Config.Process.setSource_().

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

Definition at line 501 of file Config.py.

502  def _placeSubProcess(self,name,mod):
503  self.__dict__['_Process__subProcess'] = mod
self.__dict__[mod.type_()] = mod
def _placeSubProcess
Definition: Config.py:501
def Config.Process._placeVPSet (   self,
  name,
  mod 
)
private

Definition at line 486 of file Config.py.

References Config.Process._place().

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

Definition at line 878 of file Config.py.

Referenced by Config.Process.prune().

879  def _pruneModules(self, d, scheduledNames):
880  moduleNames = set(d.keys())
881  junk = moduleNames - scheduledNames
882  for name in junk:
883  delattr(self, name)
884  return junk
def _pruneModules
Definition: Config.py:878
def Config.Process._replaceInSequences (   self,
  label,
  new 
)
private

Definition at line 735 of file Config.py.

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

736  def _replaceInSequences(self, label, new):
737  old = getattr(self,label)
738  #TODO - replace by iterator concatenation
739  for sequenceable in self.sequences.itervalues():
740  sequenceable.replace(old,new)
741  for sequenceable in self.paths.itervalues():
742  sequenceable.replace(old,new)
743  for sequenceable in self.endpaths.itervalues():
sequenceable.replace(old,new)
def _replaceInSequences
Definition: Config.py:735
def Config.Process._sequencesInDependencyOrder (   self)
private

Definition at line 670 of file Config.py.

References cmsPerfStripChart.dict, join(), and Config.Process.sequences.

Referenced by Config.Process.dumpPython().

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

Definition at line 662 of file Config.py.

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

663  def _validateSequence(self, sequence, label):
664  # See if every module has been inserted into the process
665  try:
666  l = set()
667  nameVisitor = NodeNameVisitor(l)
668  sequence.visit(nameVisitor)
669  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:662
def Config.Process.add_ (   self,
  value 
)
Allows addition of components that do not have to have a label, e.g. Services

Definition at line 407 of file Config.py.

References Config.Process.__isStrict.

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

408  def add_(self,value):
409  """Allows addition of components that do not have to have a label, e.g. Services"""
410  if not isinstance(value,_ConfigureComponent):
411  raise TypeError
412  if not isinstance(value,_Unlabelable):
413  raise TypeError
414  #clone the item
415  #clone the item
416  if self.__isStrict:
417  newValue =value.copy()
418  value.setIsFrozen()
419  else:
420  newValue =value
421  newValue._place('',self)
def Config.Process.addSubProcess (   self,
  mod 
)

Definition at line 504 of file Config.py.

505  def addSubProcess(self,mod):
self.__subProcesses.append(mod)
def addSubProcess
Definition: Config.py:504
def Config.Process.aliases_ (   self)
returns a dict of the aliases that have been added to the Process

Definition at line 258 of file Config.py.

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

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

Definition at line 144 of file Config.py.

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

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

Definition at line 202 of file Config.py.

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

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

Definition at line 581 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.subProcesses_(), edm::EventProcessor.subProcesses_, and edm::SubProcess.subProcesses_.

Referenced by Types.SecSource.configValue().

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

Definition at line 707 of file Config.py.

References dataset.Dataset.__name, Config.Process._dumpPython(), Config.Process._dumpPythonList(), Config.Process._dumpPythonSubProcesses(), 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.subProcesses_(), edm::EventProcessor.subProcesses_, edm::SubProcess.subProcesses_, 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__().

708  def dumpPython(self, options=PrintOptions()):
709  """return a string containing the equivalent process defined using python"""
710  result = "import FWCore.ParameterSet.Config as cms\n\n"
711  result += "process = cms.Process(\""+self.__name+"\")\n\n"
712  if self.source_():
713  result += "process.source = "+self.source_().dumpPython(options)
714  if self.looper_():
715  result += "process.looper = "+self.looper_().dumpPython()
716  result+=self._dumpPythonList(self.psets, options)
717  result+=self._dumpPythonList(self.vpsets, options)
718  result+=self._dumpPythonSubProcesses(self.subProcesses_(), options)
719  result+=self._dumpPythonList(self.producers_(), options)
720  result+=self._dumpPythonList(self.filters_() , options)
721  result+=self._dumpPythonList(self.analyzers_(), options)
722  result+=self._dumpPythonList(self.outputModules_(), options)
723  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
724  result+=self._dumpPythonList(self.paths_(), options)
725  result+=self._dumpPythonList(self.endpaths_(), options)
726  result+=self._dumpPythonList(self.services_(), options)
727  result+=self._dumpPythonList(self.es_producers_(), options)
728  result+=self._dumpPythonList(self.es_sources_(), options)
729  result+=self._dumpPython(self.es_prefers_(), options)
730  result+=self._dumpPythonList(self.aliases_(), options)
731  if self.schedule:
732  pathNames = ['process.'+p.label_() for p in self.schedule]
733  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
734 
return result
def es_sources_
Definition: Config.py:250
def es_producers_
Definition: Config.py:246
def aliases_
Definition: Config.py:258
def filters_
Definition: Config.py:171
def dumpPython
Definition: Config.py:707
def es_prefers_
Definition: Config.py:254
def _dumpPythonSubProcesses
Definition: Config.py:648
def _sequencesInDependencyOrder
Definition: Config.py:670
def outputModules_
Definition: Config.py:206
def producers_
Definition: Config.py:182
def analyzers_
Definition: Config.py:202
def services_
Definition: Config.py:242
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _dumpPythonList
Definition: Config.py:653
def subProcesses_
Definition: Config.py:198
def _dumpPython
Definition: Config.py:702
def endpaths_
Definition: Config.py:214
def Config.Process.endpaths_ (   self)
returns a dict of the endpaths that have been added to the Process

Definition at line 214 of file Config.py.

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

215  def endpaths_(self):
216  """returns a dict of the endpaths that have been added to the Process"""
return DictTypes.SortedAndFixedKeysDict(self.__endpaths)
def endpaths_
Definition: Config.py:214
def Config.Process.es_prefers_ (   self)
returns a dict of the es_prefers that have been added to the Process

Definition at line 254 of file Config.py.

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

255  def es_prefers_(self):
256  """returns a dict of the es_prefers that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esprefers)
def es_prefers_
Definition: Config.py:254
def Config.Process.es_producers_ (   self)
returns a dict of the esproducers that have been added to the Process

Definition at line 246 of file Config.py.

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

247  def es_producers_(self):
248  """returns a dict of the esproducers that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esproducers)
def es_producers_
Definition: Config.py:246
def Config.Process.es_sources_ (   self)
returns a the es_sources that have been added to the Process

Definition at line 250 of file Config.py.

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

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

Definition at line 513 of file Config.py.

References psClasses.BuildTreeNode.__setattr__(), Config.Process.__setattr__(), Config.FilteredStream.__setattr__, Config.Process.__setObjectLabel(), Config.Process.add_(), cmsPerfStripChart.dict, dir, ora::ContainerSchema.extend(), svgfig.SVG.extend(), and Config.Process.extend().

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

514  def extend(self,other,items=()):
515  """Look in other and find types that we can use"""
516  # enable explicit check to avoid overwriting of existing objects
517  self.__dict__['_Process__InExtendCall'] = True
518 
519  seqs = dict()
520  mods = []
521  for name in dir(other):
522  #'from XX import *' ignores these, and so should we.
523  if name.startswith('_'):
524  continue
525  item = getattr(other,name)
526  if name == "source" or name == "looper":
527  # In these cases 'item' could be None if the specific object was not defined
528  if item is not None:
529  self.__setattr__(name,item)
530  elif isinstance(item,_ModuleSequenceType):
531  seqs[name]=item
532  elif isinstance(item,_Labelable):
533  self.__setattr__(name,item)
534  if not item.hasLabel_() :
535  item.setLabel(name)
536  elif isinstance(item,Schedule):
537  self.__setattr__(name,item)
538  elif isinstance(item,_Unlabelable):
539  self.add_(item)
540  elif isinstance(item,ProcessModifier):
541  mods.append(item)
542  elif isinstance(item,ProcessFragment):
543  self.extend(item)
544 
545  #now create a sequence that uses the newly made items
546  for name in seqs.iterkeys():
547  seq = seqs[name]
548  #newSeq = seq.copy()
549  #
550  if id(seq) not in self._cloneToObjectDict:
551  self.__setattr__(name,seq)
552  else:
553  newSeq = self._cloneToObjectDict[id(seq)]
554  self.__dict__[name]=newSeq
555  self.__setObjectLabel(newSeq, name)
556  #now put in proper bucket
557  newSeq._place(name,self)
558 
559  #apply modifiers now that all names have been added
560  for item in mods:
561  item.apply(self)
562 
563  self.__dict__['_Process__InExtendCall'] = False
def __setObjectLabel
Definition: Config.py:271
def __setattr__
Definition: Config.py:298
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 885 of file Config.py.

References Config.Process.__init__().

886  def fillProcessDesc(self, processPSet):
887  """Used by the framework to convert python to C++ objects"""
888  class ServiceInjectorAdaptor(object):
889  def __init__(self,ppset,thelist):
890  self.__thelist = thelist
891  self.__processPSet = ppset
892  def addService(self,pset):
893  self.__thelist.append(pset)
894  def newPSet(self):
895  return self.__processPSet.newPSet()
896  #This adaptor is used to 'add' the method 'getTopPSet_'
897  # to the ProcessDesc and PythonParameterSet C++ classes.
898  # This method is needed for the PSet refToPSet_ functionality.
899  class TopLevelPSetAcessorAdaptor(object):
900  def __init__(self,ppset,process):
901  self.__ppset = ppset
902  self.__process = process
903  def __getattr__(self,attr):
904  return getattr(self.__ppset,attr)
905  def getTopPSet_(self,label):
906  return getattr(self.__process,label)
907  def newPSet(self):
908  return TopLevelPSetAcessorAdaptor(self.__ppset.newPSet(),self.__process)
909  def addPSet(self,tracked,name,ppset):
910  return self.__ppset.addPSet(tracked,name,self.__extractPSet(ppset))
911  def addVPSet(self,tracked,name,vpset):
912  return self.__ppset.addVPSet(tracked,name,[self.__extractPSet(x) for x in vpset])
913  def __extractPSet(self,pset):
914  if isinstance(pset,TopLevelPSetAcessorAdaptor):
915  return pset.__ppset
916  return pset
917 
918  self.validate()
919  processPSet.addString(True, "@process_name", self.name_())
920  all_modules = self.producers_().copy()
921  all_modules.update(self.filters_())
922  all_modules.update(self.analyzers_())
923  all_modules.update(self.outputModules_())
924  adaptor = TopLevelPSetAcessorAdaptor(processPSet,self)
925  self._insertInto(adaptor, self.psets_())
926  self._insertInto(adaptor, self.vpsets_())
927  self._insertManyInto(adaptor, "@all_modules", all_modules, True)
928  self._insertOneInto(adaptor, "@all_sources", self.source_(), True)
929  self._insertOneInto(adaptor, "@all_loopers", self.looper_(), True)
930  self._insertSubProcessesInto(adaptor, "@all_subprocesses", self.subProcesses_(), False)
931  self._insertManyInto(adaptor, "@all_esmodules", self.es_producers_(), True)
932  self._insertManyInto(adaptor, "@all_essources", self.es_sources_(), True)
933  self._insertManyInto(adaptor, "@all_esprefers", self.es_prefers_(), True)
934  self._insertManyInto(adaptor, "@all_aliases", self.aliases_(), True)
935  self._insertPaths(adaptor)
936  #handle services differently
937  services = []
938  for n in self.services_():
939  getattr(self,n).insertInto(ServiceInjectorAdaptor(adaptor,services))
940  adaptor.addVPSet(False,"services",services)
941  return processPSet
def es_sources_
Definition: Config.py:250
def _insertManyInto
Definition: Config.py:760
def es_producers_
Definition: Config.py:246
def aliases_
Definition: Config.py:258
def filters_
Definition: Config.py:171
def es_prefers_
Definition: Config.py:254
def _insertPaths
Definition: Config.py:782
def _insertSubProcessesInto
Definition: Config.py:769
def outputModules_
Definition: Config.py:206
def producers_
Definition: Config.py:182
def fillProcessDesc
Definition: Config.py:885
def __init__
Definition: Config.py:101
def _insertInto
Definition: Config.py:750
def analyzers_
Definition: Config.py:202
def services_
Definition: Config.py:242
def validate
Definition: Config.py:942
def _insertOneInto
Definition: Config.py:753
def subProcesses_
Definition: Config.py:198
def Config.Process.filterNames (   self)
Returns a string containing all the EDFilter labels separated by a blank

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

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

Definition at line 171 of file Config.py.

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

172  def filters_(self):
173  """returns a dict of the filters that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__filters)
def filters_
Definition: Config.py:171
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 744 of file Config.py.

References Config.Process._replaceInSequences().

745  def globalReplace(self,label,new):
746  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths"""
747  if not hasattr(self,label):
748  raise LookupError("process has no item of label "+label)
749  self._replaceInSequences(label, new)
setattr(self,label,new)
def _replaceInSequences
Definition: Config.py:735
def globalReplace
Definition: Config.py:744
def Config.Process.load (   self,
  moduleName 
)

Definition at line 509 of file Config.py.

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

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

Definition at line 192 of file Config.py.

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

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

Definition at line 175 of file Config.py.

References dataset.Dataset.__name.

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

Definition at line 206 of file Config.py.

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

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

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

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

Definition at line 210 of file Config.py.

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

211  def paths_(self):
212  """returns a dict of the paths that 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 that 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 949 of file Config.py.

950  def prefer(self, esmodule,*args,**kargs):
951  """Prefer this ES source or producer. The argument can
952  either be an object label, e.g.,
953  process.prefer(process.juicerProducer) (not supported yet)
954  or a name of an ESSource or ESProducer
955  process.prefer("juicer")
956  or a type of unnamed ESSource or ESProducer
957  process.prefer("JuicerProducer")
958  In addition, you can pass as a labelled arguments the name of the Record you wish to
959  prefer where the type passed is a cms.vstring and that vstring can contain the
960  name of the C++ types in the Record that are being preferred, e.g.,
961  #prefer all data in record 'OrangeRecord' from 'juicer'
962  process.prefer("juicer", OrangeRecord=cms.vstring())
963  or
964  #prefer only "Orange" data in "OrangeRecord" from "juicer"
965  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
966  or
967  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
968  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
969  """
970  # see if this refers to a named ESProducer
971  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
972  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
973  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
974  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
975  pass
976  else:
977  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
def es_sources_
Definition: Config.py:250
def _findPreferred
Definition: Config.py:978
def es_producers_
Definition: Config.py:246
def Config.Process.producerNames (   self)
Returns a string containing all the EDProducer labels separated by a blank

Definition at line 141 of file Config.py.

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

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

Definition at line 182 of file Config.py.

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

183  def producers_(self):
184  """returns a dict of the producers that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__producers)
def producers_
Definition: Config.py:182
def Config.Process.prune (   self,
  verbose = False,
  keepUnresolvedSequencePlaceholders = False 
)
Remove clutter from the process that 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 823 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::EventProcessor.schedule_, edm::SubProcess.schedule_, and Config.Process.vpsets_().

Referenced by dirstructure.Directory.prune().

824  def prune(self,verbose=False,keepUnresolvedSequencePlaceholders=False):
825  """ Remove clutter from the process that we think is unnecessary:
826  tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
827  not in the schedule will also be removed, along with an modules and sequences used only by
828  those removed Paths and EndPaths."""
829 # need to update this to only prune psets not on refToPSets
830 # but for now, remove the delattr
831 # for name in self.psets_():
832 # if getattr(self,name).isTracked():
833 # delattr(self, name)
834  for name in self.vpsets_():
835  delattr(self, name)
836  #first we need to resolve any SequencePlaceholders being used
837  for x in self.paths.itervalues():
838  x.resolve(self.__dict__,keepUnresolvedSequencePlaceholders)
839  for x in self.endpaths.itervalues():
840  x.resolve(self.__dict__,keepUnresolvedSequencePlaceholders)
841  usedModules = set()
842  unneededPaths = set()
843  if self.schedule_():
844  usedModules=set(self.schedule_().moduleNames())
845  #get rid of unused paths
846  schedNames = set(( x.label_() for x in self.schedule_()))
847  names = set(self.paths)
848  names.update(set(self.endpaths))
849  unneededPaths = names - schedNames
850  for n in unneededPaths:
851  delattr(self,n)
852  else:
853  pths = list(self.paths.itervalues())
854  pths.extend(self.endpaths.itervalues())
855  temp = Schedule(*pths)
856  usedModules=set(temp.moduleNames())
857  unneededModules = self._pruneModules(self.producers_(), usedModules)
858  unneededModules.update(self._pruneModules(self.filters_(), usedModules))
859  unneededModules.update(self._pruneModules(self.analyzers_(), usedModules))
860  #remove sequences that do not appear in remaining paths and endpaths
861  seqs = list()
862  sv = SequenceVisitor(seqs)
863  for p in self.paths.itervalues():
864  p.visit(sv)
865  for p in self.endpaths.itervalues():
866  p.visit(sv)
867  keepSeqSet = set(( s for s in seqs if s.hasLabel_()))
868  availableSeqs = set(self.sequences.itervalues())
869  unneededSeqs = availableSeqs-keepSeqSet
870  unneededSeqLabels = []
871  for s in unneededSeqs:
872  unneededSeqLabels.append(s.label_())
873  delattr(self,s.label_())
874  if verbose:
875  print "prune removed the following:"
876  print " modules:"+",".join(unneededModules)
877  print " sequences:"+",".join(unneededSeqLabels)
print " paths/endpaths:"+",".join(unneededPaths)
def filters_
Definition: Config.py:171
def producers_
Definition: Config.py:182
def analyzers_
Definition: Config.py:202
def schedule_
Definition: Config.py:222
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _pruneModules
Definition: Config.py:878
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 that have been added to the Process

Definition at line 262 of file Config.py.

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

Definition at line 222 of file Config.py.

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

223  def schedule_(self):
224  """returns the schedule that has been added to the Process or None if none have been added"""
return self.__schedule
def schedule_
Definition: Config.py:222
def Config.Process.sequences_ (   self)
returns a dict of the sequences that have been added to the Process

Definition at line 218 of file Config.py.

Referenced by Config.Process.dumpConfig().

219  def sequences_(self):
220  """returns a dict of the sequences that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__sequences)
def sequences_
Definition: Config.py:218
def Config.Process.services_ (   self)
returns a dict of the services that have been added to the Process

Definition at line 242 of file Config.py.

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

243  def services_(self):
244  """returns a dict of the services that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__services)
def services_
Definition: Config.py:242
def Config.Process.setLooper_ (   self,
  lpr 
)

Definition at line 195 of file Config.py.

References Config.Process._placeLooper().

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

Definition at line 177 of file Config.py.

178  def setName_(self,name):
179  if not name.isalnum():
180  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:177
def Config.Process.setPartialSchedule_ (   self,
  sch,
  label 
)

Definition at line 225 of file Config.py.

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

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

Definition at line 230 of file Config.py.

Referenced by Config.Process.setPartialSchedule_().

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

Definition at line 189 of file Config.py.

References Config.Process._placeSource().

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

Definition at line 136 of file Config.py.

References Config.Process.__isStrict.

137  def setStrict(self, value):
138  self.__isStrict = value
139  _Module.__isStrict__ = True
def setStrict
Definition: Config.py:136
def Config.Process.source_ (   self)
returns the source that has been added to the Process or None if none have been added

Definition at line 186 of file Config.py.

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

187  def source_(self):
188  """returns the source that has been added to the Process or None if none have been added"""
return self.__source
def Config.Process.subProcesses_ (   self)
returns a list of the subProcesses that have been added to the Process

Definition at line 198 of file Config.py.

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

199  def subProcesses_(self):
200  """returns a list of the subProcesses that have been added to the Process"""
return self.__subProcesses
def subProcesses_
Definition: Config.py:198
def Config.Process.validate (   self)

Definition at line 942 of file Config.py.

943  def validate(self):
944  # check if there's some input
945  # Breaks too many unit tests for now
946  #if self.source_() == None and self.looper_() == None:
947  # raise RuntimeError("No input source was found for this process")
948  pass
def validate
Definition: Config.py:942
def Config.Process.vpsets_ (   self)
returns a dict of the VPSets that have been added to the Process

Definition at line 266 of file Config.py.

Referenced by Config.Process.prune().

267  def vpsets_(self):
268  """returns a dict of the VPSets that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__vpsets)

Member Data Documentation

Config.Process.__isStrict
private

Definition at line 131 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 900 of file Config.py.

Config.Process.__process
private

Definition at line 901 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 890 of file Config.py.

Config.Process.__thelist
private

Definition at line 889 of file Config.py.

Property Documentation

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

Definition at line 261 of file Config.py.

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

Definition at line 205 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 217 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 257 of file Config.py.

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

Definition at line 249 of file Config.py.

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

Definition at line 253 of file Config.py.

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

Definition at line 174 of file Config.py.

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

Definition at line 197 of file Config.py.

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

Definition at line 209 of file Config.py.

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

Definition at line 213 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 181 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 185 of file Config.py.

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

Definition at line 265 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 241 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 221 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 245 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 191 of file Config.py.

Referenced by confdb.HLTProcess.specificCustomize().

Config.Process.subProcesses = property(subProcesses_,doc='the SubProcesses that have been added to the Process')
static

Definition at line 201 of file Config.py.

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

Definition at line 269 of file Config.py.

Referenced by Config.Process.dumpPython().