def pair_corr(basisstates, number_particles, number_sites, number_states, eigvec, site_idx):
    operator = zeros((number_sites,2,2))
    for m in range(0,number_sites):
        operator[m,:,:]=id2
        
    operator2 = operator.copy()
    operator2[0,:,:] = real(id2+sz)/2
    operator2[site_idx,:,:] = real(id2+sz)/2
    g2 = 0
    for m in range(0,number_states):
        g2 = g2+(dot(eigvec[m].conj(),eigvec[m])* scalar_prod(basisstates[m,:], basisstates[m,:], operator2))
    return site_idx, g2
def loc_den(basisstates, number_particles, number_states, eigvec, site_idx):

    operator = zeros((2*number_particles,2,2))
    for m in range(0,2*number_particles):
        operator[m,:,:]=id2
    
    operator2 = operator.copy()
    operator2[site_idx,:,:] = real(id2+sz)/2
    local_density = 0
    for m in range(0,number_states):
        local_density = local_density+(dot(eigvec[m].conj(),eigvec[m])*scalar_prod(basisstates[m,:], basisstates[m,:], operator2))
    return site_idx, local_density