################################################################################################### # ################################################################################################### tc1 = caget('X06DA-OP-MO:TC1') # theta1 thermo couple 1 energy = get_energy() # Mono energy dtz = caget('X06DA-ES-DET:TRZ1') # detector Z- position if current.read() < 200: raise Exception ('Ring current too low') if caget('X06DA-FE-AB1:OPEN_EPS','i') == 0: raise Exception ('FrontEndAbsorber closed') # FrontEnd absorber shutter state if caget('X06DA-FE-PH1:OPEN_EPS','i') == 0: # FrontEnd shutter state raise Exception ('FrontEndShutter closed') if caget('X06DA-OP-ST1:OPEN_EPS','i') == 0: # ExpHutch shutter state raise Exception ('ExpHutchShutter closed ') if caget(('X06DA-OP-MO:E-GET'),'d') > 17.5: #Mono energy raise Exception ('Sorry, no feedback above 17.5 keV for now') tc = 40 # 2015.09.20 quick fix by MT JW cur = caget('X06DA-ES-BPM1:SUM','d') op1 = caget('X06DA-OP-XPM1:CHAN1', 'd') if op1 < 1.0: sete_failed = 1 raise Exception ('X06DA-OP-XPM1:CHAN1 < 10 - please check monochromator, frontend, primary slits, ring current and undulator - program exits') # define max deviations dmx = 14.0 # 2 x distance mirror HR-XBPM ymax = 2e-3 # endwhile criterion for vertical correction if cur < tc: #check if beam is on CVD-XBPM sete_failed = 1 raise Exception ('evere problem - NO BEAM ON HR-DIFFRACTOMETER XBPM') # initial mirror TRY3 position y3i = try3.read() print "initial y3i: " + str(y3i) # how much beam is off? by = bpm1.read() print "EBOX-POSV before rock: " + str(by) # if beam is not off, do nothing if abs(by) > ymax: rock(th1) # result of ROCK time.sleep(2.0) by = bpm1.read() print "EBOX-POSV after rock: " + str(by) # feedback while abs(by) >= ymax : by = bpm1.read() print "current EBOX-POSV: " + str(by) cur = caget('X06DA-ES-BPM1:SUM','d') if cur > tc: ehs = caget('X06DA-OP-ST1:OPEN_EPS','i') # make sure that shutter is open if (ehs > 0) and (abs(by) > ymax): if abs(by) > (50*ymax): raise Exception ('TODO') #limit mirror TRY3 movement y3 = try3.read() if abs(y3i - y3 - 1e-4 * round(by/1e-3)) > 0.008: raise Exception ('Feedback trying to move mirror Y3 beyond safe limit') try3.moveRel(-1e-4 * round(by/1e-3)) print "current X06DA-OP-MI1:TRY3: ", y3 time.sleep(0.25) print "TRY3 net movement: " + str(y3i-try3.read()) #print how much TRY3 moved