ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/TablePrint.py
Revision: 1.4
Committed: Fri Oct 26 12:05:49 2012 UTC (12 years, 6 months ago) by abrinke1
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-02-05
Changes since 1.3: +7 -1 lines
Log Message:
Added linear option

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 abrinke1 1.4 if fit_type == "line":
75     z0 = f2.GetParameter(0)
76     z1 = f2.GetParameter(1)
77     z2 = 0
78     z3 = 0
79     fit = z0 + z1*lumi
80     elif fit_type == "quad":
81 muell149 1.3 z0 = f2.GetParameter(0)
82     z1 = f2.GetParameter(1)
83     z2 = f2.GetParameter(2)
84     z3 = 0
85     fit = z0 + z1*lumi +z2*lumi*lumi
86     elif fit_type == "cubic":
87     z0 = f2.GetParameter(0)
88     z1 = f2.GetParameter(1)
89     z2 = f2.GetParameter(2)
90     z3 = f2.GetParameter(3)
91     fit = z0 + z1*lumi +z2*lumi*lumi +z3*lumi*lumi*lumi
92     elif fit_type == "expo":
93     z0 = f2.GetParameter(0)
94     z1 = f2.GetParameter(1)
95     z2 = f2.GetParameter(2)
96     z3 = f2.GetParameter(3)
97     fit = z0 + z1*math.exp(z2+z3*lumi)
98    
99     diff = fit - linear
100     psdiff = diff/meanps
101     linearChiSqNDOF = f1.GetChisquare()/f1.GetNDF()
102     fitChiSqNDOF = f2.GetChisquare()/f2.GetNDF()
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     #################################################