ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/TablePrint.py
Revision: 1.6
Committed: Tue Jan 22 10:19:31 2013 UTC (12 years, 3 months ago) by awoodard
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +1 -2 lines
Log Message:
Taking out unnecessary ROOT import to fix --help option in DatabaseRateMonitor

File Contents

# Content
1 import sys
2 import csv
3 import array
4 import math
5 from colors import *
6 write = sys.stdout.write
7
8 def PrettyPrintTable(Headers,Data,ColWidths,WarningCol=[],border='*'):
9
10 PrintHLine(ColWidths,border)
11 PrintLine(Headers,ColWidths,False,border)
12 PrintHLine(ColWidths,border)
13 if WarningCol==[]:
14 WarningCol=[False]*len(Data)
15 for [line,Warn] in zip(Data,WarningCol):
16 PrintLine(line,ColWidths,Warn,border)
17 PrintHLine(ColWidths,border)
18
19 def PrintHLine(ColWidths,border): ## writes a horizontal line of the right width
20 #write = sys.stdout.write
21 for entry in ColWidths:
22 write(border)
23 for i in range(entry):
24 write(border)
25 write(border)
26 write('\n')
27
28 def PrintLine(line,ColWidths,Warn,border):
29 assert Warn in [True,False]
30 try:
31 assert len(line)==len(ColWidths)
32 except:
33 print line
34 print ColWidths
35 raise
36 if Warn:
37 write(bcolors.FAIL)
38 else:
39 write(bcolors.OKGREEN)
40 if "Trigger" in str(line[0]):
41 write(bcolors.ENDC)
42
43 for [width, entry] in zip(ColWidths,line):
44 write(border)
45 try:
46 entry = str(entry)
47 except:
48 print "\n\n\n Weird Data .. Bailing out\n\n"
49 sys.exit(0)
50 for i in range(width):
51 if i==0:
52 write(' ')
53 elif i<len(entry)+1:
54 write(entry[i-1])
55 else:
56 write(' ')
57 write(border)
58 write('\n')
59 write(bcolors.ENDC)
60
61
62
63 #################################################
64 #one method of determining rate differences
65 def priot(wp_bool,print_trigger,meanps,f1,f2,fit_type,av):
66 if wp_bool:
67 global w2
68 lumi=8000
69 x0 = f1.GetParameter(0)
70 x1 = f1.GetParameter(1)
71 linear = x0 + x1*lumi
72
73 if fit_type == "line":
74 z0 = f2.GetParameter(0)
75 z1 = f2.GetParameter(1)
76 z2 = 0
77 z3 = 0
78 fit = z0 + z1*lumi
79 elif fit_type == "quad":
80 z0 = f2.GetParameter(0)
81 z1 = f2.GetParameter(1)
82 z2 = f2.GetParameter(2)
83 z3 = 0
84 fit = z0 + z1*lumi +z2*lumi*lumi
85 elif fit_type == "cubic":
86 z0 = f2.GetParameter(0)
87 z1 = f2.GetParameter(1)
88 z2 = f2.GetParameter(2)
89 z3 = f2.GetParameter(3)
90 fit = z0 + z1*lumi +z2*lumi*lumi +z3*lumi*lumi*lumi
91 elif fit_type == "expo":
92 z0 = f2.GetParameter(0)
93 z1 = f2.GetParameter(1)
94 z2 = f2.GetParameter(2)
95 z3 = f2.GetParameter(3)
96 fit = z0 + z1*math.exp(z2+z3*lumi)
97
98 diff = fit - linear
99 psdiff = diff/meanps
100 linearChiSqNDOF = f1.GetChisquare()/f1.GetNDF()
101 fitChiSqNDOF = f2.GetChisquare()/f2.GetNDF()
102 metric = diff/linear
103 # metric = diff/av
104
105 if priot.has_been_called==False:
106 f2 = open('nonlinear.csv',"wb")
107 w2 = csv.writer(f2)
108 w2.writerow(["Trigger","diff@"+str(lumi),"diff (prescaled)","ps","fit type","linear ChiSq/ndof","fit ChiSq/ndof","average rate","metric","x0","x1","z0","z1","z2","z3"])
109 w2.writerow([str(print_trigger),diff,psdiff,meanps,fit_type,linearChiSqNDOF,fitChiSqNDOF,av,metric,x0,x1,z0,z1,z2,z3])
110 elif priot.has_been_called==True:
111 w2.writerow([str(print_trigger),diff,psdiff,meanps,fit_type,linearChiSqNDOF,fitChiSqNDOF,av,metric,x0,x1,z0,z1,z2,z3])
112
113 priot.has_been_called=True
114
115 #################################################
116
117 def prettyCSVwriter(f_out,ColWidths,Headers,Data,WarningCol=[]):
118 file = open(f_out,'wb')
119 c = csv.writer(file)
120 PrintCSV(c,ColWidths,Headers,False)
121 if WarningCol==[]:
122 WarningCol=[False]*len(Data)
123 for [line,Warn] in zip(Data,WarningCol):
124 PrintCSV(c,ColWidths,line,Warn)
125 #################################################
126 def PrintCSV(c,ColWidths,line,Warn):
127 rowlist = []
128 assert Warn in [True,False]
129
130 for [width, entry] in zip(ColWidths,line):
131 try:
132 entry = str(entry)
133 except:
134 print "\n\n\n Weird Data .. Bailing out\n\n"
135 sys.exit(0)
136
137 rowlist.append(entry)
138
139 if "Trigger" in line[0]:
140 rowlist.append("Warn?")
141 else:
142 rowlist.append(Warn)
143 c.writerow(rowlist)
144 #################################################