test
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 isUsingModifier
 
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 395 of file Config.py.

Referenced by Config.Process.__setattr__().

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

References list().

Referenced by Config.Process.__setattr__().

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

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

Definition at line 279 of file Config.py.

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

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

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

652  def _dumpConfigESPrefers(self, options):
653  result = ''
654  for item in self.es_prefers_().itervalues():
655  result +=options.indentation()+'es_prefer '+item.targetLabel_()+' = '+item.dumpConfig(options)
return result
def _dumpConfigESPrefers
Definition: Config.py:651
def es_prefers_
Definition: Config.py:254
def Config.Process._dumpConfigNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 572 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 582 of file Config.py.

Referenced by Config.Process.dumpConfig().

583  def _dumpConfigOptionallyNamedList(self,items,typeName,options):
584  returnValue = ''
585  for name,item in items:
586  if name == item.type_():
587  name = ''
588  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigOptionallyNamedList
Definition: Config.py:582
def Config.Process._dumpConfigUnnamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 577 of file Config.py.

Referenced by Config.Process.dumpConfig().

578  def _dumpConfigUnnamedList(self,items,typeName,options):
579  returnValue = ''
580  for name,item in items:
581  returnValue +=options.indentation()+typeName+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigUnnamedList
Definition: Config.py:577
def Config.Process._dumpPython (   self,
  d,
  options 
)
private

Definition at line 710 of file Config.py.

Referenced by Config.Process.dumpPython().

711  def _dumpPython(self, d, options):
712  result = ''
713  for name, value in sorted(d.iteritems()):
714  result += value.dumpPythonAs(name,options)+'\n'
return result
def _dumpPython
Definition: Config.py:710
def Config.Process._dumpPythonList (   self,
  d,
  options 
)
private

Definition at line 661 of file Config.py.

Referenced by Config.Process.dumpPython().

662  def _dumpPythonList(self, d, options):
663  returnValue = ''
664  if isinstance(d, DictTypes.SortedKeysDict):
665  for name,item in d.items():
666  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
667  else:
668  for name,item in sorted(d.items()):
669  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonList
Definition: Config.py:661
def Config.Process._dumpPythonSubProcesses (   self,
  l,
  options 
)
private

Definition at line 656 of file Config.py.

Referenced by Config.Process.dumpPython().

657  def _dumpPythonSubProcesses(self, l, options):
658  returnValue = ''
659  for item in l:
660  returnValue += item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonSubProcesses
Definition: Config.py:656
def Config.Process._findPreferred (   self,
  esname,
  d,
  args,
  kargs 
)
private

Definition at line 986 of file Config.py.

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

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

Definition at line 758 of file Config.py.

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

Definition at line 768 of file Config.py.

769  def _insertManyInto(self, parameterSet, label, itemDict, tracked):
770  l = []
771  for name,value in itemDict.iteritems():
772  newLabel = value.nameInProcessDesc_(name)
773  l.append(newLabel)
774  value.insertInto(parameterSet, name)
775  # alphabetical order is easier to compare with old language
776  l.sort()
parameterSet.addVString(tracked, label, l)
def _insertManyInto
Definition: Config.py:768
def Config.Process._insertOneInto (   self,
  parameterSet,
  label,
  item,
  tracked 
)
private

Definition at line 761 of file Config.py.

762  def _insertOneInto(self, parameterSet, label, item, tracked):
763  vitems = []
764  if not item == None:
765  newlabel = item.nameInProcessDesc_(label)
766  vitems = [newlabel]
767  item.insertInto(parameterSet, newlabel)
parameterSet.addVString(tracked, label, vitems)
def _insertOneInto
Definition: Config.py:761
def Config.Process._insertPaths (   self,
  processPSet 
)
private

Definition at line 790 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::SubProcess.schedule_, edm::EventProcessor.schedule_, and cmsPerfHarvest.visit().

