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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
import FWCore.ParameterSet.Config as cms
import FWCore.ParameterSet.VarParsing as VarParsing

import sys

from DQM.Integration.config.dqmPythonTypes import RunType 
from DQM.DTMonitorModule.test.dtDqmPythonTypes import DTDQMConfig 

options = VarParsing.VarParsing('analysis')

# options.inputFiles are inherited from 'analysis'
options.register('runNumber',
                 111,
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.int,
                 "Run number.")

options.register('runInputDir',
                 '/tmp',
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.string,
                 "Directory where the DQM files will appear.")

options.register('scanOnce',
                 False, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.bool,
                 "Don't repeat file scans: use what was found during the initial scan. EOR file is ignored and the state is set to 'past end of run'.")

options.register('minEventsPerLumi',
                 1, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.int,
                 "If scanOnce is tue, sets the minimal # of events per LS to be processed before switching to the next LS (and file).")

options.register('skipFirstLumis',
                 False, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.bool,
                 "Skip (and ignore the minEventsPerLumi parameter) for the files which have been available at the begining of the processing. ")

# Parameters for runType

options.register ('runkey',
          'pp_run',
          VarParsing.VarParsing.multiplicity.singleton,
          VarParsing.VarParsing.varType.string,
          "Run Keys of CMS")

# parameters for DT configuration

options.register('processAB7Digis',
                 False, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.bool,
                 "Enable processing of AB7 DT digi data (duplicate occupancy plot and other customisations to DT digi monitoring)")

options.register('processAB7TPs',
                 False, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.bool,
                 "Enable processing of AB7 DT local trigger data (DOES NOTHING FOR NOW)")

options.register('runWithLargeTimeBox',
                 False, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.bool,
                 "Runs DTDigiTask with a timebox plot window of 6400 TDC Counts")

options.register('timeBoxTDCPedestal',
                 -200, # default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.int,
                 "Pedestal of the lower edge of AB7 time boxes")


options.parseArguments()

runType = RunType()
if not options.runkey.strip():
  options.runkey = 'pp_run'

dtDqmConfig = DTDQMConfig()
dtDqmConfig.setProcessAB7Digis(options.processAB7Digis)
dtDqmConfig.setProcessAB7TPs(options.processAB7TPs)

dtDqmConfig.setRunWithLargeTB(options.runWithLargeTimeBox)
dtDqmConfig.setTBTDCPedestal(options.timeBoxTDCPedestal)

runType.setRunType(options.runkey.strip())

if not options.inputFiles:
    # Input source
    minEventsPerLumi = 1
    nextLumiTimeoutMillis = 240000
    endOfRunKills = True
    
    if options.scanOnce:
        endOfRunKills = False
        nextLumiTimeoutMillis = 0
        minEventsPerLumi = options.minEventsPerLumi
    
    source = cms.Source("DQMStreamerReader",
        runNumber = cms.untracked.uint32(options.runNumber),
        runInputDir = cms.untracked.string(options.runInputDir),
        SelectEvents = cms.untracked.vstring('*'),
        streamLabel = cms.untracked.string('streamDQM'),
        scanOnce = cms.untracked.bool(options.scanOnce),
        minEventsPerLumi = cms.untracked.int32(minEventsPerLumi),
        delayMillis = cms.untracked.uint32(500),
        nextLumiTimeoutMillis = cms.untracked.int32(nextLumiTimeoutMillis),
        skipFirstLumis = cms.untracked.bool(options.skipFirstLumis),
        deleteDatFiles = cms.untracked.bool(False),
        endOfRunKills  = cms.untracked.bool(endOfRunKills),
    )
else:
    print("The list of input files is provided. Disabling discovery and running on everything.")
    files = map(lambda x: "file://" + x, options.inputFiles)
    source = cms.Source("PoolSource",
        fileNames = cms.untracked.vstring(files),
        secondaryFileNames = cms.untracked.vstring()
    )

print("Source:", source)

print("RunType:", runType)

print("DTDQMConfig:", dtDqmConfig)