|
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 99 of file Config.py.
def Config.Process.__setattr__ |
( |
|
self, |
|
|
|
name, |
|
|
|
value |
|
) |
| |
Definition at line 310 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, triggerObjects_cff.id, Config.Process.paths, Config.Process.sequences, str, and Config.Process.tasks.
Referenced by Config.Process._findPreferred(), Config.Process.extend(), and GenObject.GenObject.setValue().
312 if not name.replace(
'_',
'').isalnum():
313 raise ValueError(
'The label '+name+
' contains forbiden characters')
316 if name.startswith(
'_Process__'):
317 self.__dict__[name]=value
319 if not isinstance(value,_ConfigureComponent):
320 raise TypeError(
"can only assign labels to an object that inherits from '_ConfigureComponent'\n" 321 +
"an instance of "+
str(type(value))+
" will not work - requested label is "+name)
322 if not isinstance(value,_Labelable)
and not isinstance(value,Source)
and not isinstance(value,Looper)
and not isinstance(value,Schedule):
323 if name == value.type_():
328 raise TypeError(
"an instance of "+
str(type(value))+
" can not be assigned the label '"+name+
"'.\n"+
329 "Please either use the label '"+value.type_()+
" or use the 'add_' method instead.")
332 newValue =value.copy()
334 newValue._filename = value._filename
340 if not self.
_okToPlace(name, value, self.__dict__):
341 newFile=
'top level config' 342 if hasattr(value,
'_filename'):
343 newFile = value._filename
344 oldFile=
'top level config' 345 oldValue = getattr(self,name)
346 if hasattr(oldValue,
'_filename'):
347 oldFile = oldValue._filename
348 msg =
"Trying to override definition of process."+name
349 msg +=
"\n new object defined in: "+newFile
350 msg +=
"\n existing object defined in: "+oldFile
351 raise ValueError(msg)
353 if hasattr(self,name)
and not (getattr(self,name)==newValue):
357 if newValue._isTaskComponent():
358 if not self.__InExtendCall:
362 if not isinstance(newValue, Task):
364 newFile=
'top level config' 365 if hasattr(value,
'_filename'):
366 newFile = value._filename
367 oldFile=
'top level config' 368 oldValue = getattr(self,name)
369 if hasattr(oldValue,
'_filename'):
370 oldFile = oldValue._filename
371 msg1 =
"Trying to override definition of "+name+
" while it is used by the task " 372 msg2 =
"\n new object defined in: "+newFile
373 msg2 +=
"\n existing object defined in: "+oldFile
376 raise ValueError(msg1+s.label_()+msg2)
378 if isinstance(newValue, _Sequenceable)
or newValue._isTaskComponent():
379 if not self.__InExtendCall:
383 newFile=
'top level config' 384 if hasattr(value,
'_filename'):
385 newFile = value._filename
386 oldFile=
'top level config' 387 oldValue = getattr(self,name)
388 if hasattr(oldValue,
'_filename'):
389 oldFile = oldValue._filename
390 msg1 =
"Trying to override definition of "+name+
" while it is used by the " 391 msg2 =
"\n new object defined in: "+newFile
392 msg2 +=
"\n existing object defined in: "+oldFile
395 raise ValueError(msg1+
"sequence "+s.label_()+msg2)
398 raise ValueError(msg1+
"path "+s.label_()+msg2)
401 raise ValueError(msg1+
"endpath "+s.label_()+msg2)
403 self.__dict__[name]=newValue
404 if isinstance(newValue,_Labelable):
406 self._cloneToObjectDict[
id(value)] = newValue
407 self._cloneToObjectDict[
id(newValue)] = newValue
409 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 901 of file Config.py.
References Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.endpaths_, edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, and edm::EventProcessor.schedule_.
907 for name
in self.
paths_():
908 scheduledPaths.append(name)
909 triggerPaths.append(name)
911 scheduledPaths.append(name)
912 endpaths.append(name)
915 pathname = path.label_()
916 scheduledPaths.append(pathname)
918 endpaths.append(pathname)
920 triggerPaths.append(pathname)
922 task.resolve(self.__dict__)
924 task.visit(scheduleTaskValidator)
925 task.visit(nodeVisitor)
926 processPSet.addVString(
True,
"@end_paths", endpaths)
927 processPSet.addVString(
True,
"@paths", scheduledPaths)
929 p = processPSet.newPSet()
930 p.addVString(
True,
"@trigger_paths", triggerPaths)
931 processPSet.addPSet(
True,
"@trigger_paths", p)
938 endpathCompositeVisitor =
CompositeVisitor(endpathValidator, nodeVisitor, lister)
939 for triggername
in triggerPaths:
940 iPath = self.
paths_()[triggername]
941 iPath.resolve(self.__dict__)
942 pathValidator.setLabel(triggername)
944 iPath.visit(pathCompositeVisitor)
945 iPath.insertInto(processPSet, triggername, decoratedList)
946 for endpathname
in endpaths:
948 iEndPath.resolve(self.__dict__)
949 endpathValidator.setLabel(endpathname)
951 iEndPath.visit(endpathCompositeVisitor)
952 iEndPath.insertInto(processPSet, endpathname, decoratedList)
953 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 660 of file Config.py.
References dataset.Dataset.__name, genericValidation.ValidationWithPlotsSummaryBase.SummaryItem.__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_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.psets, Config.Process.schedule, Config.Process.sequences_(), edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, ProcessCallGraph.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, edm::InputSource::LumiSourceSentry.source_, edm::InputSource::RunSourceSentry.source_, Config.Process.subProcesses_(), edm::SubProcess.subProcesses_, edm::EventProcessor.subProcesses_, and Config.Process.vpsets.
Referenced by Types.SecSource.configValue().
661 """return a string containing the equivalent process defined using the old configuration language""" 662 config =
"process "+self.__name+
" = {\n" 708 for name,item
in six.iteritems(self.
psets):
709 config +=options.indentation()+item.configTypeName()+
' '+name+
' = '+item.configValue(options)
710 for name,item
in six.iteritems(self.
vpsets):
711 config +=options.indentation()+
'VPSet '+name+
' = '+item.configValue(options)
713 pathNames = [p.label_()
for p
in self.
schedule]
714 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 818 of file Config.py.
References dataset.Dataset.__name, genericValidation.ValidationWithPlotsSummaryBase.SummaryItem.__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_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.psets, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, edm::EventProcessor.schedule_, Config.Process.sequences, edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, ProcessCallGraph.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, edm::InputSource::LumiSourceSentry.source_, edm::InputSource::RunSourceSentry.source_, Config.Process.subProcesses_(), edm::SubProcess.subProcesses_, edm::EventProcessor.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__().
819 """return a string containing the equivalent process defined using python""" 820 result =
"import FWCore.ParameterSet.Config as cms\n\n" 821 result +=
"process = cms.Process(\""+self.__name+
"\")\n\n" 843 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 585 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 triggerObjects_cff.id.
Referenced by MatrixUtil.WF.__init__(), Config.Process.extend(), Config.Process.load(), and Mixins._ValidatingParameterListBase.setValue().
586 """Look in other and find types that we can use""" 588 self.__dict__[
'_Process__InExtendCall'] =
True 591 tasksToAttach =
dict()
593 for name
in dir(other):
595 if name.startswith(
'_'):
597 item = getattr(other,name)
598 if name ==
"source" or name ==
"looper":
602 elif isinstance(item,_ModuleSequenceType):
604 elif isinstance(item,Task):
605 tasksToAttach[name] = item
606 elif isinstance(item,_Labelable):
608 if not item.hasLabel_() :
610 elif isinstance(item,Schedule):
612 elif isinstance(item,_Unlabelable):
614 elif isinstance(item,ProcessModifier):
616 elif isinstance(item,ProcessFragment):
620 for name
in seqs.iterkeys():
624 if id(seq)
not in self._cloneToObjectDict:
627 newSeq = self._cloneToObjectDict[
id(seq)]
628 self.__dict__[name]=newSeq
631 newSeq._place(name,self)
633 for name
in tasksToAttach.iterkeys():
634 task = tasksToAttach[name]
641 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 1106 of file Config.py.
1107 """Prefer this ES source or producer. The argument can 1108 either be an object label, e.g., 1109 process.prefer(process.juicerProducer) (not supported yet) 1110 or a name of an ESSource or ESProducer 1111 process.prefer("juicer") 1112 or a type of unnamed ESSource or ESProducer 1113 process.prefer("JuicerProducer") 1114 In addition, you can pass as a labelled arguments the name of the Record you wish to 1115 prefer where the type passed is a cms.vstring and that vstring can contain the 1116 name of the C++ types in the Record that are being preferred, e.g., 1117 #prefer all data in record 'OrangeRecord' from 'juicer' 1118 process.prefer("juicer", OrangeRecord=cms.vstring()) 1120 #prefer only "Orange" data in "OrangeRecord" from "juicer" 1121 process.prefer("juicer", OrangeRecord=cms.vstring("Orange")) 1123 #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer" 1124 ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp")) 1127 if isinstance(esmodule, ESSource)
or isinstance(esmodule, ESProducer):
1128 raise RuntimeError(
"Syntax of process.prefer(process.esmodule) not supported yet")
1133 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 964 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_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), list(), 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::test::TestProcessor.schedule_, edm::SubProcess.schedule_, edm::EventProcessor.schedule_, Config.Process.sequences, and Config.Process.vpsets_().
Referenced by dirstructure.Directory.prune().
964 def prune(self,verbose=False,keepUnresolvedSequencePlaceholders=False):
965 """ Remove clutter from the process that we think is unnecessary: 966 tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths 967 not in the schedule will also be removed, along with an modules and sequences used only by 968 those removed Paths and EndPaths.""" 977 self.
resolve(keepUnresolvedSequencePlaceholders)
979 unneededPaths = set()
981 usedModules=set(self.
schedule_().moduleNames())
983 schedNames = set(( x.label_()
for x
in self.
schedule_()))
984 names = set(self.
paths)
986 unneededPaths = names - schedNames
987 for n
in unneededPaths:
991 pths.extend(six.itervalues(self.
endpaths))
993 usedModules=set(temp.moduleNames())
1000 for p
in six.itervalues(self.
paths):
1002 for p
in six.itervalues(self.
endpaths):
1004 keepSeqSet = set(( s
for s
in seqs
if s.hasLabel_()))
1005 availableSeqs = set(six.itervalues(self.
sequences))
1006 unneededSeqs = availableSeqs-keepSeqSet
1007 unneededSeqLabels = []
1008 for s
in unneededSeqs:
1009 unneededSeqLabels.append(s.label_())
1010 delattr(self,s.label_())
1012 print "prune removed the following:" 1013 print " modules:"+
",".
join(unneededModules)
1014 print " sequences:"+
",".
join(unneededSeqLabels)
1015 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