Files
x11ma/script/Users/Cinthia/field_sweepID2.py
2022-05-24 10:16:16 +02:00

124 lines
4.3 KiB
Python

#Parameters
#sample_name='M4_120'
'''
FILENAME='Hyst_'+ sample_name + '_E2_Cm'
B1 = 1.0 # starting mag. field in Amps
B2 = -1.0 # final mag. field in Amps
BSTEP = 0.5 # step size mag. field in Amps. in Amps (1mT ~0.25A)
ENERGIES = (707.4) #list of energies in eV
MODE = 2 #polarization (CIRC+ -> 1 or CIRC- -> 2)
OFFSET2 = -1.2 #ID2 offset
FIELD_PRECISION = 0.04 #
ENERGY_CHANGE_SLEEP = 0.5 # put the Enerrgy settling time if needed
FIELD_CHANGE_SLEEP = 0.5 # put the Field settling time if needed
ACC_TIME = 0.1 # time in 100ms
'''
# List of scans. Each scan is defined as: (start,stop, step)
# to make a whole loop two scans are needed: [(B1, B2, BSTEP),(B2,B1,-BSTEP)]
# to make half of a loop one scan is needed: [(B1, B2, BSTEP),] <- don't forget to put comma before ]
RANGES = [(B1, B2, -BSTEP),(B2,B1,BSTEP)]
set_exec_pars(open=False, tag=FILENAME)
#open_vg13()
#Pre-actions
# Here polarization and offsets are set
caput ("X11PHS-E:OPT","PGM+ID2")
print "ID mode set to PGM+ID2"
#caput(OTF_OFF1,-50) #detune ID1
caput('X11MA-ID2:ENERGY-OFFS', OFFSET2)
print "ID offset set to ", OFFSET2
cawait('X11MA-ID2:DONE',1)
print "Offset setting done"
if MODE is 1 or 2:
caput('X11MA-ID2:MODE',MODE)
#print "Polarization mode set"
else:
raise Exception("Invalid polarization type: " + MODE)
cawait('X11MA-ID2:DONE',1)
print "ID mode setting done"
# setting number of samples to be averaged, which depends on the accumulation time
avg = ACC_TIME * 10
caput("X11MA-ES1-10ADC:AVG",avg)
# Generating a list of mag. fields (setpoints) needed for the loop
setpoints = []
for r in RANGES:
setpoints = setpoints + frange(r[0], r[1], r[2], True)
# plot properties
set_preference(Preference.ENABLED_PLOTS, ['field', 'tey_norm'], ['field','tfy_norm'])
set_preference(Preference.PLOT_TYPES, {'tey_norm':1},{'tfy_norm':1})
#scan = ManualScan(['field', 'Energy'], ['TEY', 'I0', 'polarization', 'temperature', 'RingCurrent', 'tey_norm'] , [min(setpoints), min(ENERGIES)], [max(setpoints), max(ENERGIES)], [len(setpoints)-1, len(ENERGIES)-1])
scan = ManualScan(['field', 'Energy'], ['I0', 'TEY', 'TFY', 'polarization', 'temperature', 'RingCurrent', 'tey_norm','tfy_norm'] , [min(setpoints), min(ENERGIES)], [max(setpoints), max(ENERGIES)], [len(setpoints)-1, len(ENERGIES)-1])
scan.start()
# Main loop
for B in setpoints:
print "Setting field = ", B
caput("X11MA-XMCD:I-SETraw",B)
time.sleep( FIELD_CHANGE_SLEEP ) # Settling time
#readback1 = caget("X11MA-XMCD:Ireadout")
readback1 = field.read()
while abs(readback1-B) > FIELD_PRECISION:
#readback1 = caget("X11MA-XMCD:Ireadout")
readback1 = field.read()
print "Wait field is set"
time.sleep(0.1)
print "field setting done"
print "field readback is:", field.read()
for E in ENERGIES:
print "Setting energy = ", E
#caput('X11PHS-E:GO.A', E)
energy.write(E)
time.sleep (0.1)
print "Energy set"
cawait('X11PHS:alldone', 1)
print "done"
readback2 = energy.read()
if abs(readback2 - E) > 0.1 : # TODO: Check accuracy
raise Exception('Energy could not be set to the value ' + str(E))
sleep( ENERGY_CHANGE_SLEEP ) # Settling time
detector1 = keithley_1a.read() #Keithley1
detector2 = keithley_2a.read() #Keithley2
detector3 = keithley_3a.read() #Keithley3
detector4 = caget('X11MA-ID2:MODE') #polarization in ID2
#detector5 = caget("X11MA-ID2:ALPHA-READ") # polAngle in ID2
detector6 = caget('X11MA-ES3-LSCI:TEMP_RBV') #temperature.get()
detector7 = caget("ARIDI-PCT:CURRENT")
#detector8 = signal_field_analog_x.read() # fieldAnalogX.get()
tey_norm = detector2/detector1
tfy_norm = detector3/detector1
#converting polarization strings to integer numbers: C+ -> 1 and C- -> 2
if detector4 == 'CIRC +': detector4 = 1
elif detector4 == 'CIRC -': detector4 = 2
else: detector4 = 0
#print "step 7"
#scan.append ([B, E], [readback1, readback2], [detector1, detector2, detector4, detector6, detector7, tey_norm])
scan.append ([B, E], [readback1, readback2], [detector1, detector2, detector3, detector4, detector6, detector7, tey_norm, tfy_norm])
scan.end()
caput("X11MA-ES1-10ADC:AVG",1)
#close_vg13()