ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/ReadConfig.py
Revision: 1.9
Committed: Thu Apr 5 06:13:40 2012 UTC (13 years ago) by grchrist
Content type: text/x-python
Branch: MAIN
Changes since 1.8: +12 -11 lines
Log Message:
masked L1 predictions for now

File Contents

# User Rev Content
1 grchrist 1.1 #!/usr/bin/env python
2     import os
3 abrinke1 1.4 import cPickle as pickle
4     import math
5 grchrist 1.8 from DatabaseParser import *
6 grchrist 1.1
7     class RateMonConfig:
8    
9     def __init__(self,path='./'):
10     self.CFGfile=path+"/defaults.cfg"
11     self.BasePath=path
12     self.ReferenceRun=""
13     self.DefAllowRateDiff=0.0
14     self.DefAllowIgnoreThresh=0.0
15     self.ExcludeList=[]
16     self.MonitorList=[]
17     self.MonitorIntercept=[]
18     self.MonitorSlope=[]
19     self.MonitorQuad=[]
20 amott 1.3 self.L1Predictions=[]
21 grchrist 1.1 self.MonitorOnly=0
22     self.MonTargetLumi=0
23     self.FindL1Zeros=0
24     self.LSWindow=-1
25     self.CompareReference=0
26 grchrist 1.2 self.ShifterMode=0
27 amott 1.5 self.MaxExpressRate=999
28 grchrist 1.1
29     def ReadList(self,filename):
30     filename=self.BasePath+'/'+filename
31     list = []
32     if not os.path.exists(filename):
33     return list
34     f = open(filename)
35     for line in f:
36     if line.startswith('#'):
37     continue
38     if len(line)<3 or line=='\n':
39     continue
40     line = ((line.rstrip('\n')).rstrip(' '))
41     if line.find(':')==-1: # exclude list, no rate estimates
42     list.append( line )
43     else:
44     split = line.split(':')
45 grchrist 1.9 list.append(split[0])
46     ##list.append([split[0],split[1],split[2],split[3]])
47 grchrist 1.1 f.close()
48     return list
49    
50     def ReadCFG(self):
51     f=open(self.CFGfile)
52     for line in f:
53     if line.startswith('#'):
54     continue
55     if len(line)<1:
56     continue
57    
58     strippedLine = line.split('#')[0]
59     strippedLine = strippedLine.rstrip('\n').rstrip(' ')
60     if strippedLine=='':
61     continue
62     tok = strippedLine.split('=')
63     par = tok[0].rstrip(' ').lstrip(' ')
64     if len(tok)>=2:
65     arg=tok[1].rstrip('\n').rstrip(' ').lstrip(' ')
66     else:
67     arg=''
68    
69     if par=="ReferenceRun":
70     self.ReferenceRun=arg
71     elif par=="DefaultAllowedRateDiff":
72     self.DefAllowRateDiff=float(arg)
73     elif par=="DefaultIgnoreThreshold":
74     self.DefAllowIgnoreThresh=float(arg)
75     elif par=="ExcludeTriggerList":
76     self.ExcludeList=self.ReadList(arg)
77     elif par=="TriggerToMonitorList":
78     tmp=self.ReadList(arg)
79     for line in tmp:
80 grchrist 1.8 self.MonitorList.append(line)
81     #self.MonitorIntercept.append(float(line[1]))
82     #self.MonitorSlope.append(float(line[2]))
83     #self.MonitorQuad.append(float(line[3]))
84 amott 1.3 elif par=="L1CrossSection":
85     self.L1Predictions = self.ReadList(arg)
86 grchrist 1.1 elif par == "MonitorOnlyListed":
87     self.MonitorOnly=int(arg)
88     elif par=="MonitorTargetLumi":
89     self.MonTargetLumi=float(arg)
90     elif par=="FindL1Zeros":
91     self.FindL1Zeros=int(arg)
92     elif par=="LSSlidingWindow":
93     self.LSWindow=int(arg)
94     elif par=="CompareReference":
95     self.CompareReference=int(arg)
96 grchrist 1.2 elif par=="ShifterMode":
97     self.ShifterMode=arg
98 amott 1.5 elif par=="MaxExpressRate":
99     self.MaxExpressRate=float(arg)
100 grchrist 1.6 elif par=="MaxStreamARate":
101     self.MaxStreamARate=float(arg)
102 grchrist 1.7 elif par=="FitFileName":
103     self.FitFileName=arg
104    
105 grchrist 1.1 else:
106     print "Invalid Option : "+strippedLine
107     f.close()
108    
109     def AnalyzeTrigger(self,TrigName): ## Have to pass this a version number stripped Trigger
110     if TrigName in self.ExcludeList:
111     return False
112     if self.MonitorOnly and not TrigName in self.MonitorList:
113     return False
114     return True
115    
116 abrinke1 1.4 ## def GetExpectedRate(self,TrigName,lumi):
117     ## for trig,intercept,slope,quad in zip(self.MonitorList,self.MonitorIntercept,self.MonitorSlope,self.MonitorQuad):
118     ## if trig==TrigName:
119     ## #print "mon list",self.MonitorList
120     ## if lumi:
121     ## return intercept + lumi*slope/1000 + lumi*lumi*quad/1000000
122     ## else:
123     ## return intercept + 3000*slope/1000 + 3000*3000*quad/1000000
124     ## return -1
125    
126     def GetExpectedRate(self,TrigName,Input,Rates,live,delivered):
127     RefRun = False
128 grchrist 1.8
129 abrinke1 1.4 try:
130     Chi2 = Input[TrigName][5]
131     if Input[TrigName][0] == "poly":
132     return [(live/delivered)*(Input[TrigName][1]+Input[TrigName][2]*delivered+Input[TrigName][3]*delivered*delivered+Input[TrigName][4]*delivered*delivered*delivered), Chi2]
133     else:
134     return [(live/delivered)*(Input[TrigName][1]+Input[TrigName][2]*math.exp(Input[TrigName][3]*delivered)), Chi2]
135     except:
136     RefRun = True
137    
138     if RefRun:
139    
140     num_compare = 0
141     pred_rate = 0
142     for iterator in range(len(Rates[TrigName]["rate"])):
143     delivered_lumi = Rates[TrigName]["delivered_lumi"][iterator]
144     if delivered_lumi > delivered - 100 and delivered_lumi < delivered + 100:
145     live_lumi = Rates[TrigName]["live_lumi"][iterator]
146     rate = Rates[TrigName]["rate"][iterator]
147     pred_rate += (live/delivered)*rate*(delivered_lumi/live_lumi)
148     num_compare += 1
149    
150     pred_rate = pred_rate/num_compare
151     Chi2 = pred_rate/math.sqrt(num_compare)
152     return [pred_rate, Chi2]
153    
154 grchrist 1.1 return -1
155 abrinke1 1.4
156    
157 grchrist 1.9 ## def GetExpectedL1Rates(self,lumi):
158     ## if not lumi:
159     ## return {}
160     ## expectedRates = {}
161     ## for col,inter,slope,quad in self.L1Predictions:
162     ## try:
163     ## expectedRates[int(col)] = lumi*(float(inter)+float(slope)*lumi+float(quad)*lumi*lumi)
164     ## except:
165     ## return {}
166     ## return expectedRates
167 grchrist 1.2
168