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

# User Rev Content
1 abrinke1 1.1 import sys
2 muell149 1.3 import csv
3     import array
4     import math
5 abrinke1 1.1 from colors import *
6     write = sys.stdout.write
7    
8     def PrettyPrintTable(Headers,Data,ColWidths,WarningCol=[],border='*'):
9 grchrist 1.2
10 abrinke1 1.1 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 grchrist 1.2 #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 abrinke1 1.1
28     def PrintLine(line,ColWidths,Warn,border):
29 grchrist 1.2 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 awoodard 1.6 if "Trigger" in str(line[0]):
41 grchrist 1.2 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 muell149 1.3
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 abrinke1 1.4 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 muell149 1.3 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 awoodard 1.5 metric = diff/linear
103     # metric = diff/av
104 muell149 1.3
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     #################################################