Esempio n. 1
0
    def __init__(self, params):
        # https://github.com/rmanzoni/triggertools/blob/master/objects/FitFunctions.py#L153

        alpha = params['alpha']
        sigma = params['sigma']
        norm = params['norm']
        m0 = params['m_{0}']
        n = params['n']

        sqrtPi2 = sqrt(pi / 2)
        sqrt2 = sqrt(2.)
        absSig = abs(sigma)
        absAlpha = abs(alpha / absSig)
        a = (n / absAlpha)**n * TMath.Exp(-0.5 * absAlpha * absAlpha)
        b = absAlpha - n / absAlpha
        arg = absAlpha / sqrt2
        erf = 1 if arg > 5. else -1 if arg < -5. else TMath.Erf(arg)

        leftArea = (1. + erf) * sqrtPi2
        rightArea = (a * 1. / (absAlpha - b)**(n - 1)) / (n - 1)
        area = leftArea + rightArea

        self.norm = norm
        self.alpha = alpha
        self.sigma = sigma
        self.m0 = m0
        self.nm1 = n - 1
        self.absAlpha = absAlpha
        self.b = b
        self.sqrt2 = sqrt2
        self.norm1 = norm * sqrtPi2 / area
        self.norm2 = norm * a / (1 - n) / area
        self.sigma1 = absSig * alpha / abs(alpha)
        self.A = norm * leftArea / area - self.norm2 / (absAlpha - b)**self.nm1
Esempio n. 2
0
 def eval(self, x):
     t = (x - self.m0) / self.sigma1
     if t <= self.absAlpha:
         arg = t / self.sqrt2
         erf = 1 if arg > 5. else -1 if arg < -5. else TMath.Erf(arg)
         return self.norm1 * (1 + erf)
     else:
         return self.A + self.norm2 / (t - self.b)**self.nm1
Esempio n. 3
0
def err_func(p0, p1, p2, p3, p4, x):
    return p2 + p3 * TMath.Erf((p4 * x - p1) / p0)
Esempio n. 4
0
def normCDF(x, par):
    mu = par[0]
    sigma = par[1]
    return 0.5 * (1.0 + TMath.Erf((x[0] - mu) / (math.sqrt(2.0) * sigma)))
Esempio n. 5
0
def normCDF(x, par):
    return (0.5 * par[2] * (1.0 + TMath.Erf((x[0] - par[0]) / (math.sqrt(2.0) * par[1]))) + par[3])
Esempio n. 6
0
c1 = canvas("large")
F = F1 = Frame("200 PU t#bar{t}", "PU", 0., 320., "# reconstructed vertices", 0., 160)
F1.add(hreal3d, "fullcircle", color=1,  label="3d matched")
F1.add(hreal4d, "fullcircle", color=2,  label="4d matched")
#F1.add(hsplit3d, "fullcircle",  label="3d", add_to_legend = False)
#F1.add(hsplit4d, "fullcircle",  label="4d")
#F1.add(hother3d, "fullcircle",  label="3d")
#F1.add(hother4d, "fullcircle",  label="4d")
F1.add(hfake4d, "opencircle", color=2, label="4d fake")
F1.add(hfake3d, "opencircle", color=1, label="3d fake")

if True:
    sigmaz=4.26 # beamspot
    dzeff = 0.018
    alpha=TMath.Erf(dzeff/sigmaz/2.)
    epsilon = 0.70
    print alpha
        
    #lf3d = TF1("f","x*%f-0.5*%f*x*x"%(epsilon, epsilon**2*alpha),0., 300.)
    lf3d = TF1("f","x*[0]-0.5*[1]*x*x",0., 300.)
    lf3d.SetParameter(0, epsilon)
    lf3d.SetParameter(1,  epsilon**2*alpha)
    lf3d.SetLineColor(1)
    lf3d.SetLineWidth(1)
    lf3d.SetLineStyle(2)
    hreal3d.Fit(lf3d, "")
    #lf3d.Draw("same")
    eff3d_200 =  lf3d.GetParameter(0) -0.5 * lf3d.GetParameter(1)*200
    
    dzeff = 0.0185
Esempio n. 7
0
def fitFuncErf(xVal, par):

    return par[3]+par[0]*(1.+TMath.Erf((xVal[0]-par[1])/par[2]/TMath.Sqrt(2.)))