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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
import os
import FWCore.ParameterSet.Config as cms
import configparser as ConfigParser

def loadDQMRunConfigFromFile():
    # try reading the config
    conf_locations = [
        "/etc/dqm_run_config",
        #os.path.expanduser("~/.dqm_run_config"),
        os.path.join(os.curdir, "dqm_run_config"),
    ]
    
    config = ConfigParser.ConfigParser()
    files_read = config.read(conf_locations)

    print("Loaded configuration file from:", files_read)
    return config

# default values, config in file overrides parts of it
# dqmEnv and dqmSaver will configure from this pset
dqmRunConfigDefaults = {
    'userarea': cms.PSet(
        type = cms.untracked.string("userarea"),
        collectorPort = cms.untracked.int32(9190),
        collectorHost = cms.untracked.string('127.0.0.1'),
    ),
    'playback': cms.PSet(
        type = cms.untracked.string("playback"),
        collectorPort = cms.untracked.int32(9090),
        collectorHost = cms.untracked.string('dqm-integration.cms'),
    ),
    'production': cms.PSet(
        type = cms.untracked.string("production"),
        collectorPort = cms.untracked.int32(9090),
        collectorHost = cms.untracked.string('dqm-prod-local.cms'),
    ),
}

# type should be loaded first, to populate the proper defaults
dqmFileConfig = loadDQMRunConfigFromFile()
dqmRunConfigType = "userarea"
if dqmFileConfig.has_option("host", "type"):
    dqmRunConfigType = dqmFileConfig.get("host", "type")
    
isDqmPlayback = cms.PSet( value = cms.untracked.bool( dqmRunConfigType == "playback" ) )
isDqmProduction = cms.PSet( value = cms.untracked.bool( dqmRunConfigType == "production" ) )

dqmRunConfig = dqmRunConfigDefaults[dqmRunConfigType]

# load the options from the config file, if set
if dqmFileConfig.has_option("host", "collectorPort"):
    dqmRunConfig.collectorPort = int(dqmFileConfig.get("host", "collectorPort"))

if dqmFileConfig.has_option("host", "collectorHost"):
    dqmRunConfig.collectorHost = dqmFileConfig.get("host", "collectorHost")

# now start the actual configuration
print("dqmRunConfig:", dqmRunConfig)

from DQMServices.Core.DQMStore_Online_cfi import *

DQM = cms.Service("DQM",
                  debug = cms.untracked.bool(False),
                  publishFrequency = cms.untracked.double(5.0),
                  collectorPort = dqmRunConfig.collectorPort,
                  collectorHost = dqmRunConfig.collectorHost,
                  filter = cms.untracked.string(''),
)

DQMMonitoringService = cms.Service("DQMMonitoringService")

from DQMServices.Components.DQMEventInfo_cfi import *
from DQMServices.FileIO.DQMFileSaverOnline_cfi import *

# upload should be either a directory or a symlink for dqm gui destination
dqmSaver.path = "./upload" 
dqmSaver.tag = "PID%06d" % os.getpid()
dqmSaver.producer = 'DQM'
dqmSaver.backupLumiCount = 15

# Add Protobuf DQM saver
from DQMServices.FileIO.DQMFileSaverPB_cfi import dqmSaver as dqmSaverPB

dqmSaverPB.path = './upload/pb'
dqmSaverPB.tag = 'PID%06d' % os.getpid()
dqmSaverPB.producer = 'DQM'
dqmSaverPB.fakeFilterUnitMode = True