791  def _insertPaths(self, processPSet):
792  scheduledPaths = []
793  triggerPaths = []
794  endpaths = []
795  if self.schedule_() == None:
796  # make one from triggerpaths & endpaths
797  for name,value in self.paths_().iteritems():
798  scheduledPaths.append(name)
799  triggerPaths.append(name)
800  for name,value in self.endpaths_().iteritems():
801  scheduledPaths.append(name)
802  endpaths.append(name)
803  else:
804  for path in self.schedule_():
805  pathname = path.label_()
806  scheduledPaths.append(pathname)
807  if pathname in self.endpaths_():
808  endpaths.append(pathname)
809  else:
810  triggerPaths.append(pathname)
811  processPSet.addVString(True, "@end_paths", endpaths)
812  processPSet.addVString(True, "@paths", scheduledPaths)
813  # trigger_paths are a little different
814  p = processPSet.newPSet()
815  p.addVString(True, "@trigger_paths", triggerPaths)
816  processPSet.addPSet(True, "@trigger_paths", p)
817  # add all these paths
818  pathValidator = PathValidator()
819  endpathValidator = EndPathValidator()
820  for triggername in triggerPaths:
821  #self.paths_()[triggername].insertInto(processPSet, triggername, self.sequences_())
822  pathValidator.setLabel(triggername)
823  self.paths_()[triggername].visit(pathValidator)
824  self.paths_()[triggername].insertInto(processPSet, triggername, self.__dict__)
825  for endpathname in endpaths:
826  #self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.sequences_())
827  endpathValidator.setLabel(endpathname)
828  self.endpaths_()[endpathname].visit(endpathValidator)
829  self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.__dict__)
830  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths
Definition: Config.py:790
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 777 of file Config.py.

778  def _insertSubProcessesInto(self, parameterSet, label, itemList, tracked):
779  l = []
780  subprocs = []
781  for value in itemList:
782  name = value.getProcessName()
783  newLabel = value.nameInProcessDesc_(name)
784  l.append(newLabel)
785  pset = value.getSubProcessPSet(parameterSet)
786  subprocs.append(pset)
787  # alphabetical order is easier to compare with old language
788  l.sort()
789  parameterSet.addVString(tracked, label, l)
parameterSet.addVPSet(False,"subProcesses",subprocs)
def _insertSubProcessesInto
Definition: Config.py:777
def Config.Process._okToPlace (   self,
  name,
  mod,
  d 
)
private

Definition at line 430 of file Config.py.

References Config.Process.__isStrict.

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

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

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

452  def _place(self, name, mod, d):
453  if self._okToPlace(name, mod, d):
454  if self.__isStrict and isinstance(mod, _ModuleSequenceType):
455  d[name] = mod._postProcessFixup(self._cloneToObjectDict)
456  else:
457  d[name] = mod
458  if isinstance(mod,_Labelable):
self.__setObjectLabel(mod, name)
def __setObjectLabel
Definition: Config.py:279
def _okToPlace
Definition: Config.py:430
def Config.Process._placeAlias (   self,
  name,
  mod 
)
private

Definition at line 490 of file Config.py.

References Config.Process._place().

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

Definition at line 465 of file Config.py.

References Config.Process._place().

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

Definition at line 474 of file Config.py.

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

475  def _placeEndPath(self,name,mod):
476  self._validateSequence(mod, name)
477  try:
478  self._place(name, mod, self.__endpaths)
479  except ModuleCloneError as msg:
480  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:670
def _placeEndPath
Definition: Config.py:474
def Config.Process._placeESPrefer (   self,
  name,
  mod 
)
private

Definition at line 486 of file Config.py.

References Config.Process._place().

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

Definition at line 484 of file Config.py.

References Config.Process._place().

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

Definition at line 488 of file Config.py.

References Config.Process._place().

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

Definition at line 463 of file Config.py.

References Config.Process._place().

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

Definition at line 504 of file Config.py.

Referenced by Config.Process.setLooper_().

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

Definition at line 459 of file Config.py.

References Config.Process._place().

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

Definition at line 467 of file Config.py.

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

468  def _placePath(self,name,mod):
469  self._validateSequence(mod, name)
470  try:
471  self._place(name, mod, self.__paths)
472  except ModuleCloneError as msg:
473  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:670
def _placePath
Definition: Config.py:467
def Config.Process._placeProducer (   self,
  name,
  mod 
)
private

Definition at line 461 of file Config.py.

References Config.Process._place().

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

Definition at line 492 of file Config.py.

References Config.Process._place().

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

Definition at line 481 of file Config.py.

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

482  def _placeSequence(self,name,mod):
483  self._validateSequence(mod, name)
self._place(name, mod, self.__sequences)
def _validateSequence
Definition: Config.py:670
def _placeSequence
Definition: Config.py:481
def Config.Process._placeService (   self,
  typeName,
  mod 
)
private

Definition at line 514 of file Config.py.

References Config.Process._place().

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

Definition at line 496 of file Config.py.

Referenced by Config.Process.setSource_().

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

Definition at line 509 of file Config.py.

