Пример #1
0
def correct_orbit(f):
    orm = hla.orm.Orm([], [])
    if not os.path.exists(f): return True
    orm.load(f)
    hla.reset_trims()
    time.sleep(5)
    npoint, nbpm, ntrim = np.shape(orm._rawmatrix)
    bpm = []
    for c in range(10):
        cc = "C%02d" % c
        b = hla.getGroupMembers(['*', 'BPMX', cc], op='intersection')
        print cc, b
        bpm.extend(b)
    print len(bpm), bpm
    ntrim_used = ntrim
    m = np.zeros((len(bpm), ntrim_used), 'd')
    sel = [0] * nbpm
    bpmpv = []
    bpmfullpv = [b[2] for i, b in enumerate(orm.bpm)]
    for i, b in enumerate(orm.bpm):
        if not b[0] in bpm: continue
        sel[i] = 1
        bpmpv.append(b[2])
    v0 = np.array(hla.caget(bpmfullpv))
    v = np.array(hla.caget(bpmpv))
    plt.clf()
    plt.plot(v0, 'r-')
    plt.plot(v, 'ro')
    plt.savefig("orbit-00.png")
    m = np.compress(sel, orm.m[:, :ntrim_used], axis=0)
    print np.shape(m)
    #u,s,vh = np.linalg.svd(m)
    #print u, s, vh
    dk, resids, rank, s = np.linalg.lstsq(m, -1.0 * v)
    print dk
    trimpv = [t[3] for i, t in enumerate(orm.trim)]
    print[t[0] for i, t in enumerate(orm.trim)]

    hla.caput(trimpv[:ntrim_used], dk)
    for i in range(1, 10):
        time.sleep(2)
        plt.clf()
        v1 = np.array(hla.caget(bpmfullpv))
        plt.plot(v1, '-o')
        plt.savefig("orbit-%02d.png" % i)
Пример #2
0
def correct_orbit(f):
    orm = hla.orm.Orm([], [])
    if not os.path.exists(f): return True
    orm.load(f)
    hla.reset_trims()
    time.sleep(5)
    npoint, nbpm, ntrim = np.shape(orm._rawmatrix)
    bpm = []
    for c in range(10):
        cc = "C%02d" % c
        b = hla.getGroupMembers(['*', 'BPMX', cc], op='intersection')
        print cc,b
        bpm.extend(b)
    print len(bpm), bpm
    ntrim_used = ntrim
    m = np.zeros((len(bpm), ntrim_used), 'd')
    sel = [0] * nbpm
    bpmpv = []
    bpmfullpv = [b[2] for i,b in enumerate(orm.bpm)]
    for i,b in enumerate(orm.bpm):
        if not b[0] in bpm: continue
        sel[i] = 1
        bpmpv.append(b[2])
    v0 = np.array(hla.caget(bpmfullpv))
    v = np.array(hla.caget(bpmpv))
    plt.clf()
    plt.plot(v0, 'r-')
    plt.plot(v, 'ro')
    plt.savefig("orbit-00.png")
    m = np.compress(sel, orm.m[:,:ntrim_used], axis=0)
    print np.shape(m)
    #u,s,vh = np.linalg.svd(m)
    #print u, s, vh
    dk, resids, rank, s = np.linalg.lstsq(m, -1.0*v)
    print dk
    trimpv = [t[3] for i,t in enumerate(orm.trim)]
    print [t[0] for i,t in enumerate(orm.trim)]
Пример #3
0
    hla.catools.caput(trim1+trim2, [0.0]*(len(trim1) + len(trim2)))

    time.sleep(4)

    v0 = hla.getOrbit('P*', spos=True)

    ## part
    #bpm = hla.getElements('P*C1[12]*')
    #trimx = hla.getGroupMembers(['C1[0-9]', 'HCOR'], op='intersection')
    #trimy = hla.getGroupMembers(['C1[0-9]', 'VCOR'], op='intersection')
    #hla.correctOrbit([e.name for e in bpm], [e.name for e in trimx], plane='H')
    #time.sleep(4)
    #hla.correctOrbit([e.name for e in bpm], [e.name for e in trimy], plane='V')
    #time.sleep(4)

    bpm = hla.getElements('P*')
    trim = hla.getGroupMembers(['*', '[HV]COR'], op='intersection')
    print "BPM=", len(bpm), " Trim=", len(trim)
    hla.correctOrbit([e.name for e in bpm], [e.name for e in trim])
    time.sleep(4)
    
    v1 = hla.getOrbit('P*', spos=True)
    plt.clf()
    ax = plt.subplot(211)
    fig = plt.plot(v0[:,-1], v0[:,0], 'r-x', label='X')
    fig = plt.plot(v0[:,-1], v0[:,1], 'g-x', label='Y')
    ax = plt.subplot(212)
    fig = plt.plot(v1[:,-1], v1[:,0], 'r-x', label='X')
    fig = plt.plot(v1[:,-1], v1[:,1], 'g-x', label='Y')
    plt.savefig("hla_tut_orbit_correct.png")