Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
"""
Helper functions to extract the dictionary with
 - all EDFilters
 - all EDProducers
 - all EDAnalyzers
 - all modules
either from a dictionary (either a cms.Process.__dict__ or from the locals() inside a _cff.py fragment)
"""

import FWCore.ParameterSet.Config as cms

def findEDFilters(holder):
  if isinstance(holder, cms.Process):
    return process.filters_()
  else:
    return dict( (name, module) for name, module in holder.items() if isinstance(module, cms.EDFilter) )


def findEDProducers(holder):
  if isinstance(holder, cms.Process):
    return process.producers_()
  else:
    return dict( (name, module) for name, module in holder.items() if isinstance(module, cms.EDProducer) )


def findEDAnalyzers(holder):
  if isinstance(holder, cms.Process):
    return process.analyzers_()
  else:
    return dict( (name, module) for name, module in holder.items() if isinstance(module, cms.EDAnalyzer) )


def findModules(holder):
  if isinstance(holder, cms.Process):
    modules = dict()
    modules.upate(process.analyzers_())
    modules.upate(process.producers_())
    modules.upate(process.filters_())
    return modules
  else:
    return dict( (name, module) for name, module in holder.items() if isinstance(module, (cms.EDAnalyzer, _cms.EDProducer, _cms.EDFilter)) )