pk_2 = pos_2[2:4]
                        pk_3 = pos_3[2:4]
                        pk_4 = pos_4[2:4]
                        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})"
                        )
                        #print("Peaks: ", pk_1, pk_2, pk_3, pk_4)
                        distance = Dist(pos_1,
                                        pos_2,
                                        pos_3,
                                        pos_4,
                                        separateXY=True)[1]

        #return quads to original values
        SetMagnet(quad_pair[0], q0_init)
        SetMagnet(quad_pair[1], q1_init)
        sleep(5)
        for i, m in enumerate(magnet_list):
            magnet_values[i] = caget(corr_set_pvs[m])
        print("Correctors set.")

    else:
        if count == 0:
            magnet_values = [random.uniform(-10, 10) for m in magnet_list]
#magnet_values = [random.uniform(-15,15) for m in magnet_list]
예제 #2
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])
    #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
	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()

	#run GP script
	eps_input= input("Enter the desired acquisition function parameter:")
	GaussProc(float(eps_input))

	#continue or not
	cont= input("Continue? yes/no  ")
예제 #4
0
        if peak_found:
            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})"
            )
            #print("Peaks: ", pk_1, pk_2, pk_3, pk_4)
            #		print("distances, x, y")
            #		print(Dist(pos_1, pos_2, pos_3, pos_4, True))
            #		print("distances, combined")
            #		print(Dist(pos_1, pos_2, pos_3, pos_4))
            distance = Dist(pos_1, pos_2, pos_3, pos_4, separateXY=False)

        for i, m in enumerate(magnet_list):
            magnet_values[i] = caget(corr_set_pvs[m])
        print("Correctors set.")

    else:
        if count == 0:
            #magnet_values = [random.uniform(-10,10) for m in magnet_list]
            magnet_values = [random.uniform(-15, 15) for m in magnet_list]
        #magnet_values = [7.73 for m in magnet_list]
        distance = gp.returnObservations(magnet_values)

    print(f"Dist= {distance:.5f}")
    #save corrector values and distance to file
    f = open(f"GP_results/correctorValues_Distance_{timestamp}.txt", "a+")
예제 #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
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()
예제 #7
0
        pk_2 = pos_2[2:4]
        pk_3 = pos_3[2:4]
        pk_4 = pos_4[2:4]
        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})"
        )
        #print("Peaks: ", pk_1, pk_2, pk_3, pk_4)
        distance_x, distance_y = Dist(pos_1,
                                      pos_2,
                                      pos_3,
                                      pos_4,
                                      separateXY=True)
        distance = distance_y

        for i, m in enumerate(magnet_list):
            magnet_values[i] = caget(corr_set_pvs[m])
        print("Correctors set.")

    else:
        if count == 0:
            magnet_values = [random.uniform(-10, 10) for m in magnet_list]
#magnet_values = [random.uniform(-15,15) for m in magnet_list]
            #magnet_values = [7.73 for m in magnet_list]
        distance = gp.returnObservations(magnet_values)
예제 #8
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()