16 from CoolRunQuery.AtlRunQueryQueryConfig
import QC
17 from CoolRunQuery.selector.AtlRunQuerySelectorBase
import DataKey
20 from CoolRunQuery.AtlRunQueryRun
import DataEntry, DataEntryList, Run
27 print(
"Creating results in path '%s'" % QC.datapath )
33 header += [DataKey(x)
for x
in [
'Run',
'Links',
'#LB']]
35 header += [DataKey(
'Start and endtime')]
37 header += [DataKey(
'Duration')]
38 header += [k
for k
in Run.ShowOrder
if k
not in excludelist]
61 Run.totevents[0] +=
int(run.result[
"#Events"])
69 f =
open(
'%s/QueryResult.txt' % QC.datapath,
'w' )
70 print (
"data keys:",
', '.
join([h.ResultKey
for h
in header]), file=f)
71 print (
'number of runs: %i' % len(runlist), file=f)
77 line += [
"%i" % r.runNr,
"",
"%i" % r.lastlb]
79 line += [
"%s" % r.timestr(
'seconds')]
81 line += [
"%s" % r.durationstr()]
82 for k
in Run.ShowOrder:
83 line += [r.data[k.ResultKey]]
84 for head,item
in zip(header,line):
85 if isinstance(item,tuple):
86 item =
'|'.
join([
str(x)
for x
in item])
87 print (
'%40s: %s' % (head.ResultKey, item), file=f)
96 pf =
open(
'%s/atlrunquery.pickle' % QC.datapath,
'wb' )
99 except Exception
as e:
100 print (
'ERROR: could not pickle results dictionary: "%r"' % e)
114 "olc:beam1intensity",
115 "olc:beam2intensity",
122 runs = [r[
"runNr"]
for r
in result[DataKey(
"Run")]]
123 store = { runNr:{}
for runNr
in runs}
125 for datakey
in result:
126 key = datakey.pickled()
127 if key
in ignoreForNow:
128 print(
"Not storing in json file: ", key)
131 for (runNr, x)
in zip(runs, result[datakey]):
132 if isinstance(x, (DataEntry,DataEntryList)):
133 store[runNr][key] = x.json()
135 store[runNr][key] = x
137 with open(
'%s/atlrunquery.json' % QC.datapath,
'w' )
as pf:
141 except Exception
as e:
142 print (
'ERROR: could not create json file with results: "%r"' % e)
151 scontent = {
"runNr": r.runNr,
"lastLB": r.lastlb,
"dataPeriod":
"tbd",
"lhcRun": r.lhcRun}
155 scontent = (r.lastlb, [(lbtime[0]-r.lbtimes[0][0])*1e-9
for lbtime
in r.lbtimes] + [ (r.lbtimes[-1][1]-r.lbtimes[0][0])*1e-9 ] )
156 elif k ==
'Start and endtime':
157 scontent = r.timestr(
'seconds')
158 elif k ==
'Duration':
159 scontent = r.durationstr()
161 scontent = r.data[k.ResultKey]
162 dic.setdefault(k,[]).
append(scontent)
167 if hasattr(v,
'pickled'):
172 dic_basic = {
'Run': [ r[
"runNr"]
for r
in dic[DataKey(
'Run')]]}
174 for i,r
in enumerate(dic_basic[
'Run']):
175 dic_basic[r] = dict([ ( k.pickled(),
basic(v[i]) )
for k,v
in dic.items()])
186 for key, results
in dic.items():
187 if key.ResultKey
in [
'SMK',
'HLT PSK',
'L1 PSK',
'TorCurrent',
'SolCurrent',
'BGS Key',
'#LB']:
189 if key.Type==DataKey.DETECTOR:
193 dicsum.setdefault(key,0)
195 elif key.Type == DataKey.STREAM:
197 if entry
is None or entry.value ==
'n.a.':
199 dicsum.setdefault(key,[0,0])
200 dicsum[key][0] += entry.value[0]
201 dicsum[key][1] += entry.value[1]
205 if key
not in dicsum:
208 except (ValueError, TypeError):