ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/TablePrint.py
Revision: 1.3
Committed: Thu Aug 9 08:57:37 2012 UTC (12 years, 8 months ago) by muell149
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-02-04, V00-02-03, V00-02-01, V00-01-10, V-00-01-10, V00-01-09, V00-01-08, V00-01-07, V00-01-06
Changes since 1.2: +82 -0 lines
Log Message:
updated module to work with menu comparison script

File Contents

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