def setInitHall(init_hall=0):

    b0_hall = GetHall(dipole_pair[0])
    b1_hall = GetHall(dipole_pair[1])
    overshoot_margin = 0.001
    print("Beginning initializing dipoles...")
    while ((b0_hall - init_hall) < overshoot_margin
           or (b1_hall - init_hall) < overshoot_margin):

        diff = max(abs(b0_hall - init_hall), abs(b1_hall - init_hall))
        b0_i = GetMagnet(dipole_pair[0])

        dI = 0.02
        if (diff >= 0.001):
            dI = 0.1

        elif (diff > 0.00005):
            dI = 0.01
        # change b0 and compare
        SetMagnet(dipole_pair[0], b0_i + dI)
        #saving the new actual hall value
        sleep(3)
        b0_hall = GetHall(dipole_pair[0])
        SetMagnet(dipole_pair[1], b0_i + dI)
        b1_hall = GetHall(dipole_pair[1])

        print(f"Fields: {b0_hall:.6f}, {b1_hall:.6f}")

    time1 = CycleMagnet(dipole_pair[0])
    time2 = CycleMagnet(dipole_pair[1])
    sleep(np.max([time1, time2]) + 30)
    cont = input("Once magnets have settled, enter 'y' to continue...")

    if (cont != 'y'):
        print("Exiting...")
        exit()

    print("Magnets cycled above initial Hall values.")

    while (abs(b0_hall - init_hall) > dHall):
        diff = abs(b0_hall - init_hall)

        dI = 0.02
        #this takes too long if they're really far so I'm gona add this for now
        if (diff >= 0.001):
            dI = 0.1

        elif (diff > 0.00005):
            dI = 0.01

        b0_i = GetMagnet(dipole_pair[0])

        if (b0_hall > init_hall):
            # change b0 and compare
            SetMagnet(dipole_pair[0], b0_i - dI)
            #saving the new actual hall value
            sleep(3)
            b0_hall = GetHall(dipole_pair[0])
    print("B0 set to initial value.")
    matchHall()
Exemple #2
0
def matchNMR():
    ''' Matches the NMR fields by lowering the highest current between B1 and B2 slowly until criteria is met '''
    print("Getting the starting NMR probe values...")
    #saving the new actual nmr value
    #b1
    caput(set_probe, b1_probe)
    sleep(13)
    b1_nmr_h = caget(tlm_reading)
    #b2
    caput(set_probe, b2_probe)
    sleep(13)
    b2_nmr_h = caget(tlm_reading)

    #using the nmr readback and the i_cset, slowly ramp down as you check that the nmrs are close
    dNMR = 0.00001

    print("Beginning matching...")
    while (abs(b1_nmr_h - b2_nmr_h) > dNMR):
        diff = abs(b1_nmr_h - b2_nmr_h)
        dI = 0.001

        #this takes too long if they're really far so I'm gona add this for now
        if (diff >= 0.001):
            dI = 0.1

        elif (diff > 0.00005):
            dI = 0.02  # Changed from 0.01 since this is sometimes the difference between set and RD

        b1_i = GetMagnet('b1')
        b2_i = GetMagnet('b2')

        if (b1_nmr_h > b2_nmr_h):
            caput(set_probe, b1_probe)

            #decrease b1_nmr_h in small steps until it is dNMR off from b2

            # change b1 and compare
            SetMagnet('b1', b1_i - dI)
            #saving the new actual nmr value
            sleep(3)
            b1_nmr_h = caget(tlm_reading)

        elif (b1_nmr_h < b2_nmr_h):
            #go in opposite direction
            caput(set_probe, b2_probe)

            # change b2 and compare
            SetMagnet('b2', b2_i - dI)
            #saving the new actual nmr value
            sleep(3)
            b2_nmr_h = caget(tlm_reading)

        print(
            f"Fields: {b1_nmr_h:.6f}, {b2_nmr_h:.6f}, dNMR: {((b1_nmr_h - b2_nmr_h)/b1_nmr_h*100):.5f}%"
        )

    print("Done matching NMR values.")
