This commit is contained in:
root
2018-11-26 09:44:17 +01:00
parent 02cb40fb12
commit 35e61c605d
23 changed files with 521 additions and 127 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
#Tue Sep 19 11:13:25 CEST 2017
#Sun Oct 07 11:51:48 CEST 2018
colormap=Grayscale
colormapAutomatic=false
colormapLogarithmic=false
colormapMax=NaN
colormapMin=NaN
flipHorizontally=false
+12 -11
View File
@@ -1,19 +1,20 @@
#Thu Sep 27 11:01:54 CEST 2018
#Mon Nov 26 09:44:10 CET 2018
\u0000=
\u0000\u0000\u0000\u0000=
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
colormap=Flame
colormapAutomatic=true
colormapLogarithmic=false
colormapMax=5000.0
colormapMin=42.0
colormapMax=3680.0
colormapMin=76.0
flipHorizontally=false
flipVertically=false
grayscale=false
imageHeight=1200
imageWidth=1920
imageHeight=2160
imageWidth=2560
invert=false
regionStartX=0
regionStartY=0
regionStartX=1
regionStartY=1
rescaleFactor=1.0
rescaleOffset=0.0
roiHeight=-1
@@ -24,10 +25,10 @@ rotation=0.0
rotationCrop=false
scale=1.0
serverURL=null
spatialCalOffsetX=-93.53143059339158
spatialCalOffsetY=-95.47500121434692
spatialCalScaleX=-8.673880440848214
spatialCalScaleY=-8.839778747558594
spatialCalOffsetX=-861.4939970777481
spatialCalOffsetY=-820.4883730911062
spatialCalScaleX=-18.90359092620482
spatialCalScaleY=-19.37984500632817
spatialCalUnits=null
t=
transpose=false
+2 -2
View File
@@ -1,5 +1,5 @@
#Thu Sep 27 13:33:31 CEST 2018
defaultSpeed=6000.0
#Sun Nov 25 18:06:59 CET 2018
defaultSpeed=50.0
estbilizationDelay=0
hasEnable=false
homingType=None
+5 -5
View File
@@ -1,4 +1,4 @@
#Thu Sep 27 07:12:40 CEST 2018
#Thu Nov 22 19:50:32 CET 2018
colormap=Flame
colormapAutomatic=true
colormapLogarithmic=false
@@ -17,9 +17,9 @@ roiY=0
rotation=0.0
rotationCrop=false
scale=1.0
spatialCalOffsetX=0.0
spatialCalOffsetY=0.0
spatialCalScaleX=1.0
spatialCalScaleY=1.0
spatialCalOffsetX=-861.4939970777481
spatialCalOffsetY=-820.4883730911062
spatialCalScaleX=-18.90359092620482
spatialCalScaleY=-19.37984500632817
spatialCalUnits=mm
transpose=false
+2 -1
View File
@@ -1,4 +1,4 @@
#Tue Feb 06 17:00:47 CET 2018
#Thu Oct 18 10:40:46 CEST 2018
maxValue=NaN
minValue=NaN
offset=0.0
@@ -6,4 +6,5 @@ precision=-1
resolution=NaN
rotation=false
scale=1.0
sign_bit=0
unit=null
+116 -36
View File
@@ -844,6 +844,8 @@ public class ScreenPanel3 extends Panel {
parseUserOverlays();
errorOverlay = null;
lastMarkerPos = null;
lastFrame = null;
lastPipelinePars = null;
if (dataTableDialog != null) {
dataTableDialog.dispose();
@@ -947,7 +949,7 @@ public class ScreenPanel3 extends Panel {
}
server.start(pipelineName, instanceName);
updateServerControls();
updatePipelineControls();
checkThreshold.setEnabled(true);
checkGoodRegion.setEnabled(true);
} else {
@@ -1023,7 +1025,7 @@ public class ScreenPanel3 extends Panel {
} catch (Exception ex) {
showException(ex);
renderer.clearOverlays();
updateServerControls();
updatePipelineControls();
if (renderer.getDevice() == null) {
//renderer.setZoom(1.0);
//renderer.setMode(RendererMode.Zoom);
@@ -1302,40 +1304,97 @@ public class ScreenPanel3 extends Panel {
updatingColormap = false;
}
boolean updatingServerControls;
void updateServerControls() {
if (server != null) {
updatingServerControls = true;
try {
checkBackground.setSelected(server.getBackgroundSubtraction());
Double threshold = (server.getThreshold());
checkThreshold.setSelected(threshold != null);
spinnerThreshold.setValue((threshold == null) ? 0 : threshold);
Map<String, Object> gr = (server.getGoodRegion());
checkGoodRegion.setSelected(gr != null);
if (gr != null) {
spinnerGrThreshold.setValue(((Number) gr.get("threshold")).doubleValue());
spinnerGrScale.setValue(((Number) gr.get("gfscale")).doubleValue());
}
Map<String, Object> slicing = (server.getSlicing());
checkSlicing.setSelected(slicing != null);
if (slicing != null) {
spinnerSlNumber.setValue(((Number) slicing.get("number_of_slices")).intValue());
spinnerSlScale.setValue(((Number) slicing.get("scale")).doubleValue());
spinnerSlOrientation.setValue((String) slicing.get("orientation"));
}
} catch (Exception ex) {
ex.printStackTrace();
}
void updatePipelineProperties(){
goodRegion = checkGoodRegion.isSelected();
spinnerThreshold.setVisible(checkThreshold.isSelected());
setGoodRegionOptionsVisible(goodRegion);
slicing = goodRegion && checkSlicing.isSelected();
setSlicingOptionsVisible(slicing);
updatingServerControls = false;
updatingServerControls = false;
}
boolean updatingServerControls;
void updatePipelineControls() {
if (server != null) {
updatingServerControls = true;
if (server.isStarted()){
try {
checkBackground.setSelected(server.getBackgroundSubtraction());
Double threshold = (server.getThreshold());
checkThreshold.setSelected(threshold != null);
spinnerThreshold.setValue((threshold == null) ? 0 : threshold);
Map<String, Object> gr = (server.getGoodRegion());
checkGoodRegion.setSelected(gr != null);
if (gr != null) {
spinnerGrThreshold.setValue(((Number) gr.get("threshold")).doubleValue());
spinnerGrScale.setValue(((Number) gr.get("gfscale")).doubleValue());
}
Map<String, Object> slicing = (server.getSlicing());
checkSlicing.setSelected(slicing != null);
if (slicing != null) {
spinnerSlNumber.setValue(((Number) slicing.get("number_of_slices")).intValue());
spinnerSlScale.setValue(((Number) slicing.get("scale")).doubleValue());
spinnerSlOrientation.setValue((String) slicing.get("orientation"));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
updatePipelineProperties();
}
}
boolean changedPipelinePars(Map pars1, Map pars2) {
String[] keys = new String[]{"image_background_enable", "image_threshold", "image_good_region",
"threshold", "gfscale", "image_slices", "number_of_slices", "scale", "orientation"};
for (String key:keys){
Object o1 = pars1.get(key);
Object o2 = pars2.get(key);
if (o1==null){
if (o2!=null){
return true;
}
} else if (!o1.equals(o2)){
return true;
}
}
return false;
}
void updatePipelineControls(Map pars) {
if (pars!=null){
updatingServerControls = true;
try {
boolean background = (boolean) pars.get("image_background_enable");
checkBackground.setSelected(background);
Double threshold = (Double) (pars.get("image_threshold"));
checkThreshold.setSelected(threshold != null);
spinnerThreshold.setValue((threshold == null) ? 0 : threshold);
Map<String, Object> gr = (Map<String, Object>) pars.get("image_good_region");
checkGoodRegion.setSelected(gr != null);
if (gr != null) {
Double value = ((Number) gr.get("threshold")).doubleValue();
spinnerGrThreshold.setValue(value);
Double scale = ((Number) gr.get("gfscale")).doubleValue();
spinnerGrScale.setValue(scale);
}
Map<String, Object> slicing = (Map<String, Object>) (pars.get("image_slices"));
checkSlicing.setSelected(slicing != null);
if (slicing != null) {
int slices = ((Number) slicing.get("number_of_slices")).intValue();
spinnerSlNumber.setValue(slices);
double scale = ((Number) slicing.get("scale")).doubleValue();
spinnerSlScale.setValue(scale);
String orientation = (String) slicing.get("orientation");
spinnerSlOrientation.setValue(orientation);
}
} catch (Exception ex) {
ex.printStackTrace();
}
updatePipelineProperties();
}
}
void setGoodRegionOptionsVisible(boolean visible) {
spinnerGrThreshold.setVisible(visible);
@@ -1392,6 +1451,10 @@ public class ScreenPanel3 extends Panel {
updatingButtons = false;
}
}
Frame lastFrame = null;
Map lastPipelinePars = null;
@Override
protected void onTimer() {
@@ -1415,6 +1478,23 @@ public class ScreenPanel3 extends Panel {
updateColormap();
updateButtons();
checkHistogram.setSelected((histogramDialog != null) && (histogramDialog.isShowing()));
try{
Frame frame = getCurrentFrame();
if (frame!=lastFrame){
lastFrame = frame;
if (frame!=null){
Map<String, Object> pars = getProcessingParameters(frame.cache);
if((lastPipelinePars==null) || changedPipelinePars(pars, lastPipelinePars)){
//System.out.println("Update pipeline: " + pars);
lastPipelinePars = pars;
updatePipelineControls(pars);
}
}
}
} catch (Exception ex){
ex.printStackTrace();
}
}
Pen penFit = new Pen(new Color(192, 105, 0), 0);
@@ -3554,7 +3634,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_spinnerThresholdonChange
@@ -3568,7 +3648,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
updatingServerControls = true;
checkBackground.setSelected(false);
updatingServerControls = false;
@@ -3589,7 +3669,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_checkThresholdActionPerformed
@@ -3608,7 +3688,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_checkGoodRegionActionPerformed
@@ -3621,7 +3701,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_spinnerGrThresholdonChange
@@ -3655,7 +3735,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_checkSlicingActionPerformed
@@ -3668,7 +3748,7 @@ public class ScreenPanel3 extends Panel {
}
} catch (Exception ex) {
showException(ex);
updateServerControls();
updatePipelineControls();
}
}
}//GEN-LAST:event_spinnerSlicingChange
+62 -5
View File
@@ -4,6 +4,7 @@
import ch.psi.pshell.device.Device;
import ch.psi.pshell.device.DeviceAdapter;
import ch.psi.pshell.device.DeviceListener;
import ch.psi.pshell.epics.ChannelDouble;
import ch.psi.pshell.epics.ChannelInteger;
import ch.psi.pshell.epics.Epics;
@@ -927,14 +928,70 @@ public class WireScan extends Panel {
onStateChange(getState(), getState());
}//GEN-LAST:event_comboWireScannerActionPerformed
ChannelDouble channelStartX;
ChannelDouble channelEndX;
ChannelDouble channelStartY;
ChannelDouble channelEndY;
private void comboScanTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboScanTypeActionPerformed
try {
if (channelStartX != null){
channelStartX.close();
channelStartX = null;
}
if (channelEndX != null){
channelEndX.close();
channelEndX = null;
}
if (channelStartY != null){
channelStartY.close();
channelStartY = null;
}
if (channelEndY != null){
channelEndY.close();
channelEndY = null;
}
if (!isBackground()){
boolean set1 = isSet1();
spinnerStartX.setValue(Epics.get(currentScannner + (set1 ? ":W1X" : ":W2X") + "_START_SP", Double.class));
spinnerEndX.setValue(Epics.get(currentScannner + (set1 ? ":W1X" : ":W2X") + "_END_SP", Double.class));
spinnerStartY.setValue(Epics.get(currentScannner + (set1 ? ":W1Y" : ":W2Y") + "_START_SP", Double.class));
spinnerEndY.setValue(Epics.get(currentScannner + (set1 ? ":W1Y" : ":W2Y") + "_END_SP", Double.class));
boolean set1 = isSet1();
channelStartX = new ChannelDouble("Start X", currentScannner + (set1 ? ":W1X" : ":W2X") + "_START_SP");
channelEndX = new ChannelDouble("End X", currentScannner + (set1 ? ":W1X" : ":W2X") + "_END_SP");
channelStartY = new ChannelDouble("Start Y", currentScannner + (set1 ? ":W1Y" : ":W2Y") + "_START_SP");
channelEndY = new ChannelDouble("End X", currentScannner + (set1 ? ":W1Y" : ":W2Y") + "_END_SP");
channelStartX.initialize(); channelStartX.setMonitored(true);
channelEndX.initialize(); channelEndX.setMonitored(true);
channelStartY.initialize(); channelStartY.setMonitored(true);
channelEndY.initialize(); channelEndY.setMonitored(true);
channelStartX.addListener(new DeviceAdapter() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
spinnerStartX.setValue(((Number)value).doubleValue());
}
});
channelEndX.addListener(new DeviceAdapter() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
spinnerEndX.setValue(((Number)value).doubleValue());
}
});
channelStartY.addListener(new DeviceAdapter() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
spinnerStartY.setValue(((Number)value).doubleValue());
}
});
channelEndY.addListener(new DeviceAdapter() {
@Override
public void onValueChanged(Device device, Object value, Object former) {
spinnerEndY.setValue(((Number)value).doubleValue());
}
});
spinnerStartX.setValue(channelStartX.read());
spinnerEndX.setValue(channelEndX.read());
spinnerStartY.setValue(channelStartY.read());
spinnerEndY.setValue(channelEndY.read());
}
} catch (Exception ex) {
showException(ex);
+49
View File
@@ -0,0 +1,49 @@
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
A1 = ChannelDouble("MK energy", "S20SY02-MK:ENERGY-SP")
S1 = ChannelDouble("S20SY02-DBPM150:Y1", "S20SY02-DBPM150:Y1")
S2 = ChannelDouble("SATSY01-DBPM010:Y1", "SATSY01-DBPM010:Y1")
S3 = ChannelDouble("SATSY01-DBPM010:Q1", "SATSY01-DBPM010:Q1")
S4 = ChannelDouble("S20SY02-DBPM120:Y1", "S20SY02-DBPM120:Y1")
A1.initialize()
S1.initialize()
S2.initialize()
S3.initialize()
S4.initialize()
A1_init = A1.read()
A1i = 1300.0
A1f = 3300.0
step = 25.0
lat = 0.1
nav = 10
plt = plot(None, title="Output")[0]
plt.clear()
plt.setStyle(plt.Style.ErrorY)
plt.addSeries(LinePlotErrorSeries("Sensor1", Color.red))
def after_sample(record, scan):
plt.getSeries(0).appendData(record.positions[0], record.values[0].mean, record.values[0].stdev)
try:
S1_averager = create_averager(S1, nav, lat)
S2_averager = create_averager(S2, nav, lat)
S2_averager.monitored=True
S3_averager = create_averager(S3, nav, lat)
S3_averager.monitored=True
S4_averager = create_averager(S4, nav, lat)
S4_averager.monitored=True
time.sleep(4.0)
r = lscan(A1, (S1_averager, S2_averager, S3_averager, S4_averager), A1i, A1f, step, latency=0.5, after_read = after_sample)
Act1 = r.getPositions(0)
S1mean = [val.mean for val in r.getReadable(0)]
S1rms = [val.stdev for val in r.getReadable(0)]
S2mean = [val.mean for val in r.getReadable(1)]
S2rmsn = [val.stdev for val in r.getReadable(1)]
S3mean = [val.mean for val in r.getReadable(2)]
S3rmsn = [val.stdev for val in r.getReadable(2)]
S4mean = [val.mean for val in r.getReadable(3)]
S4rmsn = [val.stdev for val in r.getReadable(3)]
finally:
A1.write(A1_init)
A1.close()
S1.close()
S2.close()
S3.close()
S4.close()
+49
View File
@@ -0,0 +1,49 @@
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
A1 = ChannelDouble("MK energy", "S20SY02-MK:ENERGY-SP")
S1 = ChannelDouble("S20SY02-DBPM150:Y1", "S20SY02-DBPM150:Y1")
S2 = ChannelDouble("SATSY01-DBPM010:Y1", "SATSY01-DBPM010:Y1")
S3 = ChannelDouble("SATSY01-DBPM010:Q1", "SATSY01-DBPM010:Q1")
S4 = ChannelDouble("S20SY02-DBPM120:Y1", "S20SY02-DBPM120:Y1")
A1.initialize()
S1.initialize()
S2.initialize()
S3.initialize()
S4.initialize()
A1_init = A1.read()
A1i = 1300.0
A1f = 3300.0
step = 25.0
lat = 0.1
nav = 10
plt = plot(None, title="Output")[0]
plt.clear()
plt.setStyle(plt.Style.ErrorY)
plt.addSeries(LinePlotErrorSeries("Sensor1", Color.red))
def after_sample(record, scan):
plt.getSeries(0).appendData(record.positions[0], record.values[0].mean, record.values[0].stdev)
try:
S1_averager = create_averager(S1, nav, lat)
S2_averager = create_averager(S2, nav, lat)
S2_averager.monitored=True
S3_averager = create_averager(S3, nav, lat)
S3_averager.monitored=True
S4_averager = create_averager(S4, nav, lat)
S4_averager.monitored=True
time.sleep(4.0)
r = lscan(A1, (S1_averager, S2_averager, S3_averager, S4_averager), A1i, A1f, step, latency=0.5, after_read = after_sample)
Act1 = r.getPositions(0)
S1mean = [val.mean for val in r.getReadable(0)]
S1rms = [val.stdev for val in r.getReadable(0)]
S2mean = [val.mean for val in r.getReadable(1)]
S2rmsn = [val.stdev for val in r.getReadable(1)]
S3mean = [val.mean for val in r.getReadable(2)]
S3rmsn = [val.stdev for val in r.getReadable(2)]
S4mean = [val.mean for val in r.getReadable(3)]
S4rmsn = [val.stdev for val in r.getReadable(3)]
finally:
A1.write(A1_init)
A1.close()
S1.close()
S2.close()
S3.close()
S4.close()
@@ -119,6 +119,14 @@ if do_elog:
log_msg = log_msg + "\nImages: " + str(number_images)
log_msg = log_msg + "\nBackground: enabled=" + str(use_background) + " multiple=" + str(multiple_background) + " number=" + str(number_backgrounds)
log_msg = log_msg + "\nPlot index: " + str(centroid_plot_index)
try:
log_msg = log_msg + ("Virtual catode (x,y): " + str(caget("SLG-LCAM-C103:FIT-XPOS", 's')) + ", " + str(caget("SLG-LCAM-C103:FIT-YPOS", 's')))
log_msg = log_msg + ("Position (x,y,rx,ry,rz): " + str(caget("SINEG01-MSOL130:X", 's')) + ", " + str(caget("SINEG01-MSOL130:Y", 's')) + ", " + \
str(caget("SINEG01-MSOL130:ROT_X", 's')) + ", " + str(caget("SINEG01-MSOL130:ROT_Y", 's')) + ", " + str(caget("SINEG01-MSOL130:ROT_Z", 's')))
except:
pass
log_msg = log_msg + "\n\n" + r.print()
sleep(0.1) #Give some time to plot to be finished - it is not sync with acquisition
+5
View File
@@ -124,6 +124,11 @@ if do_elog:
log_msg = log_msg + "\nImages: " + str(number_images)
log_msg = log_msg + "\nBackground: enabled=" + str(use_background) + " multiple=" + str(multiple_background) + " number=" + str(number_backgrounds)
log_msg = log_msg + "\nPlot index: " + str(centroid_plot_index)
try:
log_msg = log_msg + ("Virtual catode (x,y): " + str(caget("SLG-LCAM-C103:FIT-XPOS", 's')) + ", " + str(caget("SLG-LCAM-C103:FIT-YPOS", 's')))
except:
pass
log_msg = log_msg + "\n\n" + r.print()
sleep(0.1) #Give some time to plot to be finished - it is not sync with acquisition
+6 -3
View File
@@ -11,7 +11,7 @@ run("Diagnostics/sig_process_wrapper")
#set_exec_pars(layout="default")
#Paramter parsing
prefix = args[0] if has_args else SINDI01-DWSC090 # "S10DI01-DWSC010" #"S10CB07-DWSC440" #"SINDI01-DWSC090"
prefix = args[0] if has_args else "SARCL01-DWSC160" # "SINDI01-DWSC090" # "S10DI01-DWSC010" #"S10CB07-DWSC440" #"SINDI01-DWSC090"
scan_type = args[1] if has_args else WireScanner.WireX1
scan_range = args[2] if has_args else []
cycles = args[3] if has_args else 2
@@ -28,7 +28,7 @@ print has_args, do_elog
print "WireScan parameters: ", prefix, scan_type, scan_range, cycles, n_shot, bpms, blms, bkgrd, bunch
FILTER_BEAM_OK = True
SET_BLM_WS_MODE = True
SET_BLM_WS_SETTLING_TIME = 2.0
SET_BLM_WS_BS_READBACK_TIMEOUT = 10000 #ms
@@ -373,7 +373,10 @@ try:
st.getChild("blm1_ws_mode").waitValue(1, SET_BLM_WS_BS_READBACK_TIMEOUT)
print "Reading background..."
do_background()
st.setFilter(scanner.curr_cycl.get_name() + ">0 AND SIN-CVME-TIFGUN-EVR0:BEAMOK == 1") #scanner.status_channels[0].get_name() + ">0" not used because we must the transition to know when the finished
stream_filter = scanner.curr_cycl.get_name() + ">0"
if FILTER_BEAM_OK:
stream_filter = stream_filter + " AND SIN-CVME-TIFGUN-EVR0:BEAMOK == 1"
st.setFilter(stream_filter)
print "Executing scan 1..."
do_scan(0)
if scan_type in [WireScanner.Set1, WireScanner.Set2]:
+1 -1
View File
@@ -58,7 +58,7 @@ def set_wire_scan_range(wire, start, end):
###################################################################################################
print "--------------- Find COM --------------- "
set_status("Performing wire scan to find initial COM...")
write_ws_gain(initial_gain)
set_gain(initial_gain)
print "Setting gain=", initial_gain
+49
View File
@@ -0,0 +1,49 @@
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
A1 = ChannelDouble("MK energy", "S20SY02-MK:ENERGY-SP")
S1 = ChannelDouble("S20SY02-DBPM150:Y1", "S20SY02-DBPM150:Y1")
S2 = ChannelDouble("SATSY01-DBPM010:Y1", "SATSY01-DBPM010:Y1")
S3 = ChannelDouble("SATSY01-DBPM010:Q1", "SATSY01-DBPM010:Q1")
S4 = ChannelDouble("S20SY02-DBPM120:Y1", "S20SY02-DBPM120:Y1")
A1.initialize()
S1.initialize()
S2.initialize()
S3.initialize()
S4.initialize()
A1_init = A1.read()
A1i = 1700.0
A1f = 3500.0
step = 25.0
lat = 0.1
nav = 10
plt = plot(None, title="Output")[0]
plt.clear()
plt.setStyle(plt.Style.ErrorY)
plt.addSeries(LinePlotErrorSeries("Sensor1", Color.red))
def after_sample(record, scan):
plt.getSeries(0).appendData(record.positions[0], record.values[0].mean, record.values[0].stdev)
try:
S1_averager = create_averager(S1, nav, lat)
S2_averager = create_averager(S2, nav, lat)
S2_averager.monitored=True
S3_averager = create_averager(S3, nav, lat)
S3_averager.monitored=True
S4_averager = create_averager(S4, nav, lat)
S4_averager.monitored=True
time.sleep(4.0)
r = lscan(A1, (S1_averager, S2_averager, S3_averager, S4_averager), A1i, A1f, step, latency=0.5, after_read = after_sample)
Act1 = r.getPositions(0)
S1mean = [val.mean for val in r.getReadable(0)]
S1rms = [val.stdev for val in r.getReadable(0)]
S2mean = [val.mean for val in r.getReadable(1)]
S2rmsn = [val.stdev for val in r.getReadable(1)]
S3mean = [val.mean for val in r.getReadable(2)]
S3rmsn = [val.stdev for val in r.getReadable(2)]
S4mean = [val.mean for val in r.getReadable(3)]
S4rmsn = [val.stdev for val in r.getReadable(3)]
finally:
A1.write(A1_init)
A1.close()
S1.close()
S2.close()
S3.close()
S4.close()
+2 -3
View File
@@ -44,7 +44,7 @@ plt.setLegendVisible(True)
#Creating Phase positioner
if dry_run:
phase = Positioner("Gun Phase", "SINEG01-RSYS:SET-BEAM-PHASE-SIM", "SINEG01-RSYS:SET-BEAM-PHASE-SIM")
camera_name = "S10MA01-DSCR090" #"simulation"
camera_name = "simulation"
else:
phase = Positioner("Gun Phase", "SINEG01-RSYS:SET-BEAM-PHASE", "SINEG01-RSYS:GET-BEAM-PHASE")
camera_name = "SINBD01-DSCR010"
@@ -68,11 +68,10 @@ dx = cam_server.stream.getChild("x_rms")
cam_server.setThreshold(500)
#cam_server.captureBackground(10) #Capturing background
cam_server.setBackgroundSubtraction(False)
#cam_server.setRoi([144,1431,482,706]) #X, Y, W, H # something wrong thereto be fixed
#cam_server.setRoi([144,482,1431,706]) #X, Y, W, H # something wrong thereto be fixed
#Creating averagers
x_averager = create_averager(x, nb, -1) # -1 event based, waits for the next value
#x_averager.monitored = True # not blocking, will return last nb values
dx_averager = create_averager(dx, nb, -1)
dx_averager.monitored = True # not blocking, will return last nb values
+5 -4
View File
@@ -17,19 +17,20 @@ if (ampli_set == 'True'):
amplitude_scale = caget(station + "-RSYS:SET-VSUM-AMPLT-SCALE-CALC")
amplitude_scale_old = caget(station + "-RSYS:SET-VSUM-AMPLT-SCALE")
caput(station + "-RSYS:SET-VSUM-AMPLT-SCALE", amplitude_scale)
caput(station + "-RSYS:CMD-LOAD-CALIB-BEAM", 1)
n = n + 1
if (power_set == 'True'):
power_scale = caget(station + "-RSYS:SET-VOLT-POWER-SCALE-CALC")
power_scale_old = caget(station + "-RSYS:SET-VOLT-POWER-SCALE")
caput(station + "-RSYS:SET-VOLT-POWER-SCALE", power_scale)
caput(station + "-RSYS:CMD-LOAD-CALIB-BEAM", 1)
n = n + 1
if n > 0:
caput(station + "-RSYS:CMD-LOAD-CALIB-BEAM", 1)
if do_elog == True:
title = "Set RF calibration:" + station
log_msg = ""
if (phase_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VSUM-PHASE-OFFSET-BASE: %12.2f" % phase_offset + " deg (was %12.2f" % phase_offset_old + " deg)\n"
if (ampli_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VSUM-AMPLT-SCALE: %12.3f" % amplitude_scale + " MV (was %12.3f" % amplitude_scale_old + " MV)\n"
if (power_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VOLT-POWER-SCALE: %12.7f" % power_scale + " MW/MV^2 (was %12.5f" % power_scale_old + " MW/MV^2)"
if (phase_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VSUM-PHASE-OFFSET-BASE: %12.2f" % phase_offset + " deg (was %12.2f" % phase_offset_old + " deg )\n"
if (ampli_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VSUM-AMPLT-SCALE: %12.3f" % amplitude_scale + " MV (was %12.3f" % amplitude_scale_old + " MV )\n"
if (power_set == 'True'): log_msg = log_msg + station + "-RSYS:SET-VOLT-POWER-SCALE: %12.7f" % power_scale + " MW/MV^2 (was %12.5f" % power_scale_old + " MW/MV^2)"
attachments = []
elog(title, log_msg, attachments)
+35
View File
@@ -0,0 +1,35 @@
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
A1 = ChannelDouble("MK energy", "S20SY02-MK:ENERGY-SP")
S1 = ChannelDouble("charge 1", "SATSY01-DBPM010:Q1")
S2 = ChannelDouble("charge 2", "SATSY01-DBPM060:Q1")
A1.initialize()
S1.initialize()
S2.initialize()
A1_init = A1.read()
A1i = 2850.0
A1f = 2950.0
step = 5.0
lat = 0.1
nav = 5
plt = plot(None, title="Output")[0]
plt.clear()
plt.setStyle(plt.Style.ErrorY)
plt.addSeries(LinePlotErrorSeries("Sensor1", Color.red))
def after_sample(record, scan):
plt.getSeries(0).appendData(record.positions[0], record.values[0].mean, record.values[0].stdev)
try:
S1_averager = create_averager(S1, nav, lat)
S2_averager = create_averager(S2, nav, lat)
S2_averager.monitored=True
time.sleep(1.0)
r = lscan(A1, (S1_averager, S2_averager), A1i, A1f, step, latency=0.5, after_read = after_sample)
Act1 = r.getPositions(0)
S1mean = [val.mean for val in r.getReadable(0)]
S1rms = [val.stdev for val in r.getReadable(0)]
S2mean = [val.mean for val in r.getReadable(1)]
S2rmsn = [val.stdev for val in r.getReadable(1)]
finally:
A1.write(A1_init)
A1.close()
S1.close()
S2.close()
+49
View File
@@ -0,0 +1,49 @@
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
A1 = ChannelDouble("MK energy", "S20SY02-MK:ENERGY-SP")
S1 = ChannelDouble("", "S20SY02-DBPM150:Y1")
S2 = ChannelDouble("", "SATSY01-DBPM010:Y1")
S3 = ChannelDouble("", "SATSY01-DBPM010:Q1")
S4 = ChannelDouble("", "S20SY02-DBPM120:Y1")
A1.initialize()
S1.initialize()
S2.initialize()
S3.initialize()
S24.initialize()
A1_init = A1.read()
A1i = 1300.0
A1f = 3300.0
step = 100.0
lat = 0.1
nav = 5
plt = plot(None, title="Output")[0]
plt.clear()
plt.setStyle(plt.Style.ErrorY)
plt.addSeries(LinePlotErrorSeries("Sensor1", Color.red))
def after_sample(record, scan):
plt.getSeries(0).appendData(record.positions[0], record.values[0].mean, record.values[0].stdev)
try:
S1_averager = create_averager(S1, nav, lat)
S2_averager = create_averager(S2, nav, lat)
S2_averager.monitored=True
S3_averager = create_averager(S3, nav, lat)
S3_averager.monitored=True
S4_averager = create_averager(S4, nav, lat)
S4_averager.monitored=True
time.sleep(1.0)
r = lscan(A1, (S1_averager, S2_averager, S3_averager, S4_averager), A1i, A1f, step, latency=0.5, after_read = after_sample)
Act1 = r.getPositions(0)
S1mean = [val.mean for val in r.getReadable(0)]
S1rms = [val.stdev for val in r.getReadable(0)]
S2mean = [val.mean for val in r.getReadable(1)]
S2rmsn = [val.stdev for val in r.getReadable(1)]
S3mean = [val.mean for val in r.getReadable(2)]
S3rmsn = [val.stdev for val in r.getReadable(2)]
S4mean = [val.mean for val in r.getReadable(3)]
S4rmsn = [val.stdev for val in r.getReadable(3)]
finally:
A1.write(A1_init)
A1.close()
S1.close()
S2.close()
S3.close()
S4.close()
+7 -2
View File
@@ -2,6 +2,7 @@ import json
import java.math.BigInteger as BigInteger
import org.python.core.PyLong as PyLong
import org.python.core.PyFloat as PyFloat
import org.python.core.PyInteger as PyInteger
import traceback
import datetime
@@ -31,10 +32,12 @@ def _create_tables(paths, stream_value, data_type, shape, images):
create_dataset(root + id, 'd', dimensions = [images, len(val)])
elif isinstance(val, PyLong):
create_dataset(root + id, 'l', dimensions = [images])
elif isinstance(val, PyInteger):
create_dataset(root + id, 'i', dimensions = [images])
elif isinstance(val, PyFloat):
create_dataset(root + id, 'd', dimensions = [images])
else:
print "Unmanaged stream type: ", val, type(val)
print "Unmanaged stream type: ", id, val, type(val)
pass
@@ -55,12 +58,14 @@ def _append_frame(paths, stream_value, index, data_type, shape):
append_dataset(root + id, val, index)
elif isinstance(val, PyLong):
append_dataset(root + id, int(val), index)
elif isinstance(val, PyInteger):
append_dataset(root + id, int(val), index)
elif isinstance(val, PyFloat):
append_dataset(root + id, float(val), index)
else:
pass
except:
print id, val
print "Error persisting: ", id, " - index: ", index, "-value: " , val
traceback.print_exc()
#print "Saved frame: ", index
+3 -2
View File
@@ -7,9 +7,10 @@ import ch.psi.pshell.imaging.Colormap as Colormap
if get_exec_pars().source == CommandSource.ui:
#camera_name = "SARBD02-DSCR050" # "SLG-LCAM-C041_sp"
#camera_name = "SARBD02-DSCR050_sp" # "SLG-LCAM-C041_sp"
camera_name = "simulation_sp" # "SLG-LCAM-C041_sp"
#camera_name = "simulation_Fsp" # "SLG-LCAM-C041_sp"
camera_name = "SLG-LCAM-C041_sp"
shared = False
images = 1
images = 2
interval = -1
roi = ""
#roi = "[300, 200]"
+27 -11
View File
@@ -1,16 +1,32 @@
Eph1 = 2.165# actual photon energy
Eph2 = 2.185 # desired photon energy
Eph1 = 8.7 # actual photon energy
Eph2 = 5.8 # desired photon energy
# beam on-delay during change!
do_elog = True
undlist = ("SARUN03","SARUN04","SARUN05","SARUN06","SARUN07","SARUN08","SARUN09","SARUN10","SARUN11","SARUN12","SARUN13","SARUN14","SARUN15")
K1, K2 = {}, {}
for und in undlist:
K1 = caget(und + "-UIND030:K_SET")
K2 = ((Eph1 / Eph2 * (K1**2 + 2) - 2))**0.5
print K1,K2
caput(und + "-UIND030:K_SET", 0.07)
time.sleep(10.0)
caput(und + "-UIND030:K_SET", K2)
print "finished"
K = caget(und + "-UIND030:K_SET")
K1[und] = K
K2[und] = ((Eph1 / Eph2 * (K**2 + 2) - 2))**0.5
print K1,K2
# set laser on-delay
caput("SIN-TIMAST-TMA:Beam-Las-Delay-Sel",1)
caput("SIN-TIMAST-TMA:Beam-Apply-Cmd.PROC",1)
if Eph2 < Eph1 :
for und in undlist: caput(und + "-UIND030:K_SET", 1.1)
time.sleep(40.0)
for und in undlist: caput(und + "-UIND030:K_SET", K2[und])
time.sleep(10.0)
# set laser on-beam
caput("SIN-TIMAST-TMA:Beam-Las-Delay-Sel",0)
caput("SIN-TIMAST-TMA:Beam-Apply-Cmd.PROC",1)
#Elog entry
if do_elog:
title = "Wavelength change"
log_msg = "Old photon energy: %0.2f" % Eph1 + " kev\n"
log_msg = log_msg + "New photon energy: %0.2f" % Eph2 + " keV\n"
attachments = none
elog(title, log_msg, attachments)
-31
View File
@@ -1,31 +0,0 @@
Eph1 = 2.165 # actual photon energy
Eph2 = 2.185 # desired photon energy
do_elog = False
undlist = ("SARUN03","SARUN04","SARUN05","SARUN06","SARUN07","SARUN08","SARUN09","SARUN10","SARUN11","SARUN12","SARUN13","SARUN14","SARUN15")
K1, K2 = {}, {}
for und in undlist:
K = caget(und + "-UIND030:K_SET")
K1[und] = K
K2[und] = ((Eph1 / Eph2 * (K**2 + 2) - 2))**0.5
# set laser on-delay
caput("SIN-TIMAST-TMA:Beam-Las-Delay-Sel",1)
caput("SIN-TIMAST-TMA:Beam-Apply-Cmd.PROC",1)
if Eph2 < Eph1 :
for und in undlist: caput(und + "-UIND030:K_SET", 0.07)
time.sleep(40.0)
for und in undlist: caput(und + "-UIND030:K_SET", K2[und])
time.sleep(40.0)
# set laser on-beam
caput("SIN-TIMAST-TMA:Beam-Las-Delay-Sel",0)
caput("SIN-TIMAST-TMA:Beam-Apply-Cmd.PROC",1)
#Elog entry
if do_elog:
title = "Wavelength change"
log_msg = "Old photon energy: %0.2f" % Eph1 + " kev\n"
log_msg = log_msg + "New photon energy: %0.2f" % Eph2 + " keV\n"
attachments = none
elog(title, log_msg, attachments)
+25 -9
View File
@@ -9,8 +9,8 @@ BPM_SENSORS = [("x","X1"), ("y","Y1"), ("q","Q1")] #(logic name sufix, channel s
#Paramter parsing
prefix = args[0] if is_panel else "S30CB09-DWSC440" #"SINDI01-DWSC090"
scan_type = args[1] if is_panel else "X1"
scan_range = args[2] if is_panel else [-200, 200, -200, 200]
cycles = args[3] if is_panel else 3
scan_range = args[2] if is_panel else [-2000, 800, 0, 0]
cycles = args[3] if is_panel else 1
velocity = args[4] if is_panel else 200
bpms = args[5] if is_panel else ["BPM1", "BPM2"]
blms = args[6] if is_panel else ["BLM1", "BLM2"]
@@ -115,7 +115,8 @@ def do_background():
r = tscan ( channels, bkgrd, 0.01)
for i in range(len(r.getReadables())):
d = r.getReadable(i)
path = get_exec_pars().group + "/"+ r.getReadables()[i].name
path = get_exec_pars().group + "/data/"+ r.getReadables()[i].name
print path
set_attribute(path, "Mean", mean(d))
set_attribute(path, "Sigma", stdev(d) )
@@ -147,7 +148,7 @@ def do_scan(index):
l=[Sensor("w_pos")] ; l.extend(channels); l.append(Timestamp())
#mscan (st, l, -1, -1, take_initial = True, after_read = check_end_scan)
#tscan([w_pos()] + getReadables() + [Timestamp(),], 10, 0.5)
#tscan([w_pos()] + getReadables() + [Timestamp(),], 10, 0.5)
for i in range(cycles):
set_exec_pars(group=wire+"_{count}", reset=(i==0))
tscan(l, 10, 0.5)
@@ -177,20 +178,31 @@ def calculate():
for i in range(len(blms)):
msg += "Wire " + wire + " - BLM " + str(i+1) + ":\n"
try:
bg = get_attributes("background/blm" + str(i+1))["Mean"] if bkgrd>0 else 0.0
print "-----"
print "background/data/blm" + str(i+1)
print get_attributes("background/data/blm" + str(i+1))
bg = get_attributes("background/data/blm" + str(i+1))["Mean"] if bkgrd>0 else 0.0
samples = [[], [], [], []]
for cycle in range (cycles):
pos_path = wire+"_" + ("%04d" % (cycle+1)) + "/w_pos"
"""
pos_path = wire+"_" + ("%04d" % (cycle+1)) + "/data/w_pos"
pos = load_data(pos_path)
path = wire+"_" + ("%04d" % (cycle+1)) + "/blm" + str(i+1)
path = wire+"_" + ("%04d" % (cycle+1)) + "/data/blm" + str(i+1)
data = load_data(path)
sp = data #blm_remove_spikes(data)
"""
pos_path = wire+"_" + ("%04d" % (cycle+1)) + "/data/w_pos"
print "Loading ", pos_path
pos = load_data(pos_path+"/value")
path = wire+"_" + ("%04d" % (cycle+1)) + "/data/blm" + str(i+1)
print "Loading ", path
data = load_data(path+"/value")
sp = data #blm_remove_spikes(data)
sig = sp if bg is None else [v-bg for v in sp]
rms_com, rms_sigma = [10.0, 20.0] #[profile_rms_stats(pos, sig,noise_std=0, n_sigma=3.5)
set_attribute(path, "RMS COM", float("nan") if (rms_com is None) else rms_com)
set_attribute(path, "RMS Sigma", float("nan") if (rms_sigma is None) else rms_sigma)
#print [com, rms]
[off, amp, com, sigma] = [30.0, 40.0, 50.0, 60.0] #profile_gauss_stats(pos, sig, off=None, amp=None, com=None, sigma=None)
set_attribute(path, "Gauss COM", float("nan") if (com is None) else com)
@@ -198,7 +210,10 @@ def calculate():
samples[0].append(rms_com);samples[1].append(rms_sigma);samples[2].append(com);samples[3].append(sigma)
print get_exec_pars().path + " | "+ path
ret.append([rms_com, rms_sigma, com, sigma, get_exec_pars().path + "|"+ pos_path, get_exec_pars().path + "|"+ path])
#ret.append([rms_com, rms_sigma, com, sigma, get_exec_pars().path + "|"+ pos_path, get_exec_pars().path + "|"+ path])
#ret.extend([rms_com, rms_sigma, com, sigma, filename + "|"+ pos_path +"/value", filename + "|"+ path +"/value"])
ret.append([rms_com, rms_sigma, com, sigma, filename + "|"+ pos_path +"/value", filename + "|"+ path +"/value"])
#print [off, amp, com, sigma]
#from mathutils import Gaussian
@@ -225,6 +240,7 @@ def calculate():
print "Starting scan..."
try:
do_background()
do_scan(0)