-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathConverters.py
90 lines (78 loc) · 5.25 KB
/
Converters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# A bunch of CONVERTERS for the Fit part of Alphabet.
import os
import math
from array import array
import optparse
import ROOT
from ROOT import *
import scipy
#### LINEAR ####
class LinearFit:
def __init__(self, init_var, range_min, range_max, name, Opt):
self.Opt = Opt
self.rm = range_min
self.rp = range_max
self.name = name
self.fit = TF1("LinearFit_"+self.name, "[0]+ [1]*x",self.rm,self.rp)
self.fit.SetParameter(0, init_var[0])
self.fit.SetParameter(1, init_var[1])
def Converter(self, fitter):
self.ErrUp = TF1("LinearFitErrorUp"+self.name, "[0]+ [1]*x + sqrt((x*x*[3]*[3])+(x*2*[4])+([2]*[2]))",self.rm,self.rp)
self.ErrUp.SetParameter(0, self.fit.GetParameter(0))
self.ErrUp.SetParameter(1, self.fit.GetParameter(1))
self.ErrUp.SetParameter(2, self.fit.GetParErrors()[0])
self.ErrUp.SetParameter(3, self.fit.GetParErrors()[1])
self.ErrUp.SetParameter(4, fitter.GetCovarianceMatrixElement(0,1))
self.ErrDn = TF1("LinearFitErrorDn"+self.name, "[0]+ [1]*x - sqrt((x*x*[3]*[3])+(x*2*[4])+([2]*[2]))",self.rm,self.rp)
self.ErrDn.SetParameter(0, self.fit.GetParameter(0))
self.ErrDn.SetParameter(1, self.fit.GetParameter(1))
self.ErrDn.SetParameter(2, self.fit.GetParErrors()[0])
self.ErrDn.SetParameter(3, self.fit.GetParErrors()[1])
self.ErrDn.SetParameter(4, fitter.GetCovarianceMatrixElement(0,1))
def MakeConvFactor(self, var, center):
X = var + "-" + str(center)
self.ConvFact = "({0:2.9f} + (({2})*{1:2.9f}))".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),X)
self.ConvFactUp = "({0:2.9f} + (({5})*{1:2.9f}) + (({5})*({5})*{3:2.9f}*{3:2.9f}+(({5})*2*{4:2.9f})+({2:2.9f}*{2:2.9f}))^0.5)".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),self.ErrUp.GetParameter(2),self.ErrUp.GetParameter(3),self.ErrUp.GetParameter(4),X)
self.ConvFactDn = "({0:2.9f} + (({5})*{1:2.9f}) - (({5})*({5})*{3:2.9f}*{3:2.9f}+(({5})*2*{4:2.9f})+({2:2.9f}*{2:2.9f}))^0.5)".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),self.ErrUp.GetParameter(2),self.ErrUp.GetParameter(3),self.ErrUp.GetParameter(4),X)
#### QUADRATIC ####
class QuadraticFit:
def __init__(self, init_var, range_min, range_max, name, Opt):
self.Opt = Opt
self.rm = range_min
self.rp = range_max
self.name = name
self.fit = TF1("QuadraticFit", "[0]+ [1]*x + [2]*x*x",self.rm,self.rp)
self.fit.SetParameter(0, init_var[0])
self.fit.SetParameter(1, init_var[0])
self.fit.SetParameter(2, init_var[0])
def Converter(self, fitter):
self.ErrUp = TF1("QuadrarticFitErrorUp"+self.name, "[0]+ [1]*x + [2]*x*x + sqrt(([3]*[3]) + (2*x*[6]) + (x*x*[4]*[4]) + (2*x*x*[7]) + (2*x*x*x*[8]) + (x*x*x*x*[5]*[5]))",self.rm,self.rp)
self.ErrUp.SetParameter(0, self.fit.GetParameter(0))
self.ErrUp.SetParameter(1, self.fit.GetParameter(1))
self.ErrUp.SetParameter(2, self.fit.GetParameter(2))
self.ErrUp.SetParameter(3, self.fit.GetParErrors()[0])
self.ErrUp.SetParameter(4, self.fit.GetParErrors()[1])
self.ErrUp.SetParameter(5, self.fit.GetParErrors()[2])
self.ErrUp.SetParameter(6, fitter.GetCovarianceMatrixElement(0,1))
self.ErrUp.SetParameter(7, fitter.GetCovarianceMatrixElement(0,2))
self.ErrUp.SetParameter(8, fitter.GetCovarianceMatrixElement(1,2))
self.ErrDn = TF1("QuadrarticFitErrorDn"+self.name, "[0]+ [1]*x + [2]*x*x - sqrt(([3]*[3]) + (2*x*[6]) + (x*x*[4]*[4]) + (2*x*x*[7]) + (2*x*x*x*[8]) + (x*x*x*x*[5]*[5]))",self.rm,self.rp)
self.ErrDn.SetParameter(0, self.fit.GetParameter(0))
self.ErrDn.SetParameter(1, self.fit.GetParameter(1))
self.ErrDn.SetParameter(2, self.fit.GetParameter(2))
self.ErrDn.SetParameter(3, self.fit.GetParErrors()[0])
self.ErrDn.SetParameter(4, self.fit.GetParErrors()[1])
self.ErrDn.SetParameter(5, self.fit.GetParErrors()[2])
self.ErrDn.SetParameter(6, fitter.GetCovarianceMatrixElement(0,1))
self.ErrDn.SetParameter(7, fitter.GetCovarianceMatrixElement(0,2))
self.ErrDn.SetParameter(8, fitter.GetCovarianceMatrixElement(1,2))
def MakeConvFactor(self, var, center):
X = var + "-" + str(center)
self.ConvFact = "({0:2.9f} + (({3})*{1:2.9f}) + (({3})*({3})*{2:2.9f}))".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),self.ErrUp.GetParameter(2),X)
self.ConvFactUp = "({0:2.9f} + (({9})*{1:2.9f}) + (({9})*({9})*{2:2.9f}) + (({3:2.9f}*{3:2.9f}) + (2*({9})*{6:2.9f}) + (({9})*({9})*{4:2.9f}*{4:2.9f}) + (2*({9})*({9})*{7:2.9f}) + (2*({9})*({9})*({9})*{8:2.9f}) + (({9})*({9})*({9})*({9})*{5:2.9f}*{5:2.9f}))^0.5)".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),self.ErrUp.GetParameter(2),self.ErrUp.GetParameter(3),self.ErrUp.GetParameter(4),self.ErrUp.GetParameter(5),self.ErrUp.GetParameter(6),self.ErrUp.GetParameter(7),self.ErrUp.GetParameter(8),X)
self.ConvFactDn = "({0:2.9f} + (({9})*{1:2.9f}) + (({9})*({9})*{2:2.9f}) - (({3:2.9f}*{3:2.9f}) + (2*({9})*{6:2.9f}) + (({9})*({9})*{4:2.9f}*{4:2.9f}) + (2*({9})*({9})*{7:2.9f}) + (2*({9})*({9})*({9})*{8:2.9f}) + (({9})*({9})*({9})*({9})*{5:2.9f}*{5:2.9f}))^0.5)".format(self.ErrUp.GetParameter(0),self.ErrUp.GetParameter(1),self.ErrUp.GetParameter(2),self.ErrUp.GetParameter(3),self.ErrUp.GetParameter(4),self.ErrUp.GetParameter(5),self.ErrUp.GetParameter(6),self.ErrUp.GetParameter(7),self.ErrUp.GetParameter(8),X)
#### CUBIC ####
#### LOGARITHMIC ####
#### EXPONENTIAL ####
#### GAUSSIAN ####
#CUSTOM =========--------------=============------------=============-------------===============