1 |
awoodard |
1.1 |
from DatabaseParser import *
|
2 |
|
|
|
3 |
|
|
class StreamMonitor:
|
4 |
|
|
def getStreamACoreRatesByLS(self,parser,ls_list,config,isCol=True):
|
5 |
|
|
a_rates = parser.GetTrigRatesInLSRange('AOutput',ls_list) # AOutput = Parking trigs + core trig
|
6 |
|
|
prompt_a_rates = parser.GetTrigRatesInLSRange('DQMOutput',ls_list)
|
7 |
|
|
b_rates = parser.GetTrigRatesInLSRange('BOutput',ls_list) # BOutput = Parking trigs ps'd by 20
|
8 |
|
|
ps_columns = parser.GetPSColumnsInLSRange(ls_list)
|
9 |
|
|
|
10 |
|
|
HLT_Stream_A = {}
|
11 |
|
|
for ls in ls_list:
|
12 |
|
|
a_rate = a_rates.get(ls,0)
|
13 |
|
|
prompt_a_rate = prompt_a_rates.get(ls,0)*10
|
14 |
|
|
b_rate = b_rates.get(ls,0)*20
|
15 |
|
|
if isCol and (ps_columns.get(ls) != config.CircBeamCol):
|
16 |
|
|
HLT_Stream_A[ls] = prompt_a_rate
|
17 |
|
|
else:
|
18 |
|
|
HLT_Stream_A[ls] = a_rate - b_rate
|
19 |
|
|
|
20 |
|
|
return HLT_Stream_A
|
21 |
|
|
|
22 |
|
|
|
23 |
|
|
def getStreamARatesByLS(self,parser,ls_list):
|
24 |
|
|
a_rates = parser.GetTrigRatesInLSRange('AOutput',ls_list) # AOutput = Parking trigs + core trig
|
25 |
|
|
|
26 |
|
|
return a_rates
|
27 |
|
|
|
28 |
|
|
def compareStreamARate(self, config, curr_stream_a, ls_list,av_inst_lumi,in_coll):
|
29 |
awoodard |
1.2 |
if curr_stream_a > config.MaxStreamARate:
|
30 |
|
|
bad_stream_a = True
|
31 |
|
|
else:
|
32 |
|
|
bad_stream_a = False
|
33 |
|
|
|
34 |
awoodard |
1.1 |
if in_coll:
|
35 |
|
|
pkl_file = open(config.FitFileName, 'rb')
|
36 |
|
|
fit_input = pickle.load(pkl_file)
|
37 |
|
|
|
38 |
awoodard |
1.2 |
try:
|
39 |
|
|
pred_stream_a = fit_input['HLT_Stream_A'][1]+fit_input['HLT_Stream_A'][2]*av_inst_lumi+fit_input['HLT_Stream_A'][3]*av_inst_lumi*av_inst_lumi
|
40 |
|
|
sigma = fit_input['HLT_Stream_A'][5]
|
41 |
awoodard |
1.4 |
except:
|
42 |
awoodard |
1.2 |
break
|
43 |
awoodard |
1.4 |
#No fit for stream a; if one is desired, run DatabaseRatePredictor.py with a trigger list including 'HLT_Stream_A'
|
44 |
awoodard |
1.2 |
|
45 |
awoodard |
1.1 |
per_diff = (curr_stream_a - pred_stream_a)/pred_stream_a * 100
|
46 |
|
|
sigma_diff = (curr_stream_a - pred_stream_a)/sigma
|
47 |
|
|
|
48 |
|
|
if abs(sigma_diff) > config.DefAllowRateSigmaDiff*2 and config.DefWarnOnSigmaDiff:
|
49 |
|
|
bad_stream_a = True
|
50 |
awoodard |
1.3 |
if abs(per_diff) > config.DefAllowRatePercDiff and not config.DefWarnOnSigmaDiff:
|
51 |
awoodard |
1.1 |
bad_stream_a = True
|
52 |
|
|
|
53 |
|
|
return bad_stream_a
|