Example #1
0
    #gamma = 1.0/1.547
    gamma = 1.0/10.547
    p_over_q = 1.01
    A = 1.0
    deltaM = 0.4
    deltaG = 0.0

    charges = [[+1,+1], [-1,-1], [+1,-1], [-1,+1]]

    maxes = []

    for i in range(0,4):

        q1 = charges[i][0]
        q2 = charges[i][1]
        N = pdfs.pdf_bmixing(deltat,[gamma,p_over_q,deltaM,deltaG,q1,q2])

        maxes.append(max(N))

        subplots[0][i].plot(deltat,N,'-',markersize=2)

    max_prob = max(maxes)

    #'''
    events = [np.array([]),np.array([]),np.array([]),np.array([])]
    n=0
    nevents = 1000
    print "Generating %d events." % (nevents)
    while n<nevents:

        if n%1000==0:
Example #2
0
def main():
    
    ############################################################################
    # Make a figure on which to plot stuff.
    # This would be the same as making a TCanvas object.
    ############################################################################
    figs = []
    subplots = []
    for i in xrange(2):
        figs.append(plt.figure(figsize=(8,6),dpi=100,facecolor='w',edgecolor='k'))
        subplots.append([])
        for j in range(0,4):
            subplots[i].append(figs[i].add_subplot(2,2,j+1))

    ############################################################################
    # Generate values drawn from a normal (Gaussian) distribution.
    ############################################################################
    deltat_min = -20
    deltat_max =  20
    deltat_range =  deltat_max-deltat_min

    deltat_mc = []
    for i in range(0,4):
        deltat_mc.append(deltat_range*np.random.rand(10000) + deltat_min)

    print "deltat MC: %d" % (len(deltat_mc))

    deltat = np.linspace(deltat_min,deltat_max,1000)

    gamma = 1.0/1.547
    p_over_q = 1.01
    A = 1.0
    deltaM = 0.4
    deltaG = 0.0

    charges = [[+1,+1], [-1,-1], [+1,-1], [-1,+1]]

    maxes = []

    for i in range(0,4):

        q1 = charges[i][0]
        q2 = charges[i][1]
        N = pdfs.pdf_bmixing(deltat,[gamma,p_over_q,deltaM,deltaG,q1,q2])

        maxes.append(max(N))

        subplots[0][i].plot(deltat,N,'-',markersize=2)

    max_prob = max(maxes)

    #'''
    events = [np.array([]),np.array([]),np.array([]),np.array([])]
    n=0
    nevents = 1000
    print "Generating %d events." % (nevents)
    while n<nevents:

        if n%1000==0:
            print n

        for i in range(0,4):

            q1 = charges[i][0]
            q2 = charges[i][1]

            val = deltat_range*np.random.rand()+deltat_min

            prob = pdfs.pdf_bmixing(val,[gamma,p_over_q,deltaM,deltaG,q1,q2])

            test = max_prob*np.random.rand()
            
            if test<prob:
                events[i] = np.append(events[i],val)
                n += 1

    for i in range(0,4):
        #subplots[1][i].hist(events[i],bins=50)
        figs[1].add_subplot(2,2,i+1)
        lch.hist_err(events[i],bins=50)
        subplots[1][i].set_xlim(deltat_min,deltat_max)
        subplots[1][i].set_ylim(0)
        #subplots[1][i].set_ylim(0,nevents/16)

    Npp = len(events[0])
    Nmm = len(events[1])
    Npm = len(events[2])
    Nmp = len(events[3])

    print "%d %d %d %d" % (Npp,Nmm,Npm,Nmp)

    Acp = (Npp-Nmm)/float(Npp+Nmm) 
    deltaAcp = np.sqrt((sqrt(Npp)/Npp)**2 + (sqrt(Nmm)/Nmm)**2)

    print "Acp: %f +/- %f" % (Acp,deltaAcp)

    Acp = 2*(1-np.abs(1.0/p_over_q))

    print "Acp: %f" % (Acp)
    #'''

    # Fit function.
    gamma = 1.0/1.547
    p_over_q = 1.01
    A = 1.0
    deltaM = 0.4
    deltaG = 0.0
    #N = pdfs.pdf_bmixing(deltat,[gamma,p_over_q,deltaM,deltaG,q1,q2])
    n0 = Npp
    n1 = Nmm
    n2 = Npm 
    n3 = Nmp
    p0 = [gamma,p_over_q,deltaM,deltaG,n0,n1,n2,n3]
    print p0
    #p1 = sp.optimize.fmin(pdfs.extended_maximum_likelihood_function,p0,args=(events,deltat_mc), maxiter=10000, maxfun=10000)

    #print p1

    data = [events,deltat_mc]
    m = minuit.Minuit(pdfs.extended_maximum_likelihood_function_minuit,p=p0)
    print m.values
    m.migrad()

    # Need this command to display the figure.
    plt.show()
