################################################################################################### # Deployment specific global definitions - executed after startup.py ################################################################################################### class PicoAmp(DeviceBase, Stoppable): def __init__(self, name, prefix): DeviceBase.__init__(self, name) self.prefix = prefix self.array_data = create_channel_device(prefix+"image1:ArrayData", type='[d', size=None, deviceName=name + " ArrayData") self.ts_total = create_channel_device(prefix+"Current1:TSTotal", type='[d', size=None, deviceName=name + " Cur1 TSTotal") self.ts_net = create_channel_device(prefix+"Current1:TSNet", type='[d', size=None, deviceName=name + " Cur1 TSNet") self.ts_min = create_channel_device(prefix+"Current1:TSMinValue", type='[d', size=None, deviceName=name + " Cur1 TSMin") self.ts_max = create_channel_device(prefix+"Current1:TSMaxValue", type='[d', size=None, deviceName=name + " Cur1 TSMax") self.ts_minx = create_channel_device(prefix+"Current1:TSMinX", type='[d', size=None, deviceName=name + " Cur1 TSMaxX") self.ts_maxx = create_channel_device(prefix+"Current1:TSMeanValue", type='[d', size=None, deviceName=name + " Cur1 TSMean") self.ts_sigma = create_channel_device(prefix+"Current1:TSSigma", type='[d', size=None, deviceName=name + " Cur1 TSSigma") self.ts_total2 = create_channel_device(prefix+"Current2:TSTotal", type='[d', size=None, deviceName=name + " Cur2 TSTotal") self.ts_net2 = create_channel_device(prefix+"Current2:TSNet", type='[d', size=None, deviceName=name + " Cur2 TSNet") self.ts_min2 = create_channel_device(prefix+"Current2:TSMinValue", type='[d', size=None, deviceName=name + " Cur2 TSMin") self.ts_max2 = create_channel_device(prefix+"Current2:TSMaxValue", type='[d', size=None, deviceName=name + " Cur2 TSMax") self.ts_minx2 = create_channel_device(prefix+"Current2:TSMinX", type='[d', size=None, deviceName=name + " Cur2 TSMaxX") self.ts_maxx2 = create_channel_device(prefix+"Current2:TSMeanValue", type='[d', size=None, deviceName=name + " Cur2 TSMean") self.ts_sigma2 = create_channel_device(prefix+"Current2:TSSigma", type='[d', size=None, deviceName=name + " Cur2 TSSigma") self.ts_total3 = create_channel_device(prefix+"Current3:TSTotal", type='[d', size=None, deviceName=name + " Cur3 TSTotal") self.ts_net3 = create_channel_device(prefix+"Current3:TSNet", type='[d', size=None, deviceName=name + " Cur3 TSNet") self.ts_min3 = create_channel_device(prefix+"Current3:TSMinValue", type='[d', size=None, deviceName=name + " Cur3 TSMin") self.ts_max3 = create_channel_device(prefix+"Current3:TSMaxValue", type='[d', size=None, deviceName=name + " Cur3 TSMax") self.ts_minx3 = create_channel_device(prefix+"Current3:TSMinX", type='[d', size=None, deviceName=name + " Cur3 TSMaxX") self.ts_maxx3 = create_channel_device(prefix+"Current3:TSMeanValue", type='[d', size=None, deviceName=name + " Cur3 TSMean") self.ts_sigma3 = create_channel_device(prefix+"Current3:TSSigma", type='[d', size=None, deviceName=name + " Cur3 TSSigma") self.ts_total4 = create_channel_device(prefix+"Current4:TSTotal", type='[d', size=None, deviceName=name + " Cur4 TSTotal") self.ts_net4 = create_channel_device(prefix+"Current4:TSNet", type='[d', size=None, deviceName=name + " Cur4 TSNet") self.ts_min4 = create_channel_device(prefix+"Current4:TSMinValue", type='[d', size=None, deviceName=name + " Cur4 TSMin") self.ts_max4 = create_channel_device(prefix+"Current4:TSMaxValue", type='[d', size=None, deviceName=name + " Cur4 TSMax") self.ts_minx4 = create_channel_device(prefix+"Current4:TSMinX", type='[d', size=None, deviceName=name + " Cur4 TSMaxX") self.ts_maxx4 = create_channel_device(prefix+"Current4:TSMeanValue", type='[d', size=None, deviceName=name + " Cur4 TSMean") self.ts_sigma4 = create_channel_device(prefix+"Current4:TSSigma", type='[d', size=None, deviceName=name + " Cur4 TSSigma") self.ts_posX_sigma = create_channel_device(prefix+"PosX:TSSigma", type='[d', size=None, deviceName=name + " PosX TSSigma") self.ts_posY_sigma = create_channel_device(prefix+"PosY:TSSigma", type='[d', size=None, deviceName=name + " PosY TSSigma") self.ts_posX_total = create_channel_device(prefix+"PosX:TSTotal", type='[d', size=None, deviceName=name + " PosX TSTotal") self.ts_posY_total = create_channel_device(prefix+"PosY:TSTotal", type='[d', size=None, deviceName=name + " PosY TSTotal") self.ts_sumAll_sigma = create_channel_device(prefix+"SumAll:TSSigma", type='[d', size=None, deviceName=name + " sumAll TSSigma") self.ts_sumAll_total = create_channel_device(prefix+"SumAll:TSTotal", type='[d', size=None, deviceName=name + " sumAll TSTotal") self.posX_Centroid = create_channel_device(prefix+"PosX:CentroidX_RBV", type='[d', size=None, deviceName=name + "posX Centroid") self.posY_Centroid = create_channel_device(prefix+"PosY:CentroidX_RBV", type='[d', size=None, deviceName=name + "posY Centroid") self.setChildren([self.array_data, self.ts_total,self.ts_net, self.ts_min, self.ts_max, self.ts_minx, \ self.ts_maxx, self.ts_sigma, \ self.ts_total2,self.ts_net2, self.ts_min2, self.ts_max2, self.ts_minx2, \ self.ts_maxx2, self.ts_sigma2, \ self.ts_total3,self.ts_net3, self.ts_min3, self.ts_max3, self.ts_minx3, \ self.ts_maxx3, self.ts_sigma3, \ self.ts_total4,self.ts_net4, self.ts_min4, self.ts_max4, self.ts_minx4, \ self.ts_maxx4, self.ts_sigma4, self.ts_posX_sigma, self.ts_posY_sigma, \ self.ts_posX_total, self.ts_posY_total, self.ts_sumAll_sigma, self.ts_sumAll_total,\ self.posX_Centroid, self.posY_Centroid ]) def start(self): stop() time.sleep(0.2) caputq(self.prefix + "Acquire", "Acquire") # caputq(self.prefix + "Current1:TSControl", "Erase/Start") # caputq(self.prefix + "Current2:TSControl", "Erase/Start") # caputq(self.prefix + "Current3:TSControl", "Erase/Start") # caputq(self.prefix + "Current4:TSControl", "Erase/Start") # caputq(self.prefix + "PosX:TSControl", "Erase/Start") # caputq(self.prefix + "PosY:TSControl", "Erase/Start") # caputq(self.prefix + "SumAll:TSControl", "Erase/Start") caputq(self.prefix + "TS:TSAcquire", 1) def stop(self): caput(self.prefix + "Acquire", "Stop") def isReady(self): return caget (self.prefix + "Current4:TSAcquiring") == "Done" ################################################################################################### #Scripted dvice instantiation ################################################################################################### ################################################################################################### #Scripted dvice instantiation ################################################################################################### import ch.psi.pshell.epics.ChannelDoubleArray as ChannelDoubleArray for bpm in [1, 3, 5, 6]: for cur in range(4): dev = ChannelDoubleArray("pico_bpm" + str(bpm) + "_ts_cur" + str(cur+1), "X12SA-OP-BPM" + str(bpm) + ":TS:Current" + str(cur+1) + ":TimeSeries", -1, -1, True) add_device( dev, True) #dev.monitored = True #dev.polling = 3000 try: add_device(PicoAmp("pico_amp_" + str(bpm), "X12SA-OP-BPM" + str(bpm) + ":"), force = True) except: print "Cannot create pico amp " + str(bpm) #add_device(PicoAmp("pico_amp", "X12SA-PC-BPM5:AH501:"), force = True) #add_device(PicoAmp("pico_amp_2", "X12SA-PC-BPM5:AH501:"), force = True) #add_device(PicoAmp("pico_amp", "X12SA-OP-BPM5:"), force = True) ################################################################################################### #Alternative scan data layouts ################################################################################################### import ch.psi.pshell.data.LayoutDefault class LayoutParallelScan(ch.psi.pshell.data.LayoutDefault): def getDefaultGroup(self, scan): return scan.readables[0].name def set_parallel_layout(): get_context().dataManager.setLayout(LayoutParallelScan()) def set_default_layout(): get_context().dataManager.setLayout(ch.psi.pshell.data.LayoutDefault())