Esempio n. 1
0
 def test_extended_ulh(self):
     eg = Extended(gaussian)
     lh = UnbinnedLH(eg, self.data, extended=True, extended_bound=(-20, 20))
     minuit = Minuit(lh, mean=4.5, sigma=1.5, N=19000.,
                     pedantic=False, print_level=0)
     minuit.migrad()
     assert_allclose(minuit.values['N'], 20000, atol=sqrt(20000.))
     assert minuit.migrad_ok()
Esempio n. 2
0
 def test_extended_ulh_2(self):
     eg = Extended(gaussian)
     lh = UnbinnedLH(eg, self.data, extended=True)
     minuit = Minuit(lh,
                     mean=4.5,
                     sigma=1.5,
                     N=19000.,
                     pedantic=False,
                     print_level=0)
     minuit.migrad()
     assert (minuit.migrad_ok())
     assert_almost_equal(minuit.values['N'], 20000, delta=sqrt(20000.))
Esempio n. 3
0
from iminuit import Minuit
from probfit import UnbinnedLH, gaussian, Extended
from matplotlib import pyplot as plt
from numpy.random import randn

data = randn(1000) * 2 + 1

ulh = UnbinnedLH(gaussian, data)
m = Minuit(ulh, mean=0., sigma=0.5)

plt.figure(figsize=(8, 6))
plt.subplot(221)
ulh.draw(m)
plt.title('Unextended Before')

m.migrad()  # fit

plt.subplot(222)
ulh.draw(m)
plt.title('Unextended After')

#Extended

data = randn(2000) * 2 + 1
egauss = Extended(gaussian)
ulh = UnbinnedLH(egauss, data, extended=True, extended_bound=(-10., 10.))
m = Minuit(ulh, mean=0., sigma=0.5, N=1800.)

plt.subplot(223)
ulh.draw(m)
plt.title('Extended Before')
# <codecell>

#you can define your pdf manually like this
def my_gauss(x, mu, sigma):
    return exp(-0.5*(x-mu)**2/sigma**2)/(sqrt(2*pi)*sigma)

# <codecell>

#probfit use the same describe magic as iminuit
#Build your favorite cost function like this
#Notice no RooRealVar etc. It use introspection to
#find parameters
#the only requirement is that the first argument is
#in independent variable the rest are parameters
ulh = UnbinnedLH(my_gauss, gdata)
describe(ulh)

# <codecell>

m = Minuit(ulh, mu=0.2, sigma=1.5)
m.set_up(0.5) #remember up is 0.5 for likelihood and 1 for chi^2
ulh.show(m)

# <codecell>

m.migrad();
ulh.show(m)

# <markdowncell>
# <codecell>

#you can define your pdf manually like this
def my_gauss(x, mu, sigma):
    return exp(-0.5*(x-mu)**2/sigma**2)/(sqrt(2*pi)*sigma)

# <codecell>

#probfit use the same describe magic as iminuit
#Build your favorite cost function like this
#Notice no RooRealVar etc. It use introspection to
#find parameters
#the only requirement is that the first argument is
#in independent variable the rest are parameters
ulh = UnbinnedLH(my_gauss, gdata)
describe(ulh)

# <codecell>

m = Minuit(ulh, mu=0.2, sigma=1.5)
m.set_up(0.5) #remember up is 0.5 for likelihood and 1 for chi^2
ulh.show(m)

# <codecell>

m.migrad();
ulh.show(m)

# <markdowncell>
Esempio n. 6
0
pdf= AddPdfNorm(g0,g1)
describe(pdf)

# <codecell>

seed(0)
toydata = gen_toy(pdf, 1000,(-10,10), m0=-2, m1=2, s0=1, s1=1, f_0=0.3, quiet=False)

# <codecell>

inipars= dict(m0=0, m1=0, s0=1, s1=1, f_0=0.5, error_m0=0.1, error_m1=0.1, error_s0=0.1, error_s1=0.1, error_f_0=0.1)

# <codecell>

# Normal fit
uh1= UnbinnedLH(pdf, toydata)
m1= Minuit(uh1, print_level=1, **inipars)
m1.migrad();
uh1.draw();
print m1.values

# <codecell>