510  def _placeSubProcess(self,name,mod):
511  self.__dict__['_Process__subProcess'] = mod
self.__dict__[mod.type_()] = mod
def _placeSubProcess
Definition: Config.py:509
def Config.Process._placeVPSet (   self,
  name,
  mod 
)
private

Definition at line 494 of file Config.py.

References Config.Process._place().

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

Definition at line 886 of file Config.py.

Referenced by Config.Process.prune().

887  def _pruneModules(self, d, scheduledNames):
888  moduleNames = set(d.keys())
889  junk = moduleNames - scheduledNames
890  for name in junk:
891  delattr(self, name)
892  return junk
def _pruneModules
Definition: Config.py:886
def Config.Process._replaceInSequences (   self,
  label,
  new 
)
private

Definition at line 743 of file Config.py.

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

744  def _replaceInSequences(self, label, new):
745  old = getattr(self,label)
746  #TODO - replace by iterator concatenation
747  for sequenceable in self.sequences.itervalues():
748  sequenceable.replace(old,new)
749  for sequenceable in self.paths.itervalues():
750  sequenceable.replace(old,new)
751  for sequenceable in self.endpaths.itervalues():
sequenceable.replace(old,new)
def _replaceInSequences
Definition: Config.py:743
def Config.Process._sequencesInDependencyOrder (   self)
private

Definition at line 678 of file Config.py.

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

Referenced by Config.Process.dumpPython().

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

Definition at line 670 of file Config.py.

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

671  def _validateSequence(self, sequence, label):
672  # See if every module has been inserted into the process
673  try:
674  l = set()
675  nameVisitor = NodeNameVisitor(l)
676  sequence.visit(nameVisitor)
677  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:670
def Config.Process.add_ (   self,
  value 
)
Allows addition of components that do not have to have a label, e.g. Services

Definition at line 415 of file Config.py.

References Config.Process.__isStrict.

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

416  def add_(self,value):
417  """Allows addition of components that do not have to have a label, e.g. Services"""
418  if not isinstance(value,_ConfigureComponent):
419  raise TypeError
420  if not isinstance(value,_Unlabelable):
421  raise TypeError
422  #clone the item
423  #clone the item
424  if self.__isStrict:
425  newValue =value.copy()
426  value.setIsFrozen()
427  else:
428  newValue =value
429  newValue._place('',self)
def Config.Process.addSubProcess (   self,
  mod 
)

Definition at line 512 of file Config.py.

513  def addSubProcess(self,mod):
self.__subProcesses.append(mod)
def addSubProcess
Definition: Config.py:512
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 589 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_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.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::SubProcess.subProcesses_, and edm::EventProcessor.subProcesses_.

Referenced by Types.SecSource.configValue().

590  def dumpConfig(self, options=PrintOptions()):
591  """return a string containing the equivalent process defined using the old configuration language"""
592  config = "process "+self.__name+" = {\n"
593  options.indent()
594  if self.source_():
595  config += options.indentation()+"source = "+self.source_().dumpConfig(options)
596  if self.looper_():
597  config += options.indentation()+"looper = "+self.looper_().dumpConfig(options)
598 
599  config+=self._dumpConfigNamedList(self.subProcesses_(),
600  'subProcess',
601  options)
602  config+=self._dumpConfigNamedList(self.producers_().iteritems(),
603  'module',
604  options)
605  config+=self._dumpConfigNamedList(self.filters_().iteritems(),
606  'module',
607  options)
608  config+=self._dumpConfigNamedList(self.analyzers_().iteritems(),
609  'module',
610  options)
611  config+=self._dumpConfigNamedList(self.outputModules_().iteritems(),
612  'module',
613  options)
614  config+=self._dumpConfigNamedList(self.sequences_().iteritems(),
615  'sequence',
616  options)
617  config+=self._dumpConfigNamedList(self.paths_().iteritems(),
618  'path',
619  options)
620  config+=self._dumpConfigNamedList(self.endpaths_().iteritems(),
621  'endpath',
622  options)
623  config+=self._dumpConfigUnnamedList(self.services_().iteritems(),
624  'service',
625  options)
626  config+=self._dumpConfigNamedList(self.aliases_().iteritems(),
627  'alias',
628  options)
629  config+=self._dumpConfigOptionallyNamedList(
630  self.es_producers_().iteritems(),
631  'es_module',
632  options)
633  config+=self._dumpConfigOptionallyNamedList(
634  self.es_sources_().iteritems(),
635  'es_source',
636  options)
637  config += self._dumpConfigESPrefers(options)
638  for name,item in self.psets.iteritems():
639  config +=options.indentation()+item.configTypeName()+' '+name+' = '+item.configValue(options)
640  for name,item in self.vpsets.iteritems():
641  config +=options.indentation()+'VPSet '+name+' = '+item.configValue(options)
642  if self.schedule:
643  pathNames = [p.label_() for p in self.schedule]
644  config +=options.indentation()+'schedule = {'+','.join(pathNames)+'}\n'
645 
646 # config+=self._dumpConfigNamedList(self.vpsets.iteritems(),
647 # 'VPSet',
648 # options)
649  config += "}\n"
650  options.unindent()
return config
def es_sources_
Definition: Config.py:250
def _dumpConfigUnnamedList
Definition: Config.py:577
def es_producers_
Definition: Config.py:246
def aliases_
Definition: Config.py:258
def _dumpConfigESPrefers
Definition: Config.py:651
def _dumpConfigOptionallyNamedList
Definition: Config.py:582
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:589
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:572
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 715 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_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.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::SubProcess.subProcesses_, edm::EventProcessor.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__().

716  def dumpPython(self, options=PrintOptions()):
717  """return a string containing the equivalent process defined using python"""
718  result = "import FWCore.ParameterSet.Config as cms\n\n"
719  result += "process = cms.Process(\""+self.__name+"\")\n\n"
720  if self.source_():
721  result += "process.source = "+self.source_().dumpPython(options)
722  if self.looper_():
723  result += "process.looper = "+self.looper_().dumpPython()
724  result+=self._dumpPythonList(self.psets, options)
725  result+=self._dumpPythonList(self.vpsets, options)
726  result+=self._dumpPythonSubProcesses(self.subProcesses_(), options)
727  result+=self._dumpPythonList(self.producers_(), options)
728  result+=self._dumpPythonList(self.filters_() , options)
729  result+=self._dumpPythonList(self.analyzers_(), options)
730  result+=self._dumpPythonList(self.outputModules_(), options)
731  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
732  result+=self._dumpPythonList(self.paths_(), options)
733  result+=self._dumpPythonList(self.endpaths_(), options)
734  result+=self._dumpPythonList(self.services_(), options)
735  result+=self._dumpPythonList(self.es_producers_(), options)
736  result+=self._dumpPythonList(self.es_sources_(), options)
737  result+=self._dumpPython(self.es_prefers_(), options)
738  result+=self._dumpPythonList(self.aliases_(), options)
739  if self.schedule:
740  pathNames = ['process.'+p.label_() for p in self.schedule]
741  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
742 
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:715
def es_prefers_
Definition: Config.py:254
def _dumpPythonSubProcesses
Definition: Config.py:656
def _sequencesInDependencyOrder
Definition: Config.py:678
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:661
def subProcesses_
Definition: Config.py:198
def _dumpPython
Definition: Config.py:710
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 521 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().

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

References Config.Process.__init__().

894  def fillProcessDesc(self, processPSet):
895  """Used by the framework to convert python to C++ objects"""
896  class ServiceInjectorAdaptor(object):
897  def __init__(self,ppset,thelist):
898  self.__thelist = thelist
899  self.__processPSet = ppset
900  def addService(self,pset):
901  self.__thelist.append(pset)
902  def newPSet(self):
903  return self.__processPSet.newPSet()
904  #This adaptor is used to 'add' the method 'getTopPSet_'
905  # to the ProcessDesc and PythonParameterSet C++ classes.
906  # This method is needed for the PSet refToPSet_ functionality.
907  class TopLevelPSetAcessorAdaptor(object):
908  def __init__(self,ppset,process):
909  self.__ppset = ppset
910  self.__process = process
911  def __getattr__(self,attr):
912  return getattr(self.__ppset,attr)
913  def getTopPSet_(self,label):
914  return getattr(self.__process,label)
915  def newPSet(self):
916  return TopLevelPSetAcessorAdaptor(self.__ppset.newPSet(),self.__process)
917  def addPSet(self,tracked,name,ppset):
918  return self.__ppset.addPSet(tracked,name,self.__extractPSet(ppset))
919  def addVPSet(self,tracked,name,vpset):
920  return self.__ppset.addVPSet(tracked,name,[self.__extractPSet(x) for x in vpset])
921  def __extractPSet(self,pset):
922  if isinstance(pset,TopLevelPSetAcessorAdaptor):
923  return pset.__ppset
924  return pset
925 
926  self.validate()
927  processPSet.addString(True, "@process_name", self.name_())
928  all_modules = self.producers_().copy()
929  all_modules.update(self.filters_())
930  all_modules.update(self.analyzers_())
931  all_modules.update(self.outputModules_())
932  adaptor = TopLevelPSetAcessorAdaptor(processPSet,self)
933  self._insertInto(adaptor, self.psets_())
934  self._insertInto(adaptor, self.vpsets_())
935  self._insertManyInto(adaptor, "@all_modules", all_modules, True)
936  self._insertOneInto(adaptor, "@all_sources", self.source_(), True)
937  self._insertOneInto(adaptor, "@all_loopers", self.looper_(), True)
938  self._insertSubProcessesInto(adaptor, "@all_subprocesses", self.subProcesses_(), False)
939  self._insertManyInto(adaptor, "@all_esmodules", self.es_producers_(), True)
940  self._insertManyInto(adaptor, "@all_essources", self.es_sources_(), True)
941  self._insertManyInto(adaptor, "@all_esprefers", self.es_prefers_(), True)
942  self._insertManyInto(adaptor, "@all_aliases", self.aliases_(), True)
943  self._insertPaths(adaptor)
944  #handle services differently
945  services = []
946  for n in self.services_():
947  getattr(self,n).insertInto(ServiceInjectorAdaptor(adaptor,services))
948  adaptor.addVPSet(False,"services",services)
949  return processPSet
def es_sources_
Definition: Config.py:250
def _insertManyInto
Definition: Config.py:768
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:790
def _insertSubProcessesInto
Definition: Config.py:777
def outputModules_
Definition: Config.py:206
def producers_
Definition: Config.py:182
def fillProcessDesc
Definition: Config.py:893
def __init__
Definition: Config.py:101
def _insertInto
Definition: Config.py:758
def analyzers_
Definition: Config.py:202
def services_
Definition: Config.py:242
def validate
Definition: Config.py:950
def _insertOneInto
Definition: Config.py:761
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 752 of file Config.py.

References Config.Process._replaceInSequences().

753  def globalReplace(self,label,new):
754  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths"""
755  if not hasattr(self,label):
756  raise LookupError("process has no item of label "+label)
757  self._replaceInSequences(label, new)
setattr(self,label,new)
def _replaceInSequences
Definition: Config.py:743
def globalReplace
Definition: Config.py:752
def Config.Process.isUsingModifier (   self,
  mod 
)
returns True if the Modifier is in used by this Process

Definition at line 271 of file Config.py.

272  def isUsingModifier(self,mod):
273  """returns True if the Modifier is in used by this Process"""
274  if mod.isChosen():
275  for m in self.__modifiers:
276  if m._isOrContains(mod):
277  return True
278  return False
def isUsingModifier
Definition: Config.py:271
def Config.Process.load (   self,
  moduleName 
)

Definition at line 517 of file Config.py.

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

518  def load(self, moduleName):
519  moduleName = moduleName.replace("/",".")
520  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_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.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 957 of file Config.py.

958  def prefer(self, esmodule,*args,**kargs):
959  """Prefer this ES source or producer. The argument can
960  either be an object label, e.g.,
961  process.prefer(process.juicerProducer) (not supported yet)
962  or a name of an ESSource or ESProducer
963  process.prefer("juicer")
964  or a type of unnamed ESSource or ESProducer
965  process.prefer("JuicerProducer")
966  In addition, you can pass as a labelled arguments the name of the Record you wish to
967  prefer where the type passed is a cms.vstring and that vstring can contain the
968  name of the C++ types in the Record that are being preferred, e.g.,
969  #prefer all data in record 'OrangeRecord' from 'juicer'
970  process.prefer("juicer", OrangeRecord=cms.vstring())
971  or
972  #prefer only "Orange" data in "OrangeRecord" from "juicer"
973  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
974  or
975  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
976  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
977  """
978  # see if this refers to a named ESProducer
979  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
980  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
981  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
982  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
983  pass
984  else:
985  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
def es_sources_
Definition: Config.py:250
def _findPreferred
Definition: Config.py:986
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 831 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().

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

951  def validate(self):
952  # check if there's some input
953  # Breaks too many unit tests for now
954  #if self.source_() == None and self.looper_() == None:
955  # raise RuntimeError("No input source was found for this process")
956  pass
def validate
Definition: Config.py:950
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 908 of file Config.py.

Config.Process.__process
private

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

Config.Process.__thelist
private

Definition at line 897 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.build_source(), and 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().