#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)

        #take picture with q14 *2/3, q15 *9/10
        SetMagnet(quad_pair[0], -40)
        #SetMagnet(quad_pair[1], q1_init*9/10)
        pos_1 = GetBeamPos(all_nom_im, viewer)
        pk_1 = pos_1[2]

        if (count_iter == 0):
            init_peak = pk_1

        if (count_iter > 0 and pk_1 < init_peak * 0.05):
            print("Beam off viewer. Skipping iteration.")
            distance = 1000
        else:
            sleep(
                5
            )  #might need to increase this if the jumps in current are big
            frac_im = SaveIm('Q1frac23Q2frac910', viewer)

            #take picture with q14 *2/3 and q15 nom
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}%"
        )
示例#3
0
	#take picture with Q1 at half
	SetQuads(q1_init/2, q2_init, 0, 0)
	sleep(7)
	q1_half_im= SaveIm('q1half')

	#take picture with Q2 at half
	SetQuads(q1_init, q2_init/2, 0, 0)
	sleep(7)
	q2_half_im= SaveIm('q2half')

	#return quads to original values
	SetQuads(q1_init, q2_init, q3_init, q4_init)

	#get centroids from pictures
	pos_1= GetBeamPos(all_nom_im)
	pos_2= GetBeamPos(all_zero_im)
	pos_3= GetBeamPos(q1_half_im)
	pos_4= GetBeamPos(q2_half_im)

	#get quadratic distance from centroids
	print(pos_1, pos_2, pos_3, pos_4)
	distance= Dist(pos_1, pos_2, pos_3, pos_4)
	print("Dist= ", distance)

	#save corrector values and distance to file
	f= open("correctorValues_Distance.txt", "a+")
	c1, c2, c3, c4= GetCorr()
	f.write(f'{c1} {c2} {c3} {c4} {distance}\n')
	f.close()
示例#4
0
        print(
            f"Fields: {b1_nmr:.6f}, {b2_nmr:.6f}, dNMR: {((b1_nmr - b2_nmr)/b1_nmr*100):.5f}%"
        )

#compare current dist with previous, once I pass the min, stop, set back to Imin, cycle
    q1_init, q2_init, q3_init, q4_init = GetQuads()

    #Tuning Q3 and Q4
    #take picture with all at init values
    SetQuads(q1_init, q2_init, q3_init, q4_init)
    sleep(1)
    all_nom_im = SaveIm('allNom', viewer)

    #take picture with all at zero
    SetQuads(q1_init, q2_init, q3_init, -90)
    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('Q4_neg90', viewer)

    #take picture with Q3 at half
    SetQuads(q1_init, q2_init, q3_init * 2 / 3, q4_init)
    pos_2 = GetBeamPos(all_zero_im, viewer)
    sleep(5)
    q3_half_im = SaveIm('q3_2-3', viewer)

    #take picture with Q2 at half
    SetQuads(q1_init, q2_init, q3_init, q4_init * 2 / 3)
    pos_3 = GetBeamPos(q3_half_im, viewer)
    sleep(5)
    q4_half_im = SaveIm('q4_2-3', viewer)
示例#5
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}%")
示例#6
0
            # 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)

            #take picture at init values
            init_im = SaveIm('init', viewer)
            sleep(2)

            #get initial beam spot width
            pos_init = GetBeamPos(init_im, viewer)

            #widths (+/- 34.13%)
            wid_init = (pos_init[5] - pos_init[4])
            wid_gp = wid_init

        else:
            magnet_values = [random.uniform(-10, 10) for q in magnet_list]
            spaceArray = [{
                'name': q,
                'type': 'continuous',
                'domain': (-10, 10)
            } for q in magnet_list]

            space = Design_space(spaceArray)
            wid_gp = gp.returnObservations(magnet_values)
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()
            f"Fields: {b1_nmr:.6f}, {b2_nmr:.6f}, dNMR: {((b1_nmr - b2_nmr)/b1_nmr*100):.5f}%"
        )

#compare current dist with previous, once I pass the min, stop, set back to Imin, cycle
    q1_init, q2_init, q3_init, q4_init = GetQuads()
    q5_init = GetMagnet('q5')

    #Tuning Q3 and Q4
    #take picture with all at init values
    SetQuads(q1_init, q2_init, q3_init, q4_init)
    sleep(1)
    all_nom_im = SaveIm('allNom', viewer)

    #take picture with all at zero
    SetQuads(q1_init, q2_init, 90, q4_init)
    pos_1 = GetBeamPos(all_nom_im, viewer)
    sleep(5)  #might need to increase this if the jumps in current are big
    q3_90_im = SaveIm('q3_90', viewer)

    #take picture with Q3 at half
    SetQuads(q1_init, q2_init, q3_init, -90)
    pos_2 = GetBeamPos(q3_90_im, viewer)
    sleep(5)
    q4_90_im = SaveIm('q4_90', viewer)

    #take picture with Q2 at half
    SetQuads(q1_init, q2_init, q3_init, q4_init)
    SetMagnet('q5', 50)
    pos_3 = GetBeamPos(q3_90_im, viewer)
    sleep(5)
    q5_50_im = SaveIm('q5_50', viewer)