# Blind one parameter
uh2= UnbinnedLH( BlindFunc(pdf, toblind='m1', seedstring='some_random_stuff', width=0.5, signflip=False), toydata)
m2= Minuit(uh2, print_level=1, **inipars)
m2.migrad();
uh2.draw();
print m2.values

# <codecell>
Esempio n. 7
0
# ###Fitting

# <codecell>

from iminuit import Minuit
from probfit import UnbinnedLH, gaussian

# <codecell>

data = randn(10000)
hist(data, bins=100, histtype='step')

# <codecell>

ulh = UnbinnedLH(gaussian, data)
ulh.draw(args=dict(mean=1.2, sigma=0.7))

# <codecell>

m = Minuit(ulh, mean=1.2, sigma=0.7)

# <codecell>

m.migrad()

# <codecell>

print m.values
print m.errors
ulh.draw(m)
Esempio n. 8
0
def model(fit_range, bin):
    nrm_bkg_pdf = Normalized(rename(exp, ['x', 'l%d' % bin]), fit_range)
    ext_bkg_pdf = Extended(nrm_bkg_pdf, extname='Ncomb_%d' % bin)

    ext_sig_pdf = Extended(rename(gaussian, ['x', 'm%d' % bin, "sigma%d" % bin]), extname='Nsig_%d' % bin)
    tot_pdf = AddPdf(ext_bkg_pdf, ext_sig_pdf)
    print('pdf: {}'.format(describe(tot_pdf)))

    return tot_pdf


fit_range = (2900, 3300)

mod_1 = model(fit_range, 1)
lik_1 = UnbinnedLH(mod_1, tot_m, extended=True)
mod_2 = model(fit_range, 2)
lik_2 = UnbinnedLH(mod_2, tot_u, extended=True)
sim_lik = SimultaneousFit(lik_1, lik_2)
describe(sim_lik)

pars = dict(l1=0.002, Ncomb_1=1000, m1=3100, sigma1=10, Nsig_1=1000, l2=0.002, Ncomb_2=1000, m2=3100, sigma2=10,
            Nsig_2=1000)
minuit = Minuit(sim_lik, pedantic=False, print_level=0, **pars)

# In[8]:


if do_probfit:
    start = time.time()
    minuit.migrad()
Esempio n. 9
0
from iminuit import Minuit
from probfit import UnbinnedLH, gaussian, SimultaneousFit, rename
from matplotlib import pyplot as plt
from numpy.random import randn, seed

seed(0)
width = 2.
data1 = randn(1000) * width + 1
data2 = randn(1000) * width + 2

#two gaussian with shared width
pdf1 = rename(gaussian, ('x', 'mu_1', 'sigma'))
pdf2 = rename(gaussian, ('x', 'mu_2', 'sigma'))

lh1 = UnbinnedLH(pdf1, data1)
lh2 = UnbinnedLH(pdf2, data2)

simlh = SimultaneousFit(lh1, lh2)

m = Minuit(simlh, mu_1=1.2, mu_2=2.2, sigma=1.5)

plt.figure(figsize=(8, 3))
plt.subplot(211)
simlh.draw(m)
plt.suptitle('Before')

m.migrad()  # fit

plt.figure(figsize=(8, 3))
plt.subplot(212)
simlh.draw(m)
Esempio n. 10
0
File: ulh.py Progetto: bks/probfit
from iminuit import Minuit
from probfit import UnbinnedLH, gaussian, Extended
from matplotlib import pyplot as plt
from numpy.random import randn

data = randn(1000)*2 + 1

ulh = UnbinnedLH(gaussian, data)
m = Minuit(ulh, mean=0., sigma=0.5)

plt.figure(figsize=(8, 6))
plt.subplot(221)
ulh.draw(m)
plt.title('Unextended Before')

m.migrad() # fit

plt.subplot(222)
ulh.draw(m)
plt.title('Unextended After')

#Extended

data = randn(2000)*2 + 1
egauss = Extended(gaussian)
ulh = UnbinnedLH(egauss, data, extended=True, extended_bound=(-10.,10.))
m = Minuit(ulh, mean=0., sigma=0.5, N=1800.)

plt.subplot(223)
ulh.draw(m)
plt.title('Extended Before')