CMS 3D CMS Logo

Classes | Functions
earlyDeleteSettings_cff Namespace Reference

Classes

class  TestHasInputTagModuleLabel
 

Functions

def _hasInputTagModuleLabel (process, pset, psetModLabel, moduleLabels, result)
 
def customiseEarlyDelete (process)
 

Function Documentation

◆ _hasInputTagModuleLabel()

def earlyDeleteSettings_cff._hasInputTagModuleLabel (   process,
  pset,
  psetModLabel,
  moduleLabels,
  result 
)
private

Definition at line 11 of file earlyDeleteSettings_cff.py.

11 def _hasInputTagModuleLabel(process, pset, psetModLabel, moduleLabels, result):
12  for name in pset.parameterNames_():
13  value = getattr(pset,name)
14  if isinstance(value, cms.PSet):
15  _hasInputTagModuleLabel(process, value, psetModLabel, moduleLabels, result)
16  elif isinstance(value, cms.VPSet):
17  for ps in value:
18  _hasInputTagModuleLabel(process, ps, psetModLabel, moduleLabels, result)
19  elif isinstance(value, cms.VInputTag):
20  for t in value:
21  t2 = t
22  if not isinstance(t, cms.InputTag):
23  t2 = cms.InputTag(t2)
24  for i,moduleLabel in enumerate(moduleLabels):
25  if result[i]: continue #no need
26  if t2.getModuleLabel() == moduleLabel:
27  result[i]=True
28  elif isinstance(value, cms.InputTag):
29  for i,moduleLabel in enumerate(moduleLabels):
30  if result[i]: continue #no need
31  if value.getModuleLabel() == moduleLabel:
32  result[i]=True
33  elif isinstance(value, cms.string) and name == "refToPSet_":
34  try:
35  ps = getattr(process, value.value())
36  except AttributeError:
37  raise RuntimeError("Module %s has a 'PSet(refToPSet_ = cms.string(\"%s\"))', but the referenced-to PSet does not exist in the Process." % (psetModLabel, value.value()))
38  _hasInputTagModuleLabel(process, ps, psetModLabel, moduleLabels, result)
39 
40 

Referenced by customiseEarlyDelete().

◆ customiseEarlyDelete()

def earlyDeleteSettings_cff.customiseEarlyDelete (   process)

Definition at line 41 of file earlyDeleteSettings_cff.py.

41 def customiseEarlyDelete(process):
42  # Mapping label -> [branches]
43  # for the producers whose products are to be deleted early
44  products = collections.defaultdict(list)
45 
46  products = customiseEarlyDeleteForSeeding(process, products)
47 
48  products = customiseEarlyDeleteForCandIsoDeposits(process, products)
49 
50  # Set process.options.canDeleteEarly
51  if not hasattr(process.options, "canDeleteEarly"):
52  process.options.canDeleteEarly = cms.untracked.vstring()
53 
54  branchSet = set()
55  for branches in six.itervalues(products):
56  for branch in branches:
57  branchSet.add(branch)
58  process.options.canDeleteEarly.extend(list(branchSet))
59 
60  # LogErrorHarvester should not wait for deleted items
61  for prod in six.itervalues(process.producers_()):
62  if prod.type_() == "LogErrorHarvester":
63  if not hasattr(prod,'excludeModules'):
64  prod.excludeModules = cms.untracked.vstring()
65  t = prod.excludeModules.value()
66  t.extend([b.split('_')[1] for b in branchSet])
67  prod.excludeModules = t
68 
69  # Find the consumers
70  producers=[]
71  branchesList=[]
72  for producer, branches in six.iteritems(products):
73  producers.append(producer)
74  branchesList.append(branches)
75 
76  for moduleType in [process.producers_(), process.filters_(), process.analyzers_()]:
77  for name, module in six.iteritems(moduleType):
78  result=[]
79  for producer in producers:
80  result.append(False)
81 
82  _hasInputTagModuleLabel(process, module, name, producers, result)
83  for i in range(len(result)):
84  if result[i]:
85  #if it exists it might be optional or empty, both evaluate to False
86  if hasattr(module, "mightGet") and module.mightGet:
87  module.mightGet.extend(branchesList[i])
88  else:
89  module.mightGet = cms.untracked.vstring(branchesList[i])
90  return process
91 
92 

References _hasInputTagModuleLabel(), and FastTimerService_cff.range.

Referenced by ConfigBuilder.ConfigBuilder.prepare().

FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
earlyDeleteSettings_cff.customiseEarlyDelete
def customiseEarlyDelete(process)
Definition: earlyDeleteSettings_cff.py:41
customiseEarlyDeleteForSeeding
Definition: customiseEarlyDeleteForSeeding.py:1
customiseEarlyDeleteForCandIsoDeposits
Definition: customiseEarlyDeleteForCandIsoDeposits.py:1
earlyDeleteSettings_cff._hasInputTagModuleLabel
def _hasInputTagModuleLabel(process, pset, psetModLabel, moduleLabels, result)
Definition: earlyDeleteSettings_cff.py:11