Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-26 02:34:08

0001 from builtins import range
0002 import FWCore.ParameterSet.Config as cms
0003 
0004 # Parameters for runType
0005 import FWCore.ParameterSet.VarParsing as VarParsing
0006 import sys
0007 import fnmatch
0008 from .dqmPythonTypes import *
0009 
0010 # part of the runTheMatrix magic
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 # Parameter for frontierKey
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, # default value
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   # fixed dataset, DAS 'py' snippet
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   # this outputs all results, which can be a lot...
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 # Fix to allow scram to compile
0111 #if len(sys.argv) > 1:
0112 #  options.parseArguments()
0113 
0114 runType = RunType()
0115 if not options.runkey.strip():
0116     options.runkey = "pp_run"
0117 
0118 runType.setRunType(options.runkey.strip())