diff --git a/config/variables.properties b/config/variables.properties
index d10d0650..614d7134 100644
--- a/config/variables.properties
+++ b/config/variables.properties
@@ -1,2 +1,2 @@
-#Mon Mar 09 18:14:54 CET 2020
-FileSequentialNumber=3188
+#Tue Mar 10 11:07:20 CET 2020
+FileSequentialNumber=3201
diff --git a/plugins/ManipulatorScan.form b/plugins/ManipulatorScan.form
index a253cf11..49aef1d0 100644
--- a/plugins/ManipulatorScan.form
+++ b/plugins/ManipulatorScan.form
@@ -85,14 +85,6 @@
-
-
-
-
-
-
-
-
@@ -121,6 +113,15 @@
+
+
+
+
+
+
+
+
+
@@ -178,6 +179,8 @@
+
+
@@ -333,6 +336,11 @@
+
+
+
+
+
diff --git a/plugins/ManipulatorScan.java b/plugins/ManipulatorScan.java
index 37eab54c..4c4b9760 100644
--- a/plugins/ManipulatorScan.java
+++ b/plugins/ManipulatorScan.java
@@ -115,7 +115,8 @@ public class ManipulatorScan extends Panel {
}
args.put("LATENCY", (Double) spinnerLatency.getValue());
args.put("RELATIVE", radioRelative.isSelected());
- args.put("ENDSCAN", checkEndScan.isSelected());
+ args.put("ENDSCAN", checkEndScan.isSelected());
+ args.put("FLY_SCAN", checkFlyScan.isSelected());
runAsync("ManipulatorScan", args);
@@ -182,6 +183,7 @@ public class ManipulatorScan extends Panel {
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
+ checkFlyScan = new javax.swing.JCheckBox();
panelSensors = new javax.swing.JPanel();
checkImage = new javax.swing.JCheckBox();
checkImageIntegration = new javax.swing.JCheckBox();
@@ -281,6 +283,8 @@ public class ManipulatorScan extends Panel {
jLabel8.setText("Steps:");
+ checkFlyScan.setText("Fly Scan");
+
javax.swing.GroupLayout panelPositionerLayout = new javax.swing.GroupLayout(panelPositioner);
panelPositioner.setLayout(panelPositionerLayout);
panelPositionerLayout.setHorizontalGroup(
@@ -301,12 +305,6 @@ public class ManipulatorScan extends Panel {
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(panelPositionerLayout.createSequentialGroup()
- .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(radioStepSize)
- .addComponent(radioAbsolute)
- .addComponent(radioRelative))
- .addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -327,7 +325,14 @@ public class ManipulatorScan extends Panel {
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPositionerLayout.createSequentialGroup()
.addComponent(txtSize)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+ .addComponent(spinnerStepSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addGroup(panelPositionerLayout.createSequentialGroup()
+ .addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(radioStepSize)
+ .addComponent(radioAbsolute)
+ .addComponent(radioRelative)
+ .addComponent(checkFlyScan))
+ .addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
@@ -376,7 +381,9 @@ public class ManipulatorScan extends Panel {
.addGroup(panelPositionerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(checkFlyScan)
+ .addGap(26, 26, 26))
);
panelSensors.setBorder(javax.swing.BorderFactory.createTitledBorder("Sensors"));
@@ -538,12 +545,11 @@ public class ManipulatorScan extends Panel {
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(textTotalTime, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(dvpAcqTime, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(1, 1, 1)))
+ .addGap(1, 1, 1))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+ .addComponent(checkEndScan)
+ .addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(checkEndScan)
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpAcqTime, textTotalTime});
@@ -670,6 +676,7 @@ public class ManipulatorScan extends Panel {
private javax.swing.JCheckBox checkCur3;
private javax.swing.JCheckBox checkCurrent;
private javax.swing.JCheckBox checkEndScan;
+ private javax.swing.JCheckBox checkFlyScan;
private javax.swing.JCheckBox checkImage;
private javax.swing.JCheckBox checkImageIntegration;
private javax.swing.JCheckBox checkSpectrum;
diff --git a/script/ManipulatorScan.py b/script/ManipulatorScan.py
index e66d8907..cd9527eb 100644
--- a/script/ManipulatorScan.py
+++ b/script/ManipulatorScan.py
@@ -7,6 +7,7 @@ RANGE (tuple (min, max))
STEPS (int or tuple)
LATENCY (double)
RELATIVE (BOOLEAN)
+FLY_SCAN (BOOLEAN)
"""
#set_preference(Preference.PLOT_TYPES,{'ImageIntegrator':1})
@@ -15,7 +16,26 @@ set_adc_averaging()
set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1})
try:
- lscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
+ if FLY_SCAN:
+ # time per scienta acquisition in seconds
+ time1 = time.time()
+ trig_scienta()
+ time2 = time.time()
+ scienta_time = (time2 - time1)
+ print "scienta time: ", scienta_time
+
+ if isinstance(STEPS,int):
+ raise Exception ("Fly Scan must define step size, and not number of steps")
+ STEP = STEPS
+ SPEED = STEP / scienta_time
+ fly_time = (RANGE[1] - RANGE[0]) / SPEED
+ STEPS = int(fly_time / scienta_time) + 1
+
+ print "speed: ", SPEED
+ print "scan time: ", fly_time
+ cscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, fly_time, RELATIVE, before_read=before_readout, after_read = after_readout, check_positions = False)
+ else:
+ lscan(MOTOR, SENSORS, RANGE[0], RANGE[1], STEPS, LATENCY, RELATIVE, before_read=before_readout, after_read = after_readout)
finally:
if ENDSCAN:
after_scan()
diff --git a/script/XPSSpectrum.py b/script/XPSSpectrum.py
index bd2aba06..2c9cbfa8 100644
--- a/script/XPSSpectrum.py
+++ b/script/XPSSpectrum.py
@@ -54,11 +54,14 @@ def get_binding_energy(e):
ephot = Scienta.highEnergy.take(100)
return ephot - e - workfunc
-def get_binding_range():
- return get_binding_energy(Scienta.highEnergy.take(100)), get_binding_energy(Scienta.lowEnergy.take(100))
+def get_binding_range(p=None):
+ if p is None:
+ return get_binding_energy(Scienta.highEnergy.take(100)), get_binding_energy(Scienta.lowEnergy.take(100))
+ else:
+ ke_range=p.getAxis(p.AxisId.X).getDisplayRange()
+ return get_binding_energy(ke_range.max), get_binding_energy(ke_range.min)
-
-eb2, eb1 = get_binding_range()
+eb2, eb1 = get_binding_range(p)
be_axis.setRange(eb2, eb1)
@@ -69,7 +72,7 @@ def plot_cur_spectrum():
x = Scienta.spectrumX
spectrum_series.setData(x, y)
- eb2, eb1 = get_binding_range()
+ eb2, eb1 = get_binding_range(plots[0])
if (be_axis.min != eb2) or (be_axis.max != eb1):
plots[0].resetZoom()
be_axis.setRange(eb2, eb1)