File indexing completed on 2024-11-26 02:34:08
0001 from builtins import range
0002 import FWCore.ParameterSet.Config as cms
0003
0004
0005 import FWCore.ParameterSet.VarParsing as VarParsing
0006 import sys
0007 import fnmatch
0008 from .dqmPythonTypes import *
0009
0010
0011 from Configuration.Applications.ConfigBuilder import filesFromDASQuery
0012
0013 options = VarParsing.VarParsing("analysis")
0014
0015 options.register(
0016 "runkey",
0017 "pp_run",
0018 VarParsing.VarParsing.multiplicity.singleton,
0019 VarParsing.VarParsing.varType.string,
0020 "Run Keys of CMS"
0021 )
0022
0023
0024 options.register('runUniqueKey',
0025 'InValid',
0026 VarParsing.VarParsing.multiplicity.singleton,
0027 VarParsing.VarParsing.varType.string,
0028 "Unique run key from RCMS for Frontier")
0029
0030 options.register('runNumber',
0031 286520,
0032 VarParsing.VarParsing.multiplicity.singleton,
0033 VarParsing.VarParsing.varType.int,
0034 "Run number. This run number has to be present in the dataset configured with the dataset option.")
0035
0036 options.register('maxLumi',
0037 2000,
0038 VarParsing.VarParsing.multiplicity.singleton,
0039 VarParsing.VarParsing.varType.int,
0040 "Only lumisections up to maxLumi are processed.")
0041
0042 options.register('minLumi',
0043 1,
0044 VarParsing.VarParsing.multiplicity.singleton,
0045 VarParsing.VarParsing.varType.int,
0046 "Only lumisections starting from minLumi are processed.")
0047
0048 options.register('lumiPattern',
0049 '*0',
0050 VarParsing.VarParsing.multiplicity.singleton,
0051 VarParsing.VarParsing.varType.string,
0052 "Only lumisections with numbers matching lumiPattern are processed.")
0053
0054 options.register('dataset',
0055 'auto',
0056 VarParsing.VarParsing.multiplicity.singleton,
0057 VarParsing.VarParsing.varType.string,
0058 "Dataset name like '/ExpressPhysicsPA/PARun2016D-Express-v1/FEVT', or 'auto' to guess it with a DAS query. A dataset_cfi.py that defines 'readFiles' and 'secFiles' (like a DAS Python snippet) will override this, to avoid DAS queries.")
0059
0060 options.register('noDB',
0061 True,
0062 VarParsing.VarParsing.multiplicity.singleton,
0063 VarParsing.VarParsing.varType.bool,
0064 "Don't upload the BeamSpot conditions to the DB")
0065
0066 options.parseArguments()
0067
0068 try:
0069
0070 from dataset_cfi import readFiles, secFiles
0071 print("Using filenames from dataset_cfi.py.")
0072 except:
0073 if options.dataset == 'auto':
0074 print("Querying DAS for a dataset...")
0075 import subprocess
0076 out = subprocess.check_output("dasgoclient --query 'dataset run=%d dataset=/*Express*/*/*FEVT*'" % options.runNumber, shell=True)
0077 dataset = out.splitlines()[-1]
0078 print("Using dataset=%s." % dataset)
0079 else:
0080 dataset = options.dataset
0081
0082 print("Querying DAS for files...")
0083 readFiles = cms.untracked.vstring()
0084 secFiles = cms.untracked.vstring()
0085
0086 read, sec = filesFromDASQuery("file run=%d dataset=%s" % (options.runNumber, dataset), option=" --limit 10000 ")
0087 readFiles.extend(read)
0088 secFiles.extend(sec)
0089
0090 print("Got %d files." % len(readFiles))
0091
0092 runstr = str(options.runNumber)
0093 runpattern = "*" + runstr[0:3] + "/" + runstr[3:] + "*"
0094 readFiles = cms.untracked.vstring([f for f in readFiles if fnmatch.fnmatch(f, runpattern)])
0095 secFiles = cms.untracked.vstring([f for f in secFiles if fnmatch.fnmatch(f, runpattern)])
0096 lumirange = cms.untracked.VLuminosityBlockRange(
0097 [ str(options.runNumber) + ":" + str(ls)
0098 for ls in range(options.minLumi, options.maxLumi+1)
0099 if fnmatch.fnmatch(str(ls), options.lumiPattern)
0100 ]
0101 )
0102
0103 print("Selected %d files and %d LS." % (len(readFiles), len(lumirange)))
0104
0105 source = cms.Source ("PoolSource",fileNames = readFiles, secondaryFileNames = secFiles, lumisToProcess = lumirange)
0106 maxEvents = cms.untracked.PSet(
0107 input = cms.untracked.int32(-1)
0108 )
0109
0110
0111
0112
0113
0114 runType = RunType()
0115 if not options.runkey.strip():
0116 options.runkey = "pp_run"
0117
0118 runType.setRunType(options.runkey.strip())