def main():
    
    ############################################################################
    # Make a figure on which to plot stuff.
    # This would be the same as making a TCanvas object.
    ############################################################################
    figs = []
    subplots = []
    for i in xrange(1):
        figs.append(plt.figure(figsize=(8,6),dpi=100,facecolor='w',edgecolor='k'))
        subplots.append([])
        for j in range(0,4):
            subplots[i].append(figs[i].add_subplot(2,2,j+1))

    ############################################################################
    # Generate values drawn from a normal (Gaussian) distribution.
    ############################################################################
    deltat_min = -20
    deltat_max =  20
    deltat_range =  deltat_max-deltat_min

    deltat_mc = []
    for i in range(0,4):
        deltat_mc.append(deltat_range*np.random.rand(10000) + deltat_min)

    print "deltat MC: %d" % (len(deltat_mc))

    deltat = np.linspace(deltat_min,deltat_max,1000)

    gamma = 1.0/1.547
    p_over_q = 1.01
    A = 1.0
    deltaM = 0.4
    deltaG = 0.0

    charges = [[+1,+1], [-1,-1], [+1,-1], [-1,+1]]

    maxes = []

    for i in range(0,4):

        q1 = charges[i][0]
        q2 = charges[i][1]
        N = pdfs.pdf_bmixing(deltat,[gamma,p_over_q,deltaM,deltaG,q1,q2])

        maxes.append(max(N))

        subplots[0][i].plot(deltat,N,'-',markersize=2)

    max_prob = max(maxes)

    '''
    events = [np.array([]),np.array([]),np.array([]),np.array([])]
    n=0
    nevents = 100
    print "Generating %d events." % (nevents)
    while n<nevents:

        if n%1000==0:
            print n

        for i in range(0,4):

            q1 = charges[i][0]
            q2 = charges[i][1]

            val = deltat_range*np.random.rand()+deltat_min

            prob = pdfs.pdf_bmixing(val,[gamma,p_over_q,deltaM,deltaG,q1,q2])

            test = max_prob*np.random.rand()
            
            if test<prob:
                events[i] = np.append(events[i],val)
                n += 1

    for i in range(0,4):
        #subplots[1][i].hist(events[i],bins=50)
        figs[1].add_subplot(2,2,i+1)
        lch.hist_err(events[i],bins=50)
        subplots[1][i].set_xlim(deltat_min,deltat_max)
        subplots[1][i].set_ylim(0)
        #subplots[1][i].set_ylim(0,nevents/16)

    Npp = len(events[0])
    Nmm = len(events[1])
    Npm = len(events[2])
    Nmp = len(events[3])

    print "%d %d %d %d" % (Npp,Nmm,Npm,Nmp)

    Acp = (Npp-Nmm)/float(Npp+Nmm) 
    deltaAcp = np.sqrt((sqrt(Npp)/Npp)**2 + (sqrt(Nmm)/Nmm)**2)

    print "Acp: %f +/- %f" % (Acp,deltaAcp)

    Acp = 2*(1-np.abs(1.0/p_over_q))

    print "Acp: %f" % (Acp)
    '''

    '''
    # Fit function.
    gamma = 1.0/1.547
    p_over_q = 1.01
    A = 1.0
    deltaM = 0.4
    deltaG = 0.0
    #N = pdfs.pdf_bmixing(deltat,[gamma,p_over_q,deltaM,deltaG,q1,q2])
    n0 = Npp
    n1 = Nmm
    n2 = Npm 
    n3 = Nmp
    p0 = [gamma,p_over_q,deltaM,deltaG,n0,n1,n2,n3]
    print p0
    #p1 = sp.optimize.fmin(pdfs.extended_maximum_likelihood_function,p0,args=(events,deltat_mc), maxiter=10000, maxfun=10000)

    #print p1

    #data = [events,deltat_mc]
    #m = minuit.Minuit(pdfs.extended_maximum_likelihood_function_minuit,p=p0)
    #print m.values
    #m.migrad()
    '''

    # Need this command to display the figure.
    plt.show()