示例#9
0
        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
        #~ all_zero_im= SaveIm('allZero', viewer)
        #~ sleep(2)

        #take picture with q8 2/3 and q9 nom
        #~ SetQuads(q1_init/2, q2_init/2, 0, 0)
        SetMagnet('q6', q6_init / 2)
        SetMagnet('q9', q9_init)
        pos_1 = GetBeamPos(all_nom_im, viewer)
        sleep(10)
        q6_half_im = SaveIm('q6half', viewer)
        sleep(2)

        #take picture with q8 2/3 and q9 2/3
        #~ SetQuads(0, q2_init/2, 0, 0)
        SetMagnet('q6', q6_init)
        SetMagnet('q9', q9_init / 2)
        pos_2 = GetBeamPos(q6_half_im, viewer)
        sleep(10)
        q9half_im = SaveIm('q9half', viewer)
        sleep(2)

        #take picture with q8 nom and q9 2/3
        #~ SetQuads(0, q2_init/2, 0, 0)
示例#10
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()
示例#11
0
#				}
			
			#print the phase space
			print(q_ps)			

			# 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)

			#take picture at init values
			init_im = SaveIm('init', viewer)
			sleep(2)

			#get initial beam spot width
			pos_init = GetBeamPos(init_im, viewer)

			#widths (+/- 34.13%)
			wid_init = (pos_init[5] - pos_init[4])
			gp_im = init_im
			#x_init = pos_init[0]
			x_init = 409 
			# CHANGED from x_init to 400 to refer to pos at nominal, below and when saving the file 
			x_gp = pos_init[0]
			wid_y= pos_init[7] - pos_init[6]
			wid_gp = wid_init 	

		else:
			magnet_values = [random.uniform(-10,10) for q in magnet_list]
			spaceArray = [ {'name': q, 'type': 'continuous', 'domain': (-10, 10)} for q in magnet_list ]
示例#12
0
while (count < 21):

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

    #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(q1_init / 2, q2_init, q3_init, q4_init)
    pos_1 = GetBeamPos(all_nom_im, viewer)
    sleep(10)  #might need to increase this if the jumps in current are big
    q1_half_im = SaveIm('q1half', viewer)
    sleep(2)

    #take picture with Q1 at half # CHANGED.... Q2 also half
    SetQuads(q1_init, q2_init, q3_init / 2, q4_init)
    pos_2 = GetBeamPos(q1_half_im, viewer)
    sleep(10)
    q3_half_im = SaveIm('q3half', viewer)
    sleep(2)

    #take picture with Q2 at half # CHANGED... Q1 = 0
    SetQuads(q1_init, q2_init / 2, q3_init, q4_init)
    pos_3 = GetBeamPos(q3_half_im, viewer)
    sleep(10)
示例#13
0
	# Import current state by
	#  Gets current settings from control system
	q1_init, q2_init, q3_init, q4_init= GetQuads()

	# Take picture with all magnets at initial values
    # Take image of beam (this is image #1)
	all_nom_im= SaveIm('allNom', viewer)

	sleep(2) # wait for image to process

	# Take picture with all quadrupoles at zero
	SetQuads(0, 0, 0, 0)

    # Analyze image #1 and get positions and peak intensity
	pos_1= GetBeamPos(all_nom_im, viewer) # x and y positions
	pk_1 = pos_1[2:4]  # peak intensitites

	if pk_1[0] <int_limit:
        # No beam found at these settings
		peak_found = False
        # Set magnets to desired values
		SetQuads(q1_init, q2_init, q3_init, q4_init) 
        # Assign high objective value to teach optimizer to avoid this region 
		distance = 1000
			
	if peak_found:
		sleep(10) # Allow time for quadrupoles to settle at new values
		all_zero_im= SaveIm('q1half', viewer) # Take image #2
		sleep(2)
示例#14
0
		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
		#~ all_zero_im= SaveIm('allZero', viewer)
		#~ sleep(2)

		#take picture with q8 2/3 and q9 nom
		#~ SetQuads(q1_init/2, q2_init/2, 0, 0)
		SetMagnet('q8', q8_init*2/3)
		SetMagnet('q9', q9_init)
		pos_1= GetBeamPos(all_nom_im, viewer)
		sleep(10)
		q8_2third_im= SaveIm('q82third', viewer)
		sleep(2)

		#take picture with q8 2/3 and q9 2/3
		#~ SetQuads(0, q2_init/2, 0, 0)
		SetMagnet('q8', q8_init)
		SetMagnet('q9', q9_init/2)
		pos_2= GetBeamPos(q8_2third_im, viewer)
		sleep(10)
		q8q9_2third_im= SaveIm('q9half', viewer)
		sleep(2)

		#take picture with q8 nom and q9 2/3
		#~ SetQuads(0, q2_init/2, 0, 0)