5 def landau(x, a, mu, sigma):
7 if isinstance(x, np.ndarray):
8 return np.array([landau(xi, a, mu, sigma)
for xi
in x])
9 elif isinstance(x, pd.Series):
10 return np.array([landau(xi, a, mu, sigma)
for xi
in x.values])
12 from ROOT
import TMath
13 return a * TMath.Landau(x, mu, sigma,
False)
16 def landau_with_gaus(x, a, mu, sigma, b, c, d):
18 if isinstance(x, np.ndarray):
19 from ROOT
import TMath
20 return np.convolve([a * TMath.Landau(xi, mu, sigma,
False)
21 for xi
in x], [b * TMath.Gaus(xi, c, d,
False)
for xi
in x],
"same")
26 def gumbel(x, mu, sigma, a):
29 return a * 1 / sigma * np.exp(- (z + np.exp(-z)))
32 def norm(x, a, mu, sigma):
34 return a * np.exp(-(x - mu) ** 2 / (2 * sigma ** 2))
37 def bifur_norm(x, a, mu, sigma_l, sigma_r):
39 if isinstance(x, np.ndarray):
40 return np.array([bifur_norm(xi, a, mu, sigma_l, sigma_r)
for xi
in x])
44 return norm(x, a, mu, sigma_l)
46 return norm(x, a, mu, sigma_r)
49 def double_norm(x, a, mu, sigma, b, mu2, sigma2):
51 return norm(x, a, mu, sigma) + norm(x, b, mu2, sigma2)
54 def norm_plus_lin(x, a, mu, sigma, b, c):
56 return norm(x, a, mu, sigma) + b * x + c
59 def inverse_squared(x, a, b, c, d):
61 return a / (x - b) ** 2 + c + d * x
64 def inverse_sqrt(x, a, b, c, d):
65 return a / (np.sqrt(x - b)) + c + d * x