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)