Esempio n. 1
0
def prop_trace(prop_list, aq, sin=True):
    "Trace of qslash*inv(prop)*(1/12q^2). Supports two forms of q."
    N = len(prop_list)
    prop_inv = inv(sum(prop_list)/N)
    qslash = dw.slash(aq)
    qslash_sin = dw.slash(np.sin(aq))
    qsquared = dw.inner(aq)
    qsquared_sin = dw.inner(np.sin(aq))
    if sin:
        return (1./12)*trace(dot(qslash_sin, prop_inv)).imag/qsquared_sin
    else:
        return (1./12)*trace(dot(qslash, prop_inv)).imag/qsquared
Esempio n. 2
0
def bilinear_Lambdas(Data):
    # type check? data loaded?
    amputated = amputate_bilinears(Data.inprop_list,
                                    Data.outprop_list,
                                    Data.bilinear_array)
                                    
    # Include Tr[qslash*inv(prop)]
    # Are you matching momenta to the prop correctly?
    Data.prop_trace_in = prop_trace(Data.inprop_list, Data.ap, sin=True)*Data.V
    #Data.prop_trace_out = prop_trace(Data.outprop_list, Data.ap2, sin=True)*Data.V
    Data.prop_trace_in2 = prop_trace(Data.inprop_list, Data.ap, sin=False)*Data.V
    #Data.prop_trace_out2 = prop_trace(Data.outprop_list, Data.ap2, sin=False)*Data.V

    
    norm = Data.V/12.
    Lambda = lambda x, y: (trace(dot(dw.hc(x), y)).real)*norm
    Data.Lambda = map(Lambda, Gc, amputated)

    # For the (X, g) schemes.
    Data.Lambda_V = (Data.Lambda[1] + Data.Lambda[2] + Data.Lambda[4] +
                     Data.Lambda[8])*(1./4)   
    Data.Lambda_A = (Data.Lambda[14] + Data.Lambda[13] + Data.Lambda[11] +
                     Data.Lambda[7])*(1./4)
    Data.Lambda_VpA = (Data.Lambda[1] + Data.Lambda[2] + Data.Lambda[4] +
                       Data.Lambda[8] + Data.Lambda[14] + Data.Lambda[13] +
                       Data.Lambda[11] + Data.Lambda[7])*(1./8)
    Data.Lambda_VmA = 2*(Data.Lambda_V - Data.Lambda_A)/\
                        (Data.Lambda_V + Data.Lambda_A)
    Data.Lambda_PmS = 2*(Data.Lambda[15] - Data.Lambda[0])/\
                        (Data.Lambda[15] + Data.Lambda[0])
    Data.Lambda_T = (Data.Lambda[3] + Data.Lambda[5] + Data.Lambda[6] +
                     Data.Lambda[9] + Data.Lambda[10] + Data.Lambda[12])/6.
    # For the (X, q) schemes.
    aq = Data.aq
    Gmu = (amputated[1], amputated[2], amputated[4], amputated[8])
    qmuGmu = sum([aq[i]*Gmu[i] for i in range(4)])
    Data.Vq = (trace(dot(qmuGmu, dw.slash(aq))).real)*norm/Data.apSq
    Gmu5 = (amputated[14], -amputated[13], amputated[11], -amputated[7])
    qmuGmu5 = sum([aq[i]*Gmu5[i] for i in range(4)])
    tmp = reduce(dot, [qmuGmu5, Gc[15], dw.slash(aq)]).real
    Data.Vq5 = trace(tmp*norm)/Data.apSq
    Data.Vq_ = Data.Vq
    Data.Vq = (Data.Vq + Data.Vq5)/2

    # Z-factors.
    Data.Z_S = dict(g=None, q=None)
    Data.Z_T = dict(g=None, q=None)
    Data.Z_S['g'] = Data.Lambda_VpA/Data.Lambda[0]
    Data.Z_S['q'] = Data.Vq/Data.Lambda[0]
    Data.Z_T['g'] = Data.Lambda_VpA/Data.Lambda_T
    Data.Z_T['q'] = Data.Vq/Data.Lambda_T
Esempio n. 3
0
def proj_q5(amputated, aq):
    "Contract amputated fourquark correlator w/ qslash5 x qslash5 projector."
    qslash5 = dot(dw.slash(aq), Gc[15])
    tmp = tensordot(qslash5, amputated, ([0,1], [1,0]))
    return tensordot(qslash5, tmp, ([0,1], [1,0]))
Esempio n. 4
0
def proj_q(amputated, aq):
    "Contract amputated fourquark correlator w/ qslash x qslash projector."
    qslash = dw.slash(aq)
    tmp = tensordot(qslash, amputated, ([0,1], [1,0]))
    return tensordot(qslash, tmp, ([0,1], [1,0]))
Esempio n. 5
0
 def Vq5(amputated):
     Gmu5 = (amputated[14], -amputated[13], amputated[11], -amputated[7])
     qmuGmu5 = sum([aq[i]*Gmu5[i] for i in range(4)])
     tmp = reduce(dot, [qmuGmu5, Gc[15], dw.slash(aq)]).real
     return trace(tmp*norm)/Data.apSq
Esempio n. 6
0
 def Vq(amputated):
     Gmu = (amputated[1], amputated[2], amputated[4], amputated[8])
     qmuGmu = sum([aq[i]*Gmu[i] for i in range(4)])
     return (trace(dot(qmuGmu, dw.slash(aq))).real)*norm/apSq