1 import das_client, rrClient
5 return datetime.datetime.now().
date()
9 return date - datetime.timedelta(days=n)
12 return datetime.datetime.strptime(string,
"%Y%m%d").
date()
16 date: expected to be datetime.datetime object 18 datestring = date.strftime(
'%Y%m%d')
19 querystring =
"run date={date} | grep run.nlumis>{minlumis}".
format(date=datestring, minlumis=minlumis)
25 source: Either RunRegistry or DAS 27 if source ==
'RunRegistry' :
28 return rrClient.getRunsNewer(run, minlumis)
29 elif source ==
'DAS' :
30 querystring =
"run | grep run.nlumis>{minlumis}, run.runnumber>{run}".
format(run=run, minlumis=minlumis)
36 Will return a list of datasets in DAS that have the run in them 38 querystring =
"dataset run={run}".
format(run=run)
41 for datasetDict
in dasQuery(querystring,
'dataset') :
43 datasets.append(datasetDict[
'name'].
encode(
'ascii',
'replace'))
50 dataset : string dataset to find files in, e.g. 51 /ExpressCosmics/Run2015A-Express-v1/FEVT 52 /ExpressPhysics/Run2015A-Express-v1/FEVT 54 querystring =
"file dataset={dataset} run={run}".
format(dataset=dataset, run=run)
57 for fileDict
in dasQuery(querystring,
'file') :
59 files.append(fileDict[
'name'].
encode(
'ascii',
'replace'))
68 for runDict
in dasQuery(querystring,
'run') :
69 runNo =
int(runDict[
'run_number'])
70 runDict[
'date'] = datestring
75 dasinfo = das_client.get_data(
'https://cmsweb.cern.ch', queryString, 0, 0,
False)
76 if dasinfo[
'status'] !=
'ok' :
77 raise Exception(
'DAS query failed.\nQuery: %s\nDAS Status returned: %s' % (queryString, dasinfo[
'status']))
79 if len(dasinfo[
'data']) > 0 :
80 for entry
in dasinfo[
'data'] :
81 if entryTitle
in entry
and len(entry[entryTitle]) > 0 :
82 yield entry[entryTitle][0]
def getFilesForRun(run, dataset)
def getRunsForDate(date, minlumis=10)
def dasRunQueryToDict(querystring)
def runGetDatasetsAvailable(run)
def dasQuery(queryString, entryTitle)
def getRunsNewer(run, minlumis=10, source='RunRegistry')