ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonHeavyIon/ReadConfig.py
Revision: 1.2
Committed: Wed Nov 2 12:24:40 2011 UTC (13 years, 6 months ago) by grchrist
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +13 -7 lines
Log Message:
Set up for using reference runs in place of quadratic fits

File Contents

# Content
1 #!/usr/bin/env python
2 import os
3
4 class RateMonConfig:
5
6 def __init__(self,path='./'):
7 self.CFGfile=path+"/defaults.cfg"
8 self.BasePath=path
9 self.ReferenceRun=""
10 self.DefAllowRateDiff=0.0
11 self.DefAllowIgnoreThresh=0.0
12 self.ExcludeList=[]
13 self.MonitorList=[]
14 self.MonitorIntercept=[]
15 self.MonitorSlope=[]
16 self.MonitorQuad=[]
17 self.MonitorOnly=0
18 self.MonTargetLumi=0
19 self.FindL1Zeros=0
20 self.LSWindow=-1
21 self.CompareReference=0
22
23 def ReadList(self,filename):
24 filename=self.BasePath+'/'+filename
25 list = []
26 if not os.path.exists(filename):
27 return list
28 f = open(filename)
29 for line in f:
30 if line.startswith('#'):
31 continue
32 if len(line)<3 or line=='\n':
33 continue
34 line = ((line.rstrip('\n')).rstrip(' '))
35 if line.find(':')==-1: # exclude list, no rate estimates
36 list.append( line )
37 else:
38 split = line.split(':')
39 list.append([split[0],split[1],split[2],split[3]])
40 f.close()
41 return list
42
43 def ReadCFG(self):
44 f=open(self.CFGfile)
45 for line in f:
46 if line.startswith('#'):
47 continue
48 if len(line)<1:
49 continue
50
51 strippedLine = line.split('#')[0]
52 strippedLine = strippedLine.rstrip('\n').rstrip(' ')
53 if strippedLine=='':
54 continue
55 tok = strippedLine.split('=')
56 par = tok[0].rstrip(' ').lstrip(' ')
57 if len(tok)>=2:
58 arg=tok[1].rstrip('\n').rstrip(' ').lstrip(' ')
59 else:
60 arg=''
61
62 if par=="ReferenceRun":
63 self.ReferenceRun=arg
64 elif par=="DefaultAllowedRateDiff":
65 self.DefAllowRateDiff=float(arg)
66 elif par=="DefaultIgnoreThreshold":
67 self.DefAllowIgnoreThresh=float(arg)
68 elif par=="ExcludeTriggerList":
69 self.ExcludeList=self.ReadList(arg)
70 elif par=="TriggerToMonitorList":
71 tmp=self.ReadList(arg)
72 for line in tmp:
73 self.MonitorList.append(line[0])
74 self.MonitorIntercept.append(float(line[1]))
75 self.MonitorSlope.append(float(line[2]))
76 self.MonitorQuad.append(float(line[3]))
77 elif par == "MonitorOnlyListed":
78 self.MonitorOnly=int(arg)
79 elif par=="MonitorTargetLumi":
80 self.MonTargetLumi=float(arg)
81 elif par=="FindL1Zeros":
82 self.FindL1Zeros=int(arg)
83 elif par=="LSSlidingWindow":
84 self.LSWindow=int(arg)
85 elif par=="CompareReference":
86 self.CompareReference=int(arg)
87 else:
88 print "Invalid Option : "+strippedLine
89 f.close()
90
91 def AnalyzeTrigger(self,TrigName): ## Have to pass this a version number stripped Trigger
92 if TrigName in self.ExcludeList:
93 return False
94
95 if self.MonitorOnly and not TrigName in self.MonitorList:
96 return False
97
98 return True
99
100 def GetExpectedRate(self,TrigName,lumi):
101 try:
102 for trig,intercept,slope,quad in zip(self.MonitorList,self.MonitorIntercept,self.MonitorSlope,self.MonitorQuad):
103 if trig==TrigName:
104 if lumi:
105 return intercept + lumi*slope/1000 + lumi*lumi*quad/1000000
106 else:
107 return intercept + 3000*slope/1000 + 3000*3000*quad/1000000
108 return -1
109
110 except:
111 print "error getting expected rate"
112 sys.exit(1)