ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/ReadConfig.py
Revision: 1.29
Committed: Tue Jan 22 10:20:16 2013 UTC (12 years, 3 months ago) by awoodard
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.28: +0 -7 lines
Log Message:
Taking out obsolete options

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 awoodard 1.15 self.DefAllowRatePercDiff=0.0
14     self.DefAllowRateSigmaDiff=0.0
15 grchrist 1.1 self.DefAllowIgnoreThresh=0.0
16     self.ExcludeList=[]
17     self.MonitorList=[]
18     self.MonitorIntercept=[]
19     self.MonitorSlope=[]
20     self.MonitorQuad=[]
21 amott 1.3 self.L1Predictions=[]
22 awoodard 1.27 self.AllTriggers=0
23 grchrist 1.1 self.MonTargetLumi=0
24     self.LSWindow=-1
25     self.CompareReference=0
26 grchrist 1.2 self.ShifterMode=0
27 grchrist 1.10 self.NoVersion=0
28 amott 1.5 self.MaxExpressRate=999
29 amott 1.12 self.ForbiddenCols=[]
30 grchrist 1.14 self.CirculatingBeamsColumn=9
31     self.MaxLogMonRate=10
32 awoodard 1.16 self.DefWarnOnSigmaDiff=1
33 awoodard 1.17 self.DefShowSigmaAndPercDiff=0
34 grchrist 1.20 self.DoL1=0
35 awoodard 1.22 self.DefaultMaxBadRatesToShow=500
36 grchrist 1.23 self.L1SeedChangeFit=0
37 awoodard 1.28 self.ShowAllBadRates=0
38 awoodard 1.15
39 grchrist 1.1 def ReadList(self,filename):
40     filename=self.BasePath+'/'+filename
41     list = []
42     if not os.path.exists(filename):
43     return list
44     f = open(filename)
45     for line in f:
46     if line.startswith('#'):
47     continue
48     if len(line)<3 or line=='\n':
49     continue
50     line = ((line.rstrip('\n')).rstrip(' '))
51     if line.find(':')==-1: # exclude list, no rate estimates
52     list.append( line )
53     else:
54     split = line.split(':')
55 grchrist 1.9 list.append(split[0])
56     ##list.append([split[0],split[1],split[2],split[3]])
57 grchrist 1.1 f.close()
58     return list
59    
60     def ReadCFG(self):
61     f=open(self.CFGfile)
62     for line in f:
63     if line.startswith('#'):
64     continue
65     if len(line)<1:
66     continue
67    
68     strippedLine = line.split('#')[0]
69     strippedLine = strippedLine.rstrip('\n').rstrip(' ')
70     if strippedLine=='':
71     continue
72     tok = strippedLine.split('=')
73     par = tok[0].rstrip(' ').lstrip(' ')
74     if len(tok)>=2:
75     arg=tok[1].rstrip('\n').rstrip(' ').lstrip(' ')
76     else:
77     arg=''
78    
79     if par=="ReferenceRun":
80     self.ReferenceRun=arg
81 awoodard 1.17 elif par=="ShowSigmaAndPercDiff":
82     self.DefShowSigmaAndPercDiff=float(arg)
83 awoodard 1.15 elif par=="DefaultAllowedRatePercDiff":
84     self.DefAllowRatePercDiff=float(arg)
85     elif par=="DefaultAllowedRateSigmaDiff":
86     self.DefAllowRateSigmaDiff=float(arg)
87 grchrist 1.1 elif par=="DefaultIgnoreThreshold":
88     self.DefAllowIgnoreThresh=float(arg)
89     elif par=="ExcludeTriggerList":
90     self.ExcludeList=self.ReadList(arg)
91     elif par=="TriggerToMonitorList":
92     tmp=self.ReadList(arg)
93     for line in tmp:
94 grchrist 1.8 self.MonitorList.append(line)
95     #self.MonitorIntercept.append(float(line[1]))
96     #self.MonitorSlope.append(float(line[2]))
97     #self.MonitorQuad.append(float(line[3]))
98 amott 1.12 elif par=="ForbiddenColumns":
99     tmp=arg.split(',')
100     for line in tmp:
101     try:
102     self.ForbiddenCols.append(int(line))
103     except:
104     print "Cannot parse Forbidden Cols parameter"
105 awoodard 1.27 elif par =="AllTriggers":
106     self.AllTriggers=int(arg)
107 grchrist 1.1 elif par=="LSSlidingWindow":
108     self.LSWindow=int(arg)
109     elif par=="CompareReference":
110     self.CompareReference=int(arg)
111 grchrist 1.2 elif par=="ShifterMode":
112     self.ShifterMode=arg
113 amott 1.5 elif par=="MaxExpressRate":
114     self.MaxExpressRate=float(arg)
115 grchrist 1.6 elif par=="MaxStreamARate":
116     self.MaxStreamARate=float(arg)
117 grchrist 1.7 elif par=="FitFileName":
118     self.FitFileName=arg
119 grchrist 1.10 elif par=="NoVersion":
120     self.NoVersion=int(arg)
121 grchrist 1.14 elif par=="CirculatingBeamsColumn":
122     self.CircBeamCol=int(arg)
123     elif par=="MaxLogMonRate":
124     self.MaxLogMonRate=float(arg)
125 awoodard 1.16 elif par=="WarnOnSigmaDiff":
126     self.DefWarnOnSigmaDiff=float(arg)
127 grchrist 1.20 elif par=="DoL1":
128     self.DoL1=int(arg)
129 awoodard 1.22 elif par=="DefaultMaxBadRatesToShow":
130     self.DefaultMaxBadRatesToShow=int(arg)
131 grchrist 1.23 elif par=="L1SeedChangeFit":
132     self.L1SeedChangeFit=int(arg)
133 awoodard 1.28 elif par=="ShowAllBadRates":
134     self.ShowAllBadRates=int(arg)
135 grchrist 1.1 else:
136     print "Invalid Option : "+strippedLine
137 awoodard 1.27
138 grchrist 1.1 f.close()
139    
140     def AnalyzeTrigger(self,TrigName): ## Have to pass this a version number stripped Trigger
141     if TrigName in self.ExcludeList:
142     return False
143     if self.MonitorOnly and not TrigName in self.MonitorList:
144     return False
145     return True
146    
147 awoodard 1.26 def GetExpectedRate(self,TrigName,Input,InputPS,live,delivered,deadtime,L1SeedChangeFit,HeadLumiRange,PSColumnByLS):
148 grchrist 1.10 #replaced live/delivered with deadtimebeamactive
149     if self.NoVersion:
150     TrigName=StripVersion(TrigName)
151     if TrigName not in Input.keys():
152 awoodard 1.22 return [0.0,0.0,"No prediction (fit missing)"]
153    
154 grchrist 1.25 if not L1SeedChangeFit:
155     try:
156     sigma = Input[TrigName][5]
157     except:
158     if Input[TrigName][0] == "fit failed":
159     return [0.0,0.0,"No prediction (fit missing)"]
160     else:
161     return [0.0,0.0,"Exception error"]
162 awoodard 1.26
163 grchrist 1.25 try:
164     if Input[TrigName][0] == "line" or Input[TrigName][0] == "quad" or Input[TrigName][0] == "cube":
165     return [(1-deadtime)*(Input[TrigName][1]+Input[TrigName][2]*delivered+Input[TrigName][3]*delivered*delivered+Input[TrigName][4]*delivered*delivered*delivered), sigma,""]
166     elif Input[TrigName][0] == "expo":
167     return [(1-deadtime)*(Input[TrigName][1]+Input[TrigName][2]*math.exp(Input[TrigName][3]+Input[TrigName][4]*delivered)), sigma,""]
168     except:
169 awoodard 1.22 return [0.0,0.0,"Exception error"]
170    
171 grchrist 1.25 ###L1SeedChangeFit
172     else:
173     firstLS=min(HeadLumiRange)
174     psi=PSColumnByLS[firstLS]
175 awoodard 1.26
176 grchrist 1.25 try:
177     sigma = InputPS[psi][TrigName][5]
178     except:
179     #print psi, TrigName
180    
181     #if InputPS[psi][TrigName][0] == "fit failed":
182     # return [0.0,0.0,"No prediction (fit missing)"]
183     #else:
184     return [0.0,0.0,"Exception error"]
185 awoodard 1.26
186 grchrist 1.25 try:
187     if InputPS[psi][TrigName][0] == "line" or InputPS[psi][TrigName][0] == "quad" or InputPS[psi][TrigName][0] == "cube":
188     return [(1-deadtime)*(InputPS[psi][TrigName][1]+InputPS[psi][TrigName][2]*delivered+InputPS[psi][TrigName][3]*delivered*delivered+InputPS[psi][TrigName][4]*delivered*delivered*delivered), sigma,""]
189     elif InputPS[psi][TrigName][0] == "expo":
190     return [(1-deadtime)*(InputPS[psi][TrigName][1]+InputPS[psi][TrigName][2]*math.exp(InputPS[psi][TrigName][3]+InputPS[psi][TrigName][4]*delivered)), sigma,""]
191     except:
192     return [0.0,0.0,"Exception error"]
193 abrinke1 1.4
194 grchrist 1.1 return -1
195 abrinke1 1.4
196    
197 grchrist 1.9 ## def GetExpectedL1Rates(self,lumi):
198     ## if not lumi:
199     ## return {}
200     ## expectedRates = {}
201     ## for col,inter,slope,quad in self.L1Predictions:
202     ## try:
203     ## expectedRates[int(col)] = lumi*(float(inter)+float(slope)*lumi+float(quad)*lumi*lumi)
204     ## except:
205     ## return {}
206     ## return expectedRates
207 grchrist 1.2
208