|
def | __delattr__ (self, name) |
|
def | __init__ (self, name, Mods) |
|
def | __setattr__ (self, name, value) |
|
def | __setstate__ (self, pkldict) |
|
def | add_ (self, value) |
|
def | addSubProcess (self, mod) |
|
def | aliases_ (self) |
|
def | analyzerNames (self) |
|
def | analyzers_ (self) |
|
def | dumpConfig (self, options=PrintOptions()) |
|
def | dumpPython (self, options=PrintOptions()) |
|
def | endpaths_ (self) |
|
def | es_prefers_ (self) |
|
def | es_producers_ (self) |
|
def | es_sources_ (self) |
|
def | extend (self, other, items=()) |
|
def | fillProcessDesc (self, processPSet) |
|
def | filterNames (self) |
|
def | filters_ (self) |
|
def | globalReplace (self, label, new) |
|
def | isUsingModifier (self, mod) |
|
def | load (self, moduleName) |
|
def | looper_ (self) |
|
def | name_ (self) |
|
def | outputModules_ (self) |
|
def | pathNames (self) |
|
def | paths_ (self) |
|
def | prefer (self, esmodule, args, kargs) |
|
def | producerNames (self) |
|
def | producers_ (self) |
|
def | prune (self, verbose=False, keepUnresolvedSequencePlaceholders=False) |
|
def | psets_ (self) |
|
def | resolve (self, keepUnresolvedSequencePlaceholders=False) |
|
def | schedule_ (self) |
|
def | sequences_ (self) |
|
def | services_ (self) |
|
def | setLooper_ (self, lpr) |
|
def | setName_ (self, name) |
|
def | setPartialSchedule_ (self, sch, label) |
|
def | setSchedule_ (self, sch) |
|
def | setSource_ (self, src) |
|
def | setStrict (self, value) |
|
def | source_ (self) |
|
def | subProcesses_ (self) |
|
def | tasks_ (self) |
|
def | validate (self) |
|
def | vpsets_ (self) |
|
|
| 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') |
|
| tasks = property(tasks_,doc="dictionary containing the tasks for the process") |
|
| vpsets = property(vpsets_,doc="dictionary containing the PSets for the process") |
|
|
def | __findFirstUsingModule (self, seqsOrTasks, mod) |
|
def | __setObjectLabel (self, object, newLabel) |
|
def | _delattrFromSetattr (self, name) |
|
def | _delHelper (self, name) |
|
def | _dumpConfigESPrefers (self, options) |
|
def | _dumpConfigNamedList (self, items, typeName, options) |
|
def | _dumpConfigOptionallyNamedList (self, items, typeName, options) |
|
def | _dumpConfigUnnamedList (self, items, typeName, options) |
|
def | _dumpPython (self, d, options) |
|
def | _dumpPythonList (self, d, options) |
|
def | _dumpPythonSubProcesses (self, l, options) |
|
def | _findPreferred (self, esname, d, args, kargs) |
|
def | _insertInto (self, parameterSet, itemDict) |
|
def | _insertManyInto (self, parameterSet, label, itemDict, tracked) |
|
def | _insertOneInto (self, parameterSet, label, item, tracked) |
|
def | _insertPaths (self, processPSet, nodeVisitor) |
|
def | _insertSubProcessesInto (self, parameterSet, label, itemList, tracked) |
|
def | _itemsInDependencyOrder (self, processDictionaryOfItems) |
|
def | _okToPlace (self, name, mod, d) |
|
def | _place (self, name, mod, d) |
|
def | _placeAlias (self, name, mod) |
|
def | _placeAnalyzer (self, name, mod) |
|
def | _placeEndPath (self, name, mod) |
|
def | _placeESPrefer (self, name, mod) |
|
def | _placeESProducer (self, name, mod) |
|
def | _placeESSource (self, name, mod) |
|
def | _placeFilter (self, name, mod) |
|
def | _placeLooper (self, name, mod) |
|
def | _placeOutputModule (self, name, mod) |
|
def | _placePath (self, name, mod) |
|
def | _placeProducer (self, name, mod) |
|
def | _placePSet (self, name, mod) |
|
def | _placeSequence (self, name, mod) |
|
def | _placeService (self, typeName, mod) |
|
def | _placeSource (self, name, mod) |
|
def | _placeSubProcess (self, name, mod) |
|
def | _placeTask (self, name, task) |
|
def | _placeVPSet (self, name, mod) |
|
def | _pruneModules (self, d, scheduledNames) |
|
def | _replaceInSchedule (self, label, new) |
|
def | _replaceInSequences (self, label, new) |
|
def | _replaceInTasks (self, label, new) |
|
def | _validateSequence (self, sequence, label) |
|
def | _validateTask (self, task, label) |
|
Root class for a CMS configuration process
Definition at line 98 of file Config.py.
def Config.Process.__setattr__ |
( |
|
self, |
|
|
|
name, |
|
|
|
value |
|
) |
| |
Definition at line 309 of file Config.py.
References Config.Process.__findFirstUsingModule(), Config.Process.__isStrict, Config.Process.__setObjectLabel(), Config.Process._delattrFromSetattr(), Config.Process._okToPlace(), Config.Process._replaceInSchedule(), Config.Process._replaceInSequences(), Config.Process._replaceInTasks(), Config.Process.add_(), Config.Process.endpaths, hcalTTPDigis_cfi.id, Config.Process.paths, Config.Process.sequences, harvestTrackValidationPlots.str, and Config.Process.tasks.
Referenced by Config.Process._findPreferred(), Config.Process.extend(), and GenObject.GenObject.setValue().
311 if not name.replace(
'_',
'').isalnum():
312 raise ValueError(
'The label '+name+
' contains forbiden characters')
315 if name.startswith(
'_Process__'):
316 self.__dict__[name]=value
318 if not isinstance(value,_ConfigureComponent):
319 raise TypeError(
"can only assign labels to an object that inherits from '_ConfigureComponent'\n" 320 +
"an instance of "+
str(type(value))+
" will not work - requested label is "+name)
321 if not isinstance(value,_Labelable)
and not isinstance(value,Source)
and not isinstance(value,Looper)
and not isinstance(value,Schedule):
322 if name == value.type_():
327 raise TypeError(
"an instance of "+
str(type(value))+
" can not be assigned the label '"+name+
"'.\n"+
328 "Please either use the label '"+value.type_()+
" or use the 'add_' method instead.")
331 newValue =value.copy()
333 newValue._filename = value._filename
339 if not self.
_okToPlace(name, value, self.__dict__):
340 newFile=
'top level config' 341 if hasattr(value,
'_filename'):
342 newFile = value._filename
343 oldFile=
'top level config' 344 oldValue = getattr(self,name)
345 if hasattr(oldValue,
'_filename'):
346 oldFile = oldValue._filename
347 msg =
"Trying to override definition of process."+name
348 msg +=
"\n new object defined in: "+newFile
349 msg +=
"\n existing object defined in: "+oldFile
350 raise ValueError(msg)
352 if hasattr(self,name)
and not (getattr(self,name)==newValue):
356 if newValue._isTaskComponent():
357 if not self.__InExtendCall:
361 if not isinstance(newValue, Task):
363 newFile=
'top level config' 364 if hasattr(value,
'_filename'):
365 newFile = value._filename
366 oldFile=
'top level config' 367 oldValue = getattr(self,name)
368 if hasattr(oldValue,
'_filename'):
369 oldFile = oldValue._filename
370 msg1 =
"Trying to override definition of "+name+
" while it is used by the task " 371 msg2 =
"\n new object defined in: "+newFile
372 msg2 +=
"\n existing object defined in: "+oldFile
375 raise ValueError(msg1+s.label_()+msg2)
377 if isinstance(newValue, _Sequenceable)
or newValue._isTaskComponent():
378 if not self.__InExtendCall:
382 newFile=
'top level config' 383 if hasattr(value,
'_filename'):
384 newFile = value._filename
385 oldFile=
'top level config' 386 oldValue = getattr(self,name)
387 if hasattr(oldValue,
'_filename'):
388 oldFile = oldValue._filename
389 msg1 =
"Trying to override definition of "+name+
" while it is used by the " 390 msg2 =
"\n new object defined in: "+newFile
391 msg2 +=
"\n existing object defined in: "+oldFile
394 raise ValueError(msg1+
"sequence "+s.label_()+msg2)
397 raise ValueError(msg1+
"path "+s.label_()+msg2)
400 raise ValueError(msg1+
"endpath "+s.label_()+msg2)
402 self.__dict__[name]=newValue
403 if isinstance(newValue,_Labelable):
405 self._cloneToObjectDict[
id(value)] = newValue
406 self._cloneToObjectDict[
id(newValue)] = newValue
408 newValue._place(name,self)
def __findFirstUsingModule(self, seqsOrTasks, mod)
def _okToPlace(self, name, mod, d)
def _replaceInTasks(self, label, new)
def __setattr__(self, name, value)
def __setObjectLabel(self, object, newLabel)
def _replaceInSequences(self, label, new)
def _delattrFromSetattr(self, name)
def _replaceInSchedule(self, label, new)
def Config.Process._insertPaths |
( |
|
self, |
|
|
|
processPSet, |
|
|
|
nodeVisitor |
|
) |
| |
|
private |
Definition at line 900 of file Config.py.
References Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.endpaths_, edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, GraphPath< N, E >.paths_, edm::PathsAndConsumesOfModules.paths_, pat::TriggerEvent.paths_, ProcessCallGraph::ProcessType.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::EventProcessor.schedule_, and edm::SubProcess.schedule_.
906 for name
in self.
paths_():
907 scheduledPaths.append(name)
908 triggerPaths.append(name)
910 scheduledPaths.append(name)
911 endpaths.append(name)
914 pathname = path.label_()
915 scheduledPaths.append(pathname)
917 endpaths.append(pathname)
919 triggerPaths.append(pathname)
922 task.visit(scheduleTaskValidator)
923 task.visit(nodeVisitor)
924 processPSet.addVString(
True,
"@end_paths", endpaths)
925 processPSet.addVString(
True,
"@paths", scheduledPaths)
927 p = processPSet.newPSet()
928 p.addVString(
True,
"@trigger_paths", triggerPaths)
929 processPSet.addPSet(
True,
"@trigger_paths", p)
936 endpathCompositeVisitor =
CompositeVisitor(endpathValidator, nodeVisitor, lister)
937 for triggername
in triggerPaths:
938 iPath = self.
paths_()[triggername]
939 iPath.resolve(self.__dict__)
940 pathValidator.setLabel(triggername)
942 iPath.visit(pathCompositeVisitor)
943 iPath.insertInto(processPSet, triggername, decoratedList)
944 for endpathname
in endpaths:
946 iEndPath.resolve(self.__dict__)
947 endpathValidator.setLabel(endpathname)
949 iEndPath.visit(endpathCompositeVisitor)
950 iEndPath.insertInto(processPSet, endpathname, decoratedList)
951 processPSet.addVString(
False,
"@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths(self, processPSet, nodeVisitor)
return a string containing the equivalent process defined using the old configuration language
Definition at line 659 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_(), FastTimerService::PlotsPerProcess.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_, ProcessCallGraph::ProcessType.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.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_(), ProcessCallGraph.source_, edm::InputSource::EventSourceSentry.source_, Config.Process.subProcesses_(), edm::EventProcessor.subProcesses_, and edm::SubProcess.subProcesses_.
Referenced by Types.SecSource.configValue().
660 """return a string containing the equivalent process defined using the old configuration language""" 661 config =
"process "+self.__name+
" = {\n" 707 for name,item
in self.psets.iteritems():
708 config +=options.indentation()+item.configTypeName()+
' '+name+
' = '+item.configValue(options)
709 for name,item
in self.vpsets.iteritems():
710 config +=options.indentation()+
'VPSet '+name+
' = '+item.configValue(options)
712 pathNames = [p.label_()
for p
in self.
schedule]
713 config +=options.indentation()+
'schedule = {'+
','.
join(pathNames)+
'}\n' def _dumpConfigOptionallyNamedList(self, items, typeName, options)
def _dumpConfigUnnamedList(self, items, typeName, options)
def _dumpConfigESPrefers(self, options)
static std::string join(char **cmd)
def _dumpConfigNamedList(self, items, typeName, options)
def dumpConfig(self, options=PrintOptions())
return a string containing the equivalent process defined using python
Definition at line 817 of file Config.py.
References dataset.Dataset.__name, Config.Process._dumpPython(), Config.Process._dumpPythonList(), Config.Process._dumpPythonSubProcesses(), Config.Process._itemsInDependencyOrder(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.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_, 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_, ProcessCallGraph::ProcessType.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), CmsswTask.CmsswTask.psets, Config.Process.psets, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::EventProcessor.schedule_, edm::SubProcess.schedule_, Config.Process.sequences, edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, Config.Process.source_(), ProcessCallGraph.source_, edm::InputSource::EventSourceSentry.source_, Config.Process.subProcesses_(), edm::EventProcessor.subProcesses_, edm::SubProcess.subProcesses_, Config.Process.tasks, and Config.Process.vpsets.
Referenced by Mixins._Parameterizable.__addParameter(), Mixins._ParameterTypeBase.__repr__(), Mixins._Parameterizable.__repr__(), Mixins._ValidatingParameterListBase.__repr__(), Types.VPSet.__repr__(), Mixins._Parameterizable.__setattr__(), and SequenceTypes.Schedule.__str__().
818 """return a string containing the equivalent process defined using python""" 819 result =
"import FWCore.ParameterSet.Config as cms\n\n" 820 result +=
"process = cms.Process(\""+self.__name+
"\")\n\n" 842 result +=
'process.schedule = ' + self.schedule.dumpPython(options)
def _itemsInDependencyOrder(self, processDictionaryOfItems)
def _dumpPythonSubProcesses(self, l, options)
def dumpPython(self, options=PrintOptions())
def _dumpPythonList(self, d, options)
def _dumpPython(self, d, options)
def Config.Process.extend |
( |
|
self, |
|
|
|
other, |
|
|
|
items = () |
|
) |
| |
Look in other and find types that we can use
Definition at line 584 of file Config.py.
References psClasses.BuildTreeNode.__setattr__(), Config.Process.__setattr__(), Config.Process.__setObjectLabel(), Config.Process.add_(), cmsPerfStripChart.dict, dir, svgfig.SVG.extend(), Config.Process.extend(), and hcalTTPDigis_cfi.id.
Referenced by MatrixUtil.WF.__init__(), Config.Process.extend(), Config.Process.load(), and Mixins._ValidatingParameterListBase.setValue().
585 """Look in other and find types that we can use""" 587 self.__dict__[
'_Process__InExtendCall'] =
True 590 tasksToAttach =
dict()
592 for name
in dir(other):
594 if name.startswith(
'_'):
596 item = getattr(other,name)
597 if name ==
"source" or name ==
"looper":
601 elif isinstance(item,_ModuleSequenceType):
603 elif isinstance(item,Task):
604 tasksToAttach[name] = item
605 elif isinstance(item,_Labelable):
607 if not item.hasLabel_() :
609 elif isinstance(item,Schedule):
611 elif isinstance(item,_Unlabelable):
613 elif isinstance(item,ProcessModifier):
615 elif isinstance(item,ProcessFragment):
619 for name
in seqs.iterkeys():
623 if id(seq)
not in self._cloneToObjectDict:
626 newSeq = self._cloneToObjectDict[
id(seq)]
627 self.__dict__[name]=newSeq
630 newSeq._place(name,self)
632 for name
in tasksToAttach.iterkeys():
633 task = tasksToAttach[name]
640 self.__dict__[
'_Process__InExtendCall'] =
False def extend(self, other, items=())
def __setattr__(self, name, value)
def __setObjectLabel(self, object, newLabel)
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 1101 of file Config.py.
1102 """Prefer this ES source or producer. The argument can 1103 either be an object label, e.g., 1104 process.prefer(process.juicerProducer) (not supported yet) 1105 or a name of an ESSource or ESProducer 1106 process.prefer("juicer") 1107 or a type of unnamed ESSource or ESProducer 1108 process.prefer("JuicerProducer") 1109 In addition, you can pass as a labelled arguments the name of the Record you wish to 1110 prefer where the type passed is a cms.vstring and that vstring can contain the 1111 name of the C++ types in the Record that are being preferred, e.g., 1112 #prefer all data in record 'OrangeRecord' from 'juicer' 1113 process.prefer("juicer", OrangeRecord=cms.vstring()) 1115 #prefer only "Orange" data in "OrangeRecord" from "juicer" 1116 process.prefer("juicer", OrangeRecord=cms.vstring("Orange")) 1118 #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer" 1119 ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp")) 1122 if isinstance(esmodule, ESSource)
or isinstance(esmodule, ESProducer):
1123 raise RuntimeError(
"Syntax of process.prefer(process.esmodule) not supported yet")
1128 raise RuntimeError(
"Cannot resolve prefer for "+repr(esmodule))
def _findPreferred(self, esname, d, args, kargs)
def prefer(self, esmodule, args, kargs)
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 959 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(), EnableFloatingPointExceptions_cfi.moduleNames, Config.Process.paths, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Json::Path.resolve(), Config.Process.resolve(), 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().
959 def prune(self,verbose=False,keepUnresolvedSequencePlaceholders=False):
960 """ Remove clutter from the process that we think is unnecessary: 961 tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths 962 not in the schedule will also be removed, along with an modules and sequences used only by 963 those removed Paths and EndPaths.""" 972 self.
resolve(keepUnresolvedSequencePlaceholders)
974 unneededPaths = set()
978 schedNames = set(( x.label_()
for x
in self.
schedule_()))
979 names = set(self.
paths)
981 unneededPaths = names - schedNames
982 for n
in unneededPaths:
985 pths =
list(self.paths.itervalues())
986 pths.extend(self.endpaths.itervalues())
988 usedModules=set(temp.moduleNames())
995 for p
in self.paths.itervalues():
997 for p
in self.endpaths.itervalues():
999 keepSeqSet = set(( s
for s
in seqs
if s.hasLabel_()))
1000 availableSeqs = set(self.sequences.itervalues())
1001 unneededSeqs = availableSeqs-keepSeqSet
1002 unneededSeqLabels = []
1003 for s
in unneededSeqs:
1004 unneededSeqLabels.append(s.label_())
1005 delattr(self,s.label_())
1007 print "prune removed the following:" 1008 print " modules:"+
",".
join(unneededModules)
1009 print " sequences:"+
",".
join(unneededSeqLabels)
1010 print " paths/endpaths:"+
",".
join(unneededPaths)
def _pruneModules(self, d, scheduledNames)
def resolve(self, keepUnresolvedSequencePlaceholders=False)
static std::string join(char **cmd)
def prune(self, verbose=False, keepUnresolvedSequencePlaceholders=False)
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