def matchHall():

    b0_hall = GetHall(dipole_pair[0])
    b1_hall = GetHall(dipole_pair[1])

    print("Beginning matching...")
    while (abs(b0_hall - b1_hall) > dHall):
        diff = abs(b0_hall - b1_hall)

        dI = 0.02
        '''

        #this takes too long if they're really far so I'm gona add this for now
        if (diff >= 0.001):
            dI = 0.1

        elif (diff > 0.00005):
            dI = 0.01
        '''

        b0_i = GetMagnet(dipole_pair[0])
        b1_i = GetMagnet(dipole_pair[1])

        if (b0_hall > b1_hall):
            # change b0 and compare
            SetMagnet(dipole_pair[0], b0_i - dI)
            #saving the new actual hall value
            sleep(3)
            b0_hall = GetHall(dipole_pair[0])

        elif (b0_hall < b1_hall):
            # change b1 and compare
            SetMagnet(dipole_pair[1], b1_i - dI)
            #saving the new actual hall value
            sleep(3)
            b1_hall = GetHall(dipole_pair[1])

        print(
            f"Fields: {b0_hall:.6f}, {b1_hall:.6f}, dHall: {((b0_hall - b1_hall)/b0_hall*100):.5f}%"
        )

    print("Done matching Hall values.")
    'type': 'continuous',
    'domain': (-5, 5)
}, {
    'name': 'v31',
    'type': 'continuous',
    'domain': (-5, 5)
}]
space = Design_space(spaceArray)
np.set_printoptions(precision=2)

count_iter = 0
#list for corrector magnet values
magnet_values = [0 for i in range(len(magnet_list))]

#initial nominal quad values
q0_init, q1_init = GetMagnet(quad_pair[0]), GetMagnet(quad_pair[1])

while (cont == 'y'):
    if sandbox != 'y':

        #import current state
        #Get initial quad values
        #~ q1_init, q2_init, q3_init, q4_init= GetQuads()

        #Tuning Q14 and Q15
        #take picture with all at init values
        #~ SetQuads(q1_init, q2_init,  q3_init, q4_init)
        sleep(3)
        all_nom_im = SaveIm('allNom', viewer)
        sleep(2)
def scanDipoles(b_small, b_big):

    #set number of steps (from previous experience scanning although might need adjustments)
    bs_stepsize = small_step
    bb_stepsize = big_step

    #initial nominal quad values
    q0_init, q1_init = GetMagnet(quad_pair[0]), GetMagnet(quad_pair[1])
    #q2_init = GetMagnet("q11")

    for i in range(total_steps):

        print(f"Step {i+1} out of {total_steps} large steps.")
        #get initial current of dipoles
        bs_init = GetMagnet(b_small)
        bb_init = GetMagnet(b_big)

        for j in range(0,
                       int(bb_stepsize / bs_stepsize) + extra_small_step
                       ):  ## ADDED TWO MORE STEPS FOR THE FIELDS TO OVERLAP

            #changing quads and taking pictures at 4 tunes
            #take picture with all at init values
            all_nom_im = SaveIm('allNom', viewer)

            #take picture with q11 nom, q12 7/6
            #            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[0], 40)
            SetMagnet(quad_pair[1], q1_init)
            #SetMagnet("q11", q2_init)
            pos_1 = GetBeamPos(all_nom_im, viewer)
            sleep(
                5
            )  #might need to increase this if the jumps in current are big
            all_zero_im = SaveIm('Q11_40', viewer)

            #take picture with q11 8/10 and q12 nom
            SetMagnet(quad_pair[0], q0_init)
            #            SetMagnet(quad_pair[1], q1_init-17)
            SetMagnet(quad_pair[1], 20)
            #SetMagnet("q11", q2_init)
            pos_2 = GetBeamPos(all_zero_im, viewer)
            sleep(5)
            q0_half_im = SaveIm('Q13_20', viewer)

            #take picture with q11 *3/4, and q12 *11/12
            SetMagnet(quad_pair[0], 52)
            SetMagnet(quad_pair[1], 35)
            #SetMagnet("q11", 40)
            pos_3 = GetBeamPos(q0_half_im, viewer)
            sleep(5)
            q01_half_im = SaveIm('Q11_52_Q13_35', viewer)

            #return quads to original values
            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[1], q1_init)
            #SetMagnet("q11", q2_init)

            pos_4 = GetBeamPos(q01_half_im, viewer)

            #peak/intensity
            #pk_1 = pos_1[2:]
            #pk_2 = pos_2[2:]
            #pk_3 = pos_3[2:]
            #pk_4 = pos_4[2:]
            #centroid positions
            pos_1 = pos_1[0:2]
            pos_2 = pos_2[0:2]
            pos_3 = pos_3[0:2]
            pos_4 = pos_4[0:2]

            #get quadratic distance from centroids
            print(
                f"Centroids:\n({pos_1[0]:.2f}, {pos_1[1]:.2f})\n({pos_2[0]:.2f}, {pos_2[1]:.2f})\n({pos_3[0]:.2f}, {pos_3[1]:.2f})\n({pos_4[0]:.2f}, {pos_4[1]:.2f})"
            )

            distance = Dist(pos_1, pos_2, pos_3, pos_4, True)[0]
            print(f"Dist= {distance:.5f}")

            bs_hall = GetHall(b_small)
            bb_hall = GetHall(b_big)

            bs_i = GetMagnet(b_small)
            bb_i = GetMagnet(b_big)

            #save i, hall values and distance to file
            f = open(f"{b_small}_{b_big}_Distance_{timestring}.txt", "a+")
            f.write(
                f'{bs_i:.3f}\t{bb_i:.3f}\t{bs_hall:.7f}\t{bb_hall:.7f}\t{distance:.4f}\t{pos_1[0]:.4f}\t{all_nom_im}\n'
            )
            f.close()
            #ramps down this magnet in small steps multiple of the large step
            SetMagnet(b_small, bs_init - bs_stepsize * (j + 1))

        #one magnet goes down 0.06 A, the other 0.02 A x 3
        #SetMagnet( b_big, bb_init - bb_stepsize)

        #####################

        #if (abs(bs_hall - bb_hall) > dHall):
        #if they are different, match again
        matchHall()
        #else:
        bs_hall = GetHall(b_small)
        bb_hall = GetHall(b_big)
        print(
            f"Fields: {bs_hall:.6f}, {bb_hall:.6f}, dHall: {((bs_hall - bb_hall)/bs_hall*100):.5f}%"
        )
print("Done cycling.")

cont= input("Once magnets have settled, enter 'y' to continue...")

if (cont != 'y'):
    print("Exiting...")
    exit()
'''
#match Hall probe readings
matchHall()
#init_hall= float(input("What should the initial Hall value be?"))

#setInitHall(init_hall)

#get initial values to return two for second scan
b0_init = GetMagnet(dipole_pair[0])
b1_init = GetMagnet(dipole_pair[1])

scanDipoles(dipole_pair[0], dipole_pair[1])
print(f"Done with {dipole_pair[0]} scan.")

#reset dipoles to original currents and cycle
SetMagnet(dipole_pair[0], b0_init)
SetMagnet(dipole_pair[1], b1_init)

#cycle
time1 = CycleMagnet(dipole_pair[0])
time2 = CycleMagnet(dipole_pair[1])
sleep(np.max([time1, time2]))
print("Done cycling.")
Exemple #7
0
def scanDipoles(b_small, b_big):

    #set number of steps (from previous experience scanning although might need adjustments)
    bs_stepsize = small_step
    bb_stepsize = big_step

    #initial nominal quad values
    q0_init, q1_init = GetMagnet(quad_pair[0]), GetMagnet(quad_pair[1])

    for i in range(total_steps):

        print(f"Step {i+1} out of {total_steps} large steps.")
        #get initial current of dipoles 
        bs_init = GetMagnet(b_small) 
        bb_init = GetMagnet(b_big)

        #one magnet goes down 0.06 A, the other 0.02 A x 3
        SetMagnet( b_big, bb_init - bb_stepsize)

        for j in range(0, int(bb_stepsize/bs_stepsize)): 
            #ramps down this magnet in small steps multiple of the large step
            SetMagnet( b_small,   bs_init - bs_stepsize*(j+1))

            sleep(5)        

            #changing quads and taking pictures at 4 tunes
            #take picture with all at init values
            all_nom_im= SaveIm('allNom', viewer)

            #take picture with all at zero
            SetMagnet(quad_pair[0], 0)
            SetMagnet(quad_pair[1], 0)
            pos_1= GetBeamPos(all_nom_im, viewer)
            sleep(5) #might need to increase this if the jumps in current are big
            all_zero_im= SaveIm('allZero', viewer)

            #take picture with first quad at half
            SetMagnet(quad_pair[0], q0_init/2)
            pos_2= GetBeamPos(all_zero_im, viewer)
            sleep(5)
            q0_half_im= SaveIm('q0half', viewer)

            #take picture with second quad at half
            SetMagnet(quad_pair[1], q1_init/2)
            pos_3= GetBeamPos(q0_half_im, viewer)
            sleep(5)
            q01_half_im= SaveIm('q01half', viewer)

            #return quads to original values
            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[1], q1_init)

            pos_4= GetBeamPos(q01_half_im, viewer)

            #peak/intensity
            #pk_1 = pos_1[2:]
            #pk_2 = pos_2[2:]
            #pk_3 = pos_3[2:]
            #pk_4 = pos_4[2:]
            #centroid positions
            pos_1 = pos_1[0:2]
            pos_2 = pos_2[0:2]
            pos_3 = pos_3[0:2]
            pos_4 = pos_4[0:2]

		
            #get quadratic distance from centroids
            print(f"Centroids:\n({pos_1[0]:.2f}, {pos_1[1]:.2f})\n({pos_2[0]:.2f}, {pos_2[1]:.2f})\n({pos_3[0]:.2f}, {pos_3[1]:.2f})\n({pos_4[0]:.2f}, {pos_4[1]:.2f})")            

            distance= Dist(pos_1, pos_2, pos_3, pos_4)
            print(f"Dist= {distance:.5f}")

            bs_hall = GetHall(b_small)
            bb_hall = GetHall(b_big)

            bs_i = GetMagnet(b_small)
            bb_i = GetMagnet(b_big)

            #save i, hall values and distance to file
            f= open(f"{b_small}_{b_big}_Distance_{timestring}.txt", "a+")
            f.write(f'{bs_i:.3f}\t{bb_i:.3f}\t{bs_hall:.7f}\t{bb_hall:.7f}\t{distance:.4f}\t{pos_1[0]:.4f}\t{all_nom_im}\n')
            f.close()

        #####################

        if (abs(bs_hall - bb_hall) > dHall):
            #if they are different, match again			
            matchHall()   
        else:
            print(f"Fields: {bs_hall:.6f}, {bb_hall:.6f}, dHall: {((bs_hall - bb_hall)/bs_hall*100):.5f}%")
def scanDipoles(b_small, b_big):

    #set number of steps (from previous experience scanning although might need adjustments)
    bs_stepsize = small_step
    bb_stepsize = big_step

    #initial nominal quad values
    q0_init, q1_init = GetMagnet(quad_pair[0]), GetMagnet(quad_pair[1])

    for i in range(total_steps):

        print(f"Step {i+1} out of {total_steps} large steps.")
        #get initial current of dipoles
        bs_init = GetMagnet(b_small)
        bb_init = GetMagnet(b_big)
        #SetMagnet( b_big, bb_init - bb_stepsize)
        SetMagnet(b_small, bs_init - bs_stepsize)

        #changing quads and taking pictures at 4 tunes
        #take picture with all at init values
        all_nom_im = SaveIm('allNom', viewer)

        #take picture with q14 nom, q15 *8/11
        SetMagnet(quad_pair[0], q0_init)
        SetMagnet(quad_pair[1], -15.000)
        pos_1 = GetBeamPos(all_nom_im, viewer)
        sleep(5)  #might need to increase this if the jumps in current are big
        all_zero_im = SaveIm('Q15_minus15', viewer)

        #take picture with q14 *1/2 and q15 nom
        SetMagnet(quad_pair[0], 15.000)
        SetMagnet(quad_pair[1], q1_init)
        pos_2 = GetBeamPos(all_zero_im, viewer)
        sleep(5)
        q0_half_im = SaveIm('Q14_15', viewer)

        #take picture with q14 zero, and q15 zero
        SetMagnet(quad_pair[0], 10.000)
        SetMagnet(quad_pair[1], -10.000)
        pos_3 = GetBeamPos(q0_half_im, viewer)
        sleep(5)
        q01_half_im = SaveIm('bothTen', viewer)

        #return quads to original values
        SetMagnet(quad_pair[0], q0_init)
        SetMagnet(quad_pair[1], q1_init)

        pos_4 = GetBeamPos(q01_half_im, viewer)

        #peak/intensity
        #pk_1 = pos_1[2:]
        #pk_2 = pos_2[2:]
        #pk_3 = pos_3[2:]
        #pk_4 = pos_4[2:]
        #centroid positions
        pos_1 = pos_1[0:2]
        pos_2 = pos_2[0:2]
        pos_3 = pos_3[0:2]
        pos_4 = pos_4[0:2]

        #get quadratic distance from centroids
        print(
            f"Centroids:\n({pos_1[0]:.2f}, {pos_1[1]:.2f})\n({pos_2[0]:.2f}, {pos_2[1]:.2f})\n({pos_3[0]:.2f}, {pos_3[1]:.2f})\n({pos_4[0]:.2f}, {pos_4[1]:.2f})"
        )

        distance = Dist(pos_1, pos_2, pos_3, pos_4, True)[0]
        print(f"Dist= {distance:.5f}")

        bs_hall = GetHall(b_small)
        bb_hall = GetHall(b_big)

        bs_i = GetMagnet(b_small)
        bb_i = GetMagnet(b_big)

        #save i, hall values and distance to file
        f = open(f"{b_small}_{b_big}_Distance_{timestring}.txt", "a+")
        f.write(
            f'{bs_i:.3f}\t{bb_i:.3f}\t{bs_hall:.7f}\t{bb_hall:.7f}\t{distance:.4f}\t{pos_1[0]:.4f}\t{all_nom_im}\n'
        )
        f.close()
Exemple #9
0
timestring = (datetime.datetime.now()).strftime("%m-%d_%H_%M")
"""####################################################"""
"""ramp down slowly and analyze steering from Q3 and Q4"""
#go down in small steps and record Dist AND currents (these are reproducible)
#dI = 0.03
dI = 0.01
Dmin = 0
atTune = False

while (atTune == False):

    #using the nmr readback and the i_cset, slowly ramp down as you check that the nmrs are close
    dNMR = 0.00001
    #get Is of dipoles (reproducible)
    b1_i = GetMagnet('b1')
    b2_i = GetMagnet('b2')

    caput(set_probe, b1_probe)

    SetMagnet('b1', b1_i - dI)
    SetMagnet('b2', b2_i - dI)

    sleep(10)

    #saving the new actual nmr value
    b1_nmr = caget(tlm_reading)

    caput(set_probe, b2_probe)
    #change b2 and compare
    #saving the new actual nmr value
Exemple #10
0
    'type': 'continuous',
    'domain': (-5, 5)
} for m in magnet_list]
space = Design_space(spaceArray)
np.set_printoptions(precision=2)

#list for corrector magnet values
magnet_values = [0 for i in range(len(magnet_list))]

while (cont == 'y'):
    if sandbox != 'y':

        #import current state
        #Get initial quad values
        #~ q1_init, q2_init, q3_init, q4_init= GetQuads()
        q6_init = GetMagnet('q6')
        q9_init = GetMagnet('q9')

        #Tuning Q8 and Q9
        #take picture with all at init values
        #~ SetQuads(q1_init, q2_init, 0, 0)
        #~ sleep(10)
        all_nom_im = SaveIm('allNom', viewer)
        sleep(2)

        #take picture with all at zero
        #~ SetQuads(0, 0, 0, 0)
        #~ SetMagnet('q8', 0)
        #~ SetMagnet('q9', 0)
        #~ pos_1= GetBeamPos(all_nom_im, viewer)
        #~ sleep(10) #might need to increase this if the jumps in current are big
Exemple #11
0
#getting list of quads to loop through
magnet_list = [x.lstrip().rstrip() for x in quad_list.split(",")]

#magnet_list = ['q1', 'q2', 'q3', 'q4']

timestamp = (datetime.datetime.now()).strftime("%m-%d_%H-%M")
np.set_printoptions(precision=2)

############################
###   optimizing quads   ###
############################
while (cont == 'y'):
    if count == 0:
        if sandbox != 'y':
            #get inital tune for quads and assign the phase space for each
            q_init = {q: GetMagnet(q)
                      for q in magnet_list}  #need this for final scaling
            magnet_values = [q_init[q] for q in magnet_list]
            q_ps = {
                q: [0.85 * q_init[q], 1.15 * q_init[q]]
                for q in magnet_list
            }

            # Creating GP stuff
            # Domain is phase space for each corrector magnet in Amps!
            spaceArray = [{
                'name': q,
                'type': 'continuous',
                'domain': (q_ps[q][0], q_ps[q][1])
            } for q in magnet_list]
            space = Design_space(spaceArray)
timestring = (datetime.datetime.now()).strftime("%m-%d_%H_%M")
"""####################################################"""
"""ramp down slowly and analyze steering from Q3 and Q4"""
#go down in small steps and record Dist AND currents (these are reproducible)
#dI = 0.03
dI = 0.01
Dmin = 0
atTune = False

while (atTune == False):

    #using the nmr readback and the i_cset, slowly ramp down as you check that the nmrs are close
    dNMR = 0.0002
    #get Is of dipoles (reproducible)
    b1_i = GetMagnet('b1')
    b2_i = GetMagnet('b2')

    caput(set_probe, b1_probe)

    SetMagnet('b1', b1_i - dI)
    SetMagnet('b2', b2_i - dI)

    sleep(10)

    #saving the new actual nmr value
    b1_nmr = caget(tlm_reading)

    caput(set_probe, b2_probe)
    #change b2 and compare
    #saving the new actual nmr value
Exemple #13
0
def scanDipoles(b_small, b_big):

    #set number of steps (from previous experience scanning although might need adjustments)
    bs_stepsize = small_step
    bb_stepsize = big_step

    #initial nominal quad values
    q0_init, q1_init = GetMagnet(quad_pair[0]), GetMagnet(quad_pair[1])

    for i in range(total_steps):

        print(f"Step {i+1} out of {total_steps} large steps.")
        #get initial current of dipoles
        bs_init = GetMagnet(b_small)
        bb_init = GetMagnet(b_big)

        #set NMR teslameter to read B1 probe to save time later
        caput(set_probe, b1_probe)

        for j in range(0,
                       int(bb_stepsize / bs_stepsize) +
                       4):  ## ADDED TWO MORE STEPS FOR THE FIELDS TO OVERLAP

            #changing quads and taking pictures at 4 tunes
            #take picture with all at init values
            all_nom_im = SaveIm('allNom', viewer)

            #take picture with q8 nom, q9 half
            SetMagnet(quad_pair[0], q0_init * 2 / 3)
            SetMagnet(quad_pair[1], q1_init)
            pos_1 = GetBeamPos(all_nom_im, viewer)
            sleep(
                5
            )  #might need to increase this if the jumps in current are big
            all_zero_im = SaveIm('Q3_2-3', viewer)

            #take picture with q8/2 and q9/2
            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[1], q1_init * 2 / 3)
            pos_2 = GetBeamPos(all_zero_im, viewer)
            sleep(5)
            q0_half_im = SaveIm('Q4_2-3', viewer)

            #take picture with 4/3 q8 and 5/4 q9
            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[1], -90)
            pos_3 = GetBeamPos(q0_half_im, viewer)
            sleep(5)
            q01_half_im = SaveIm('Q4_neg90', viewer)

            #return quads to original values
            SetMagnet(quad_pair[0], q0_init)
            SetMagnet(quad_pair[1], q1_init)

            pos_4 = GetBeamPos(q01_half_im, viewer)

            #centroid positions
            pos_1 = pos_1[0:2]
            pos_2 = pos_2[0:2]
            pos_3 = pos_3[0:2]
            pos_4 = pos_4[0:2]

            #get quadratic distance from centroids
            print(
                f"Centroids:\n({pos_1[0]:.2f}, {pos_1[1]:.2f})\n({pos_2[0]:.2f}, {pos_2[1]:.2f})\n({pos_3[0]:.2f}, {pos_3[1]:.2f})\n({pos_4[0]:.2f}, {pos_4[1]:.2f})"
            )

            distance = Dist(pos_1, pos_2, pos_3, pos_4)
            print(f"Dist= {distance:.5f}")

            #get NMR fields
            if (b_small == 'b1'):
                #saving the new actual nmr value of B1
                bs_nmr = caget(tlm_reading)
                #change b2 and compare
                #saving the new actual nmr value
                caput(set_probe, b2_probe)
                sleep(10)
                bb_nmr = caget(tlm_reading)
            elif (b_small == 'b2'):
                #saving the new actual nmr value of B1
                bb_nmr = caget(tlm_reading)
                #change b2 and compare
                #saving the new actual nmr value
                caput(set_probe, b2_probe)
                sleep(10)
                bs_nmr = caget(tlm_reading)

            bs_i = GetMagnet(b_small)
            bb_i = GetMagnet(b_big)

            #save i, hall values and distance to file
            f = open(f"{b_small}_{b_big}_Distance_{timestring}.txt", "a+")
            f.write(
                f'{bs_i:.3f}\t{bb_i:.3f}\t{bs_nmr:.7f}\t{bb_nmr:.7f}\t{distance:.4f}\t{pos_1[0]:.4f}\t{all_nom_im}\n'
            )
            f.close()

            #ramps down this magnet in small steps multiple of the large step
            SetMagnet(b_small, bs_init - bs_stepsize * (j + 1))

        #this magnet goes down a big step
        SetMagnet(b_big, bb_init - bb_stepsize)

        #####################

        matchNMR()
Exemple #14
0
#UNCOMMENT IF YOU ARE MANUALLY ENTERING MAGNET NAMES
#magnet_list = [x.lstrip().rstrip() for x in quad_list.split(",")]

magnet_list = ['q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7', 's1']

timestamp = (datetime.datetime.now()).strftime("%m-%d_%H-%M")
np.set_printoptions(precision=2)

############################
###   optimizing quads   ###
############################
while (cont == 'y'):
	if count == 0 :
		if sandbox != 'y':
			#get inital tune for quads and assign the phase space for each
			q_init = {q : GetMagnet(q) for q in magnet_list} #need this for final scaling
			magnet_values = [q_init[q] for q in magnet_list]

			# !! PHASE SPACE FOR 1D/not using optimal values, uncomment following line
			#q_ps = {q : [ 0.50*q_init[q] , 2.0*q_init[q] ] if q_init[q]>0 else [ 2.0*q_init[q] , 0.5*q_init[q] ] for q in magnet_list  }
			# !! PHASE SPACE MANUALLY SET, after 1D test, from nominal to optimal 
			q_ps = { q: [q_init[q]-2.0,q_init[q]+2.0] for q in magnet_list }
#			q_ps = {'q1' : [-43.698, -34.5],
#				'q2' : [ 72.684, 75.55],
#				'q3' : [ 81.86,  82.564],
#				'q4' : [-83.13, -72.716],
#				'q5' : [ 47.54,  55.68],
#				'q6' : [ 75.72,  76.18],
#				'q7' : [-26.81, -24.18]
#				}
			
Exemple #15
0
    'domain': (9, 13)
}]
space = Design_space(spaceArray)
np.set_printoptions(precision=2)

#list for corrector magnet values
magnet_values = [0 for i in range(len(magnet_list))]

while (cont == 'y'):
    if sandbox != 'y':

        #import current state
        #Get initial quad values
        q1_init, q2_init, q3_init, q4_init = GetQuads()

        q6_init = GetMagnet("q6")
        #q8_init = GetMagnet("q8")

        #Tuning Q1 and Q2
        #take picture with all at init values
        #SetQuads(q1_init, q2_init,  q3_init, q4_init)

        #~ sleep(10)
        all_nom_im = SaveIm('allNom', viewer)
        sleep(2)

        #take picture with all at zero
        #~ SetQuads(0, 0, 0, 0)
        #~ SetMagnet('q8', 0)
        #~ SetMagnet('q9', 0)
        #~ pos_1= GetBeamPos(all_nom_im, viewer)
Exemple #16
0
#spaceArray = [ {'name': m, 'type': 'continuous', 'domain': (-3, 3)} for m in magnet_list ]
spaceArray = [ {'name': 'v13', 'type': 'continuous', 'domain': (-5.0, 1.0)}, {'name': 'v31', 'type': 'continuous', 'domain': (0.3, 5.3)}]

space = Design_space(spaceArray)
np.set_printoptions(precision=2)

#list for corrector magnet values
magnet_values = [0 for i in range(len(magnet_list))]

while (cont == 'y'):
	if sandbox != 'y':

		#import current state
		#Get initial quad values
		#~ q1_init, q2_init, q3_init, q4_init= GetQuads()
		q8_init = GetMagnet('q8')
		q9_init = GetMagnet('q9')

		#Tuning Q8 and Q9
		#take picture with all at init values
		#~ SetQuads(q1_init, q2_init, 0, 0)
		#~ sleep(10)
		all_nom_im= SaveIm('allNom', viewer)
		sleep(2)

		#take picture with all at zero
		#~ SetQuads(0, 0, 0, 0)
		#~ SetMagnet('q8', 0)
		#~ SetMagnet('q9', 0)
		#~ pos_1= GetBeamPos(all_nom_im, viewer)
		#~ sleep(10) #might need to increase this if the jumps in current are big