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 44 45 46 47 48 49 50 51 52
import FWCore.ParameterSet.Config as cms

import HLTrigger.Configuration.Tools.options as _options
import HLTrigger.Configuration.Tools.confdb  as _confdb

def _build_options(**args):
    options = _options.HLTProcessOptions()
    for key, val in args.items():
        setattr(options, key, val)
    return options


def getHltConfiguration(menu, **args):
    args['menu'] = menu
    args['fragment'] = False
    options = _build_options(**args)

    try:
        foo = {'process': None}
        exec(_confdb.HLTProcess(options).dump(), globals(), foo)
        process = foo['process']
    except:
        raise Exception(f'query to ConfDB failed (output is not a valid python file)\n  args={args}')

    if not isinstance(process, cms.Process):
        raise Exception(f'query to ConfDB did not return a valid HLT menu (cms.Process not found)\n  args={args}')

    return process


def loadHltConfiguration(process, menu, **args):
    args['menu'] = menu
    args['fragment'] = True
    options = _build_options(**args)

    try:
        hlt = {'fragment': None}
        exec(_confdb.HLTProcess(options).dump(), globals(), hlt)
        process2 = hlt['fragment']
    except:
        raise Exception(f'query to ConfDB failed (output is not a valid python file)\n  args={args}')

    if not isinstance(process2, cms.Process):
        raise Exception(f'query to ConfDB did not return a valid HLT menu (cms.Process not found)\n  args={args}')

    process.extend( process2 )

    return process


import FWCore.ParameterSet.Config as _cms
_cms.Process.loadHltConfiguration = loadHltConfiguration