133 lines
8.6 KiB
Python
133 lines
8.6 KiB
Python
###################################################################################################
|
|
# 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())
|