コード例 #1
0
ファイル: ly5320.py プロジェクト: pcdshub/xcs
    def __init__(self):

        with safe_load('VH_motors'):
            self.vh_y = IMS('XCS:USR:MMS:15', name='vh_y')
            self.vh_x = IMS('XCS:USR:MMS:16', name='vh_x')
            self.vh_rot = IMS('XCS:USR:MMS:39', name='vh_rot')

        with safe_load('LED'):
            self.led = Trigger('XCS:R42:EVR:01:TRIG9', name='led_delay')
            self.led_uS = MicroToNano()
コード例 #2
0
ファイル: lv3118.py プロジェクト: pcdshub/xcs
    def __init__(self):
        #pass
        self.yag5_h5 = ImagerHdf5(camviewer.xcs_yag5)

        with safe_load('lv3118_motors'):
            self.zyla_z = IMS('XCS:USR:MMS:44', name='zyla_z')
            self.zyla_y = IMS('XCS:USR:MMS:43', name='zyla_y')
            self.sam_x = Newport('XCS:USR:MMN:05', name='sam_x')
            self.samyag_y = Newport('XCS:USR:MMN:03', name='samyag_y')
            self.samyag_z = Newport('XCS:USR:MMN:06', name='samyag_z')
コード例 #3
0
ファイル: lw6819.py プロジェクト: pcdshub/xcs
    def __init__(self):
        self._sync_markers = {
            0.5: 0,
            1: 1,
            5: 2,
            10: 3,
            30: 4,
            60: 5,
            120: 6,
            360: 7
        }
        with safe_load('Spare Event Sequencer'):
            self.seq2 = EventSequencer('ECS:SYS0:11', name='seq_11')
        with safe_load('PP trigger'):
            self.evr_pp = Trigger('XCS:USR:EVR:TRIG1', name='evr_pp')
        with safe_load('SmarAct'):
            self.las1 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m1',
                                       tilt_pv=':m2',
                                       name='las1')
            self.las2 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m4',
                                       tilt_pv=':m5',
                                       name='las2')
            self.las3 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m7',
                                       tilt_pv=':m8',
                                       name='las3')

#        with safe_load('elog'):
#            kwargs = dict()
#            self.elog = HutchELog.from_conf('XCS', **kwargs)
#

        with safe_load('lw68_motors'):
            self.iStar_focus = Newport('XCS:USR:MMN:06', name='iStar_focus')
            self.bbo_wp = Newport('XCS:USR:MMN:07', name='bbo_wp')
            self.huber_x = IMS('XCS:USR:MMS:40', name='huber_x')
            self.huber_y = IMS('XCS:USR:MMS:37', name='huber_y')
            self.ldx = IMS('XCS:LAM:MMS:06', name='ldx')
            self.ldy = IMS('XCS:LAM:MMS:07', name='ldy')
            self.bs6x = IMS('XCS:LAM:MMS:11', name='bs6x')
            self.bs6y = IMS('XCS:LAM:MMS:12', name='bs6y')
            self.att = IMS('XCS:SB2:MMS:15', name='att')
            # need to chose one ATT motor that does the desired attenuation and identify the two positions to go just in/out. Motor 15 is the 320um filter which does about a factor of 10.

        with safe_load('Triggers'):
            self.gateEVR = Trigger('XCS:R42:EVR:01:TRIG4', name='evr_trig4')
            self.gateEVR_ticks = EpicsSignal('XCS:R42:EVR:01:CTRL.DG4D',
                                             name='evr_trig4_ticks')
            self.GD = self.gateEVR.ns_delay
        self.tx = self.huber_y
        self.ty = gon_sy
        self.tn = self.huber_x
        #self.ty = xcs_gon.ver
        self.lp = LaserShutter('XCS:USR:ao1:7', name='lp')
コード例 #4
0
 def __init__(self):
     pass
     with safe_load('x533_motors'):
         self.th = IMS('STEP:XRT1:442:MOTR', name='th')
         self.tth = IMS('STEP:XRT1:443:MOTR', name='tth')
         self.xtal_y = IMS('STEP:XRT1:441:MOTR', name='xtal_y')
         self.cam_dis = IMS('STEP:XRT1:444:MOTR', name='cam_dis')
         self.cam_y = IMS('STEP:XRT1:447:MOTR', name='cam_y')
         self.iris = IMS('STEP:XRT1:445:MOTR', name='irs')
コード例 #5
0
ファイル: lv3718.py プロジェクト: pcdshub/xcs
    def __init__(self):
        #pass

        with safe_load('lv3718_motors'):
            #self.JF_y = IMS('XCS:USR:MMS:33', name='JF_y')
            #self.zyla_x = IMS('XCS:USR:MMS:34', name='zyla_x')
            self.sam_y = IMS('XCS:USR:MMS:35', name='sam_y')
            #self.zyla_z = IMS('XCS:USR:MMS:36', name='zyla_z')
            #self.mirror_x = IMS('XCS:USR:MMS:41', name='mirror_x')
            #self.mirror_y = IMS('XCS:USR:MMS:48', name='mirror_y')
            self.zyla_z = IMS('XCS:USR:MMS:44', name='zyla_z')
            self.zyla_y = IMS('XCS:USR:MMS:43', name='zyla_y')
            self.sam_th = IMS('XCS:USR:MMS:45', name='sam_th')
            self.jj2hg = IMS('XCS:USR:MMS:25', name='jj2hg')
            self.jj2ho = IMS('XCS:USR:MMS:26', name='jj2ho')
            self.jj2vg = IMS('XCS:USR:MMS:27', name='jj2vg')
            self.jj2vo = IMS('XCS:USR:MMS:28', name='jj2vo')
            self.samyag_z = Newport('XCS:USR:MMN:03', name='samyag_z')
            self.samyag_y = Newport('XCS:USR:MMN:06', name='samyag_y')
            self.sam_x = Newport('XCS:USR:MMN:05', name='sam_x')
            self.lens_z = IMS('XCS:USR:MMS:07', name='lens_z')
コード例 #6
0
import matplotlib.pyplot as plt
from time import sleep
import statistics as stat

from pcdsdevices.device_types import IMS
from epics import PV

#from cxi.db import cxi
from cxi.db import cxi_pulsepicker
#from cxi.db import daq

sc3_pulsepicker = PulsePicker('CXI:DS1:MMS:14', name='sc3_pulsepicker')

#defining the DS1 and DS2 z motors
ds1_z_position = IMS('CXI:DS1:MMS:06', name='ds1_z_distance')
ds2_z_position = IMS('CXI:DS2:MMS:06', name='ds2_z_distance')

#defining pv for DsdCspad total intensity from shared memory
sc3_DsdCspad_intensity = PV('CXI:SC3:DIFFRACT:TOTAL_ADU')
sc1_DscCspad_intensity = PV('CXI:SC1:DIFFRACT:TOTAL_ADU')

#making the cxi_pulsepicker something that can be monitored by jet tracking
cxi_pulsepicker_state = PV('XRT:DIA:MMS:16:READ_DF')

#defining quick CSPAD optimization function
tot_intensity = 0


class Jet_chaser(Device):
    sc3_broad_x = Cpt(IMS, ':PI3:MMS:01')
コード例 #7
0
ファイル: lw6819.py プロジェクト: pcdshub/xcs
class User():
    def __init__(self):
        self._sync_markers = {
            0.5: 0,
            1: 1,
            5: 2,
            10: 3,
            30: 4,
            60: 5,
            120: 6,
            360: 7
        }
        with safe_load('Spare Event Sequencer'):
            self.seq2 = EventSequencer('ECS:SYS0:11', name='seq_11')
        with safe_load('PP trigger'):
            self.evr_pp = Trigger('XCS:USR:EVR:TRIG1', name='evr_pp')
        with safe_load('SmarAct'):
            self.las1 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m1',
                                       tilt_pv=':m2',
                                       name='las1')
            self.las2 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m4',
                                       tilt_pv=':m5',
                                       name='las2')
            self.las3 = SmarActTipTilt(prefix='XCS:MCS2:01',
                                       tip_pv=':m7',
                                       tilt_pv=':m8',
                                       name='las3')

#        with safe_load('elog'):
#            kwargs = dict()
#            self.elog = HutchELog.from_conf('XCS', **kwargs)
#

        with safe_load('lw68_motors'):
            self.iStar_focus = Newport('XCS:USR:MMN:06', name='iStar_focus')
            self.bbo_wp = Newport('XCS:USR:MMN:07', name='bbo_wp')
            self.huber_x = IMS('XCS:USR:MMS:40', name='huber_x')
            self.huber_y = IMS('XCS:USR:MMS:37', name='huber_y')
            self.ldx = IMS('XCS:LAM:MMS:06', name='ldx')
            self.ldy = IMS('XCS:LAM:MMS:07', name='ldy')
            self.bs6x = IMS('XCS:LAM:MMS:11', name='bs6x')
            self.bs6y = IMS('XCS:LAM:MMS:12', name='bs6y')
            self.att = IMS('XCS:SB2:MMS:15', name='att')
            # need to chose one ATT motor that does the desired attenuation and identify the two positions to go just in/out. Motor 15 is the 320um filter which does about a factor of 10.

        with safe_load('Triggers'):
            self.gateEVR = Trigger('XCS:R42:EVR:01:TRIG4', name='evr_trig4')
            self.gateEVR_ticks = EpicsSignal('XCS:R42:EVR:01:CTRL.DG4D',
                                             name='evr_trig4_ticks')
            self.GD = self.gateEVR.ns_delay
        self.tx = self.huber_y
        self.ty = gon_sy
        self.tn = self.huber_x
        #self.ty = xcs_gon.ver
        self.lp = LaserShutter('XCS:USR:ao1:7', name='lp')

    ######################################################3
    # Fixed Target Scanning and control

    def init_target_grid(self, m, n, sample_name):
        xy = XYGridStage(self.tx, self.ty, m, n, grid_filepath)
        xy.set_presets()
        xy.map_points()
        xy.save_grid(sample_name)
        xy.current_sample = sample_name
        self.xy = xy

    def load_sample_grid(self, sample_name):
        self.xy.load_sample(sample_name)
        self.xy.map_points()

    # Diling's lazy function for close packing with offsetted rows
    # modified by Tyler and Vincent for professionalism
    @bpp.run_decorator()
    def gridScan_old(self, motor, posList, sample, iRange, jRange, deltaX):
        iRange = list(iRange)
        jRange = list(jRange)
        if len(posList) != len(iRange):
            print(
                'number of scan steps not matching grid total row number, abort.'
            )
        else:
            xs, ys = self.xy.compute_mapped_point(
                1, 1, compute_all=True)  # get all positions
            s_shape = self.xy.get_sample_map_info(sample)
            s_shape = (s_shape[0], s_shape[1])
            for ni, i in enumerate(iRange):
                motor.umv(posList[ni])
                jRange_thisRow = jRange
                #if np.mod(ind, 2)==1:
                #jRange_thisRow.reverse()
                for j in jRange_thisRow:
                    idx = np.ravel_multi_index(
                        [i, j],
                        s_shape)  # find raveled index from 2d coord i,j
                    x_pos = xs[idx]
                    y_pos = ys[idx]
                    #x_pos,y_pos = self.xy.compute_mapped_point(i, j, compute_all=False)
                    if np.mod(i, 2) == 1:
                        y_pos = y_pos + deltaX
                    yield from bps.mv(self.xy.x, x_pos, self.xy.y, y_pos)
                    yield from bps.trigger_and_read(
                        [seq, self.xy.x, self.xy.y])
                    time.sleep(0.2)
                    while seq.play_status.get() == 2:
                        continue
                jRange.reverse()

    @bpp.run_decorator()
    def gridScan(self,
                 motor,
                 posList,
                 sample,
                 iRange,
                 jRange,
                 deltaX,
                 snake=True):
        iRange = list(iRange)
        jRange = list(jRange)
        if len(posList) != len(iRange):
            print(
                'number of scan steps not matching grid total row number, abort.'
            )
        else:
            self.xy.load(sample)
            for ni, i in enumerate(iRange):
                motor.umv(posList[ni])
                jRange_thisRow = jRange
                for j in jRange_thisRow:
                    x_pos, y_pos = self.xy.compute_mapped_point(
                        i, j, sample, compute_all=False)
                    if np.mod(i, 2) == 1:
                        x_pos = x_pos + deltaX
                    yield from bps.mv(self.xy.x, x_pos, self.xy.y, y_pos)
                    yield from bps.trigger_and_read(
                        [seq, self.xy.x, self.xy.y])
                    time.sleep(0.1)
                    while seq.play_status.get() == 2:
                        continue
                if snake:
                    jRange.reverse()

    @bpp.run_decorator()
    def gridScanAtt(self,
                    motor,
                    posList,
                    sample,
                    iRange,
                    jRange,
                    deltaX,
                    snake=True):
        InPosition = 12
        OutPosition = 10
        iRange = list(iRange)
        jRange = list(jRange)

        self.att.mv(InPosition)
        if len(posList) != len(iRange):
            print(
                'number of scan steps not matching grid total row number, abort.'
            )
        else:
            self.xy.load(sample)
            for ni, i in enumerate(iRange):
                motor.umv(posList[ni])
                jRange_thisRow = jRange
                for j in jRange_thisRow:
                    x_pos, y_pos = self.xy.compute_mapped_point(
                        i, j, sample, compute_all=False)
                    if np.mod(i, 2) == 1:
                        x_pos = x_pos + deltaX
                    yield from bps.mv(self.xy.x, x_pos, self.xy.y, y_pos)
                    self.att.mv(InPosition)
                    self.att.wait()
                    seq2.start()
                    time.sleep(0.1)
                    while seq2.play_status.get() == 2:
                        continue
                    self.att.mv(OutPosition)
                    self.att.wait()
                    yield from bps.trigger_and_read(
                        [seq, self.xy.x, self.xy.y])
                    #seq.start()
                    time.sleep(0.1)
                    while seq.play_status.get() == 2:
                        continue
                if snake:
                    jRange.reverse()

    def gridScan_Daq(self,
                     motor,
                     posList,
                     sample,
                     iRange,
                     jRange,
                     deltaX,
                     snake=True):
        plan = self.gridScan(motor, posList, sample, iRange, jRange, deltaX,
                             snake)
        try:
            daq.disconnect()
        except:
            print('DAQ might be disconnected already')
        daq.connect()
        daq.begin()
        RE(plan)
        daq.end_run()

    def gridScanAtt_Daq(self,
                        motor,
                        posList,
                        sample,
                        iRange,
                        jRange,
                        deltaX,
                        snake=True):
        plan = self.gridScanAtt(motor, posList, sample, iRange, jRange, deltaX,
                                snake)
        try:
            daq.disconnect()
        except:
            print('DAQ might be disconnected already')
        daq.connect()
        daq.begin()
        RE(plan)
        daq.end_run()

    # to help move quickly between 120Hz CW mode for
    # alignment and TT checking and single shot mode
    def go120Hz(self):
        try:
            daq.disconnect()
        except:
            print('DAQ might already be disconnected')
        lp('IN')
        pp.open()
        sync_mark = int(self._sync_markers[120])
        seq.sync_marker.put(sync_mark)
        seq.play_mode.put(2)
        shot_sequence = []
        shot_sequence.append([85, 0, 0, 0])
        shot_sequence.append([87, 0, 0, 0])
        seq.sequence.put_seq(shot_sequence)
        time.sleep(0.5)
        seq.start()
        #daq.connect()
        #daq.begin_run(record=False)

    def goSS(self, nPre=20, nOn=1, nPost=20):
        #daq.end_run()
        #daq.disconnect()
        pp.flipflop()
        self.prepare_seq(nPre, nOn, nPost)
        time.sleep(0.2)
        lp('OUT')

    # setup sparesequencer for off-on-off series
    def prepare_seq(self,
                    nShotsPre=30,
                    nShotsOn=1,
                    nShotsPost=30,
                    seqHere=seq,
                    nBuff=1):
        ## Setup sequencer for requested rate
        #sync_mark = int(self._sync_markers[self._rate])
        #leave the sync marker: assume no dropping.
        sync_mark = int(self._sync_markers[10])
        seqHere.sync_marker.put(sync_mark)
        seqHere.play_mode.put(0)  # Run sequence once
        pp.flipflop()
        #seq.play_mode.put(1) # Run sequence N Times
        #seq.rep_count.put(nshots) # Run sequence N Times

        ppLine = [84, 2, 0, 0]
        daqLine = [85, 2, 0, 0]
        preLine = [190, 0, 0, 0]
        onLine = [87, 0, 0, 0]
        postLine = [193, 0, 0, 0]
        bufferLine = [85, 1, 0, 0
                      ]  # line to avoid falling on the parasitic 10Hz from TMO

        shot_sequence = []
        #enable bufferline will help with the soft 10Hz multiplexing case
        #for buff in np.arange(nBuff):
        #    shot_sequence.append(bufferLine)
        for preShot in np.arange(nShotsPre):
            shot_sequence.append(ppLine)
            shot_sequence.append(daqLine)
            shot_sequence.append(preLine)
        for onShot in np.arange(nShotsOn):
            shot_sequence.append(ppLine)
            shot_sequence.append(daqLine)
            shot_sequence.append(onLine)
        for postShot in np.arange(nShotsPost):
            shot_sequence.append(ppLine)
            shot_sequence.append(daqLine)
            shot_sequence.append(postLine)

        #logging.debug("Sequence: {}".format(shot_sequence))
        seqHere.sequence.put_seq(shot_sequence)

    # put pulse picker to flip flop mod
    def set_pp_flipflop(self):
        burstdelay = 4.5e-3 * 1e9  # not needed here
        flipflopdelay = 8e-3 * 1e9
        followerdelay = 3.8e-5 * 1e9  # not needed here
        self.evr_pp.ns_delay.set(
            flipflopdelay)  # evr channel needs to be defined
        pp.flipflop(wait=True)

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

    def takeRun(self, nEvents, record=None, use_l3t=False):
        daq.configure(events=120, record=record, use_l3t=use_l3t)
        daq.begin(events=nEvents)
        daq.wait()
        daq.end_run()

    def ascan(self,
              motor,
              start,
              end,
              nsteps,
              nEvents,
              record=None,
              use_l3t=False,
              post=False):
        self.cleanup_RE()
        currPos = motor.wm()
        daq.configure(nEvents,
                      record=record,
                      controls=[motor],
                      use_l3t=use_l3t)
        try:
            RE(scan([daq], motor, start, end, nsteps))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()
        if post:
            run = get_run()
            message = 'scan {name} from {min1:.3f} to {max1:.3f} in {num1} steps'.format(
                name=motor.name, min1=start, max1=end, num1=nsteps)

            self.elog.post(message, run=int(run))

        motor.mv(currPos)

    def pv_ascan(self,
                 signal,
                 start,
                 end,
                 nsteps,
                 nEvents,
                 record=None,
                 use_l3t=False,
                 post=False):
        self.cleanup_RE()
        currPos = signal.get()
        #signal.put_complete = True
        daq.configure(nEvents,
                      record=record,
                      controls=[signal],
                      use_l3t=use_l3t)
        try:
            RE(scan([daq], signal, start, end, nsteps))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()

        signal.put(currPos)
        currPos = signal.get()

        if post:
            run = get_run()
            message = 'scan {name} from {min1:.3f} to {max1:.3f} in {num1} steps'.format(
                name=signal.name, min1=start, max1=end, num1=nsteps)
            self.elog.post(message, run=int(run))

    def listscan(self,
                 motor,
                 posList,
                 nEvents,
                 record=None,
                 use_l3t=False,
                 post=False):
        self.cleanup_RE()
        currPos = motor.wm()
        daq.configure(nEvents,
                      record=record,
                      controls=[motor],
                      use_l3t=use_l3t)
        try:
            RE(list_scan([daq], motor, posList))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()
        motor.mv(currPos)

        if post:
            run = get_run()
            message = 'scan {name} from {min1:.3f} to {max1:.3f} in {num1} steps'.format(
                name=motor.name,
                min1=posList[0],
                max1=posList[-1],
                num1=posList.size)
            self.elog.post(message, run=int(run))

    def pv_dscan(self,
                 signal,
                 start,
                 end,
                 nsteps,
                 nEvents,
                 record=None,
                 use_l3t=False,
                 post=False):
        self.cleanup_RE()
        daq.configure(nEvents,
                      record=record,
                      controls=[signal],
                      use_l3t=use_l3t)
        currPos = signal.get()
        try:
            RE(scan([daq], signal, currPos + start, currPos + end, nsteps))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()
        signal.put(int(currPos))

        if post:
            run = get_run()
            message = 'scan {name} from {min1:.3f} to {max1:.3f} in {num1} steps'.format(
                name=signal.name,
                min1=start + currPos,
                max1=end + currPos,
                num1=nsteps)
            self.elog.post(message, run=int(run))

    def d2scan(self,
               m1,
               a1,
               b1,
               m2,
               a2,
               b2,
               nsteps,
               nEvents,
               record=True,
               use_l3t=False,
               post=False):
        currPos1 = m1.wm()
        currPos2 = m2.wm()

        # just use a2scan
        self.a2scan(m1,
                    currPos1 + a1,
                    currPos1 + b1,
                    m2,
                    currPos2 + a2,
                    currPos2 + b2,
                    nsteps,
                    nEvents,
                    record=record,
                    use_l3t=use_l3t,
                    post=post)

    def a2scan(self,
               m1,
               a1,
               b1,
               m2,
               a2,
               b2,
               nsteps,
               nEvents,
               record=True,
               use_l3t=False,
               post=False):

        currPos1 = m1.wm()
        currPos2 = m2.wm()

        self.cleanup_RE()
        daq.configure(nEvents,
                      record=record,
                      controls=[m1, m2],
                      use_l3t=use_l3t)
        try:
            RE(scan([daq], m1, a1, b1, m2, a2, b2, nsteps))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()

        # move motors back to starting position
        m1.mv(currPos1)
        m2.mv(currPos2)

        if post:
            run = get_run()

            message = f'scan {m1.name} from {a1:.3f} to {b1:.3f} and {m2.name} from {a2:.3f} to {b2:.3f} in {nsteps} steps'
            self.elog.post(message, run=int(run))

    def a3scan(self,
               m1,
               a1,
               b1,
               m2,
               a2,
               b2,
               m3,
               a3,
               b3,
               nsteps,
               nEvents,
               record=True,
               post=False):
        self.cleanup_RE()
        daq.configure(nEvents, record=record, controls=[m1, m2, m3])
        try:
            RE(scan([daq], m1, a1, b1, m2, a2, b2, m3, a3, b3, nsteps))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()

    def delay_scan(self,
                   start,
                   end,
                   sweep_time,
                   record=None,
                   use_l3t=False,
                   duration=None,
                   post=False):
        """Delay scan with the daq."""
        self.cleanup_RE()
        daq.configure(events=None,
                      duration=None,
                      record=record,
                      use_l3t=use_l3t,
                      controls=[lxt_fast])
        try:
            RE(
                delay_scan(daq,
                           lxt_fast, [start, end],
                           sweep_time,
                           duration=duration))
        except Exception:
            logger.debug('RE Exit', exc_info=True)
        finally:
            self.cleanup_RE()

        if post:
            run = get_run()
            message = 'delay scan from {min1:.2f} to {max1:.2f} in with {sweep:.2f}s sweep time'.format(
                min1=start, max1=end, sweep=sweep_time)
            self.elog.post(message, run=int(run))
コード例 #8
0
ファイル: beamline.py プロジェクト: pcdshub/xpp
from hutch_python.utils import safe_load
from pcdsdevices.device_types import Newport, IMS
from xpp.delay_stage import FakeDelay
from xpp.db import scan_pvs
from ophyd.sim import motor as fake_motor

scan_pvs.enable()

with safe_load('fake_delay'):
    fake_delay = FakeDelay('', '', name='fake_delay')

with safe_load('xpp_gon_h'):
    xpp_gon_h = IMS('XPP:GON:MMS:01', name='xpp_gon_h')

with safe_load('xpp_gon_v'):
    xpp_gon_v = IMS('XPP:GON:MMS:02', name='xpp_gon_v')

with safe_load('xpp_gon_r'):
    xpp_gon_r = IMS('XPP:GON:MMS:03', name='xpp_gon_r')

with safe_load('xpp_gon_tip'):
    xpp_gon_tip = IMS('XPP:GON:MMS:04', name='xpp_gon_tip')

with safe_load('xpp_gon_tilt'):
    xpp_gon_tilt = IMS('XPP:GON:MMS:05', name='xpp_gon_tilt')

with safe_load('xpp_gon_z'):
    xpp_gon_z = IMS('XPP:GON:MMS:06', name='xpp_gon_z')

with safe_load('xpp_gon_x'):
    xpp_gon_x = IMS('XPP:GON:MMS:07', name='xpp_gon_x')
コード例 #9
0
    def __init__(self):
        self.t0 = 894756
        try:
            self.im1l0_h5 = ImagerHdf5(camviewer.im1l0)
            self.im2l0_h5 = ImagerHdf5(camviewer.im2l0)
            self.im3l0_h5 = ImagerHdf5(camviewer.im3l0)
            self.im4l0_h5 = ImagerHdf5(camviewer.im4l0)
            self.gige13_h5 = ImagerHdf5(camviewer.xpp_gige_13)
            self.im1l0_stats = ImagerStats(camviewer.im1l0)
            self.im2l0_stats = ImagerStats(camviewer.im2l0)
            self.im3l0_stats = ImagerStats(camviewer.im3l0)
            self.im4l0_stats = ImagerStats(camviewer.im4l0)
            self.im1l0_stats3 = ImagerStats3(camviewer.im1l0)
            self.im2l0_stats3 = ImagerStats3(camviewer.im2l0)
            self.im3l0_stats3 = ImagerStats3(camviewer.im3l0)
            self.im4l0_stats3 = ImagerStats3(camviewer.im4l0)
        except:
            self.im1l0_h5 = None
            self.im2l0_h5 = None
            self.im3l0_h5 = None
            self.im4l0_h5 = None
            self.im1l0_stats = None
            self.im2l0_stats = None
            self.im3l0_stats = None
            self.im4l0_stats = None
            self.im1l0_stats3 = None
            self.im3l0_stats3 = None
            self.im4l0_stats3 = None
        with safe_load('crl2_xytheta'):
            self.crl2_x = IMS('XPP:USR:PRT:MMS:20', name='crl2_x')
            self.crl2_y = IMS('XPP:USR:PRT:MMS:22', name='crl2_y')
            self.crl2_z = IMS('XPP:USR:PRT:MMS:23', name='crl2_z')
            self.crl2_th_x = Newport('XPP:USR:MMN:05', name='crl2_th_x')
            self.crl2_th_y = Newport('XPP:USR:MMN:04', name='crl2_th_y')

        #########################################################################
        #            Add the axes
        #########################################################################
        with safe_load("grating_1"):
            pass

        with safe_load("CC1"):
            self.t1_x = IMS('XPP:USR:MMS:18', name='t1_x')
            self.t1_y = IMS('XPP:USR:MMS:22', name='t1_y')
            self.t1_th = IMS('XPP:USR:MMS:29', name='t1_th')

        with safe_load("CC2"):
            self.t2_th = IMS('XPP:USR:MMS:23', name='t2_th')

        with safe_load("CC3"):
            self.t3_th = IMS('XPP:USR:MMS:32', name='t3_th')

        with safe_load("CC4"):
            self.t4_x = IMS('XPP:USR:MMS:25', name='t4_x')
            self.t4_th = IMS('XPP:USR:MMS:30', name='t4_th')

        with safe_load("CC5"):
            self.t5_x = IMS('XPP:USR:MMS:21', name='t5_x')
            self.t5_th = IMS('XPP:USR:PRT:MMS:25', name='t5_th')

        with safe_load("CC6"):
            self.t6_x = IMS('XPP:USR:PRT:MMS:24', name='t6_x')
            self.t6_y = IMS('XPP:USR:PRT:MMS:29', name='t6_y')
            self.t6_th = IMS('XPP:USR:PRT:MMS:21', name='t6_th')

        with safe_load("Diagnosis"):
            self.d1_x = IMS('XPP:USR:MMS:17', name='d1_x')
            self.d2_x = IMS('XPP:USR:MMS:24', name='d2_x')
            self.d3_x = IMS('XPP:USR:MMS:31', name='d3_x')
            self.d4_x = IMS('XPP:USR:MMS:26', name='d4_x')
            self.d5_x = IMS('XPP:USR:PRT:MMS:32', name='d5_x')
            self.yag_x = IMS('XPP:USR:PRT:MMS:19', name='yag_x')

        # with safe_load('zyla0'):
        #    self.zyla0_y = IMS('XPP:USR:PRT:MMS:18', name='zyla0_y')
        #    self.zyla0_x = Newport('XPP:USR:PRT:MMN:07', name='zyla0_x')
        # with safe_load('Triggers'):
        #    self.evr_R30E26 = Trigger('XPP:R30:EVR:26:TRIGB', name='evr_R30E26')
        #    self.evr_R30E28 = Trigger('XPP:R30:EVR:28:TRIGB', name='evr_R30E28')
        #    self.evr_R30E26_ticks = EpicsSignal('XPP:R30:EVR:26:CTRL.DGBD', name='evr_R30E26_ticks')
        #    self.evr_R30E28_ticks = EpicsSignal('XPP:R30:EVR:28:CTRL.DGBD', name='evr_R30E28_ticks')
        #    self.GD = self.evr_R30E28.ns_delay

        with safe_load('MPOD'):
            self.diode_bias = MpodChannel('XPP:R39:MPD:CH:100',
                                          name='diode_bias')
コード例 #10
0
ファイル: x41018.py プロジェクト: pcdshub/xcs
 def __init__(self):
     #pass
 
     with safe_load('x410_motors'):
         self.JF_y = IMS('XCS:USR:MMS:33', name='JF_y')
         self.zyla_x = IMS('XCS:USR:MMS:34', name='zyla_x')
         self.zyla_y = IMS('XCS:USR:MMS:35', name='zyla_y')
         self.zyla_z = IMS('XCS:USR:MMS:36', name='zyla_z')
         self.mirror_x = IMS('XCS:USR:MMS:41', name='mirror_x')
         self.mirror_y = IMS('XCS:USR:MMS:48', name='mirror_y')
         self.sam_x = IMS('XCS:USR:MMS:44', name='sam_x')
         self.sam_y = IMS('XCS:USR:MMS:43', name='sam_y')
         self.sam_th = IMS('XCS:USR:MMS:45', name='sam_th')
         self.huber_Rx = IMS('XCS:USR:MMS:32', name='huber_Rx')
         self.huber_x = IMS('XCS:USR:MMS:30', name='huber_x')
         self.huber_Ry = IMS('XCS:USR:MMS:29', name='huber_Ry')
         self.huber_y = IMS('XCS:USR:MMS:19', name='huber_y')
         self.jj2hg = IMS('XCS:USR:MMS:25', name='jj2hg')
         self.jj2ho = IMS('XCS:USR:MMS:26', name='jj2ho')
         self.jj2vg = IMS('XCS:USR:MMS:27', name='jj2vg')
         self.jj2vo = IMS('XCS:USR:MMS:28', name='jj2vo')
         self.bs_x = Newport('XCS:USR:MMN:03', name='bs_x')
         self.bs_y = Newport('XCS:USR:MMN:06', name='bs_y')
         self.JF_x = Newport('XCS:USR:MMN:05', name='JF_x')
         self.lens_z = IMS('XCS:USR:MMS:07',name = 'lens_z')