This commit is contained in:
gac-x09la
2021-12-07 21:41:15 +01:00
parent f48a107a2e
commit f98650d664
18 changed files with 900 additions and 182 deletions

View File

@@ -1,48 +1,48 @@
#Thu Sep 02 10:52:56 CEST 2021
hostName=
userManagement=false
disableEmbeddedAttributes=false
instanceName=SIS
#Tue Nov 16 14:43:26 CET 2021
autoSaveScanData=true
simulation=false
dataServerPort=-1
hideServerMessages=false
dataScanSaveOutput=false
userAuthenticator=
dataScanSaveScript=false
notifiedTasks=
parallelInitialization=true
dataTransferPath=
saveConsoleSessionFiles=false
hostName=
disableEmbeddedAttributes=false
serverPort=8080
versionTrackingEnabled=true
dataPath={data}/{year}_{month}/{date}/{date}_{time}_{name}
serverEnabled=false
logDaysToLive=7
dataScanReleaseRecords=false
serverEnabled=true
depthDimension=0
dataScanPreserveTypes=true
dataScanSaveOutput=false
logLevel=Info
dataScanFlushRecords=false
logPath={logs}/{date}_{time}
filePermissionsLogs=Default
dataLayout=default
disableDataFileLogs=false
sessionHandling=Off
terminalEnabled=false
notificationLevel=Off
filePermissionsScripts=Default
userAuthenticator=
logLevelConsole=Off
terminalPort=3579
filePermissionsConfig=Default
scanStreamerPort=-1
dataScanSaveScript=false
dataTransferUser=
dataScanSaveSetpoints=false
notifiedTasks=
filePermissionsData=Default
parallelInitialization=true
dataTransferPath=
saveConsoleSessionFiles=false
versionTrackingLogin={context}/svcusr-hlapp_robot
noBytecodeFiles=false
versionTrackingManual=true
versionTrackingRemote=git@git.psi.ch\:pshell_config/x09la.git
dataProvider=h5
logDaysToLive=7
logLevelConsole=Off
filePermissionsConfig=Public
scanStreamerPort=-1
dataScanSaveSetpoints=false
versionTrackingManual=true
dataTransferMode=Off
userManagement=false
instanceName=SIS
dataServerPort=-1
hideServerMessages=false
dataScanReleaseRecords=false
dataScanPreserveTypes=true
dataScanFlushRecords=false
logPath={logs}/{date}_{time}
filePermissionsLogs=Public
filePermissionsScripts=Public
filePermissionsData=Default
dataProvider=h5
saveCommandStatistics=false

View File

@@ -1,7 +1,8 @@
scienta=Scienta|X09LA-SCIENTA|||true
scienta=Scienta|X09LA-SCIENTA false|||true
current=ch.psi.pshell.epics.ChannelDouble|ARIDI-PCT:CURRENT 6|Read||true
keithley10=ch.psi.pshell.epics.ChannelDouble|X09LA-KEI10:READOUT|Read||true
keithley11=ch.psi.pshell.epics.ChannelDouble|X09LA-KEI11:READOUT|Read||true
$chamber=ch.psi.pshell.epics.ChannelString|X09LA-MA-REQ:SET|||true
$x=ch.psi.pshell.epics.Motor|X09LA-ES1-MA:TRX|||true
$y=ch.psi.pshell.epics.Motor|X09LA-ES1-MA:TRY|||true
$z=ch.psi.pshell.epics.Motor|X09LA-ES1-MA:TRZ|||true
@@ -11,8 +12,11 @@ $tilt=ch.psi.pshell.epics.Motor|X09LA-ES1-MA:TLT|||true
manipulator=ch.psi.pshell.device.MotorGroupBase|x y z phi theta tilt|||true
id_mode=ch.psi.pshell.epics.DiscretePositioner|X09LA-ID:MODE|||true
id_status=ch.psi.pshell.epics.ChannelString|X09LA-ID:OFFS-MNTR|Read||true
$shutter=ch.psi.pshell.epics.DiscretePositioner|X09LA-SIS:OPEN|||true
$energy=ch.psi.pshell.epics.Positioner|X09LA-PHS:E_SP X09LA-PGM:rbkenergy|||true
shutter=ch.psi.pshell.epics.DiscretePositioner|X09LA-SIS:OPEN|||true
grating=ch.psi.pshell.epics.DiscretePositioner|X09LA-PGM-GRCH:GRATING X09LA-PGM:grating|||true
pgm_cff=ch.psi.pshell.epics.Positioner|X09LA-PGM:cff.A.SETP X09LA-PGM:cff.A.VAL|||true
$photon_energy=ch.psi.pshell.epics.Positioner|X09LA-PHS:E_SP X09LA-PGM:rbkenergy|||true
oper_mode=ch.psi.pshell.epics.DiscretePositioner|X09LA-PHS-E:OPT|||true
temp_cryostat=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-PC-LAKESHORE:TEMP_RBV|Read||false
temp_sample1=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-PC-LAKESHORE:TEMP-B|Read||
temp_headmech=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-PC-LAKESHORE:TEMP-C|Read||
@@ -24,9 +28,10 @@ temp_cryopump=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-PC-LAKESHORE:TEM
helium_valve=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-PC-LAKESHORE:ANALOG-OUT_RBV.VAL|Read||
acmi=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-ES1-ACMI:PRESSURE|Read||
tcmp=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-ES1-TCMP:PRESSURE|Read||false
exit_slit=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-OP2-SL:TRY.VAL|Read||
fe_vert_width=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-FE-SVsize|Read||
fe_horiz_width=ch.psi.pshell.epics.ReadonlyProcessVariable|X09LA-FE-SHsize|Read||
exit_slit=ch.psi.pshell.epics.Positioner|X09LA-OP2-SL:TRY.VAL X09LA-OP2-SL:TRY.RBV|||true
fe_vert_width=ch.psi.pshell.epics.ProcessVariable|X09LA-FE-SVsize|||true
fe_horiz_width=ch.psi.pshell.epics.ProcessVariable|X09LA-FE-SHsize|||true
fe_state=ch.psi.pshell.epics.DiscretePositioner|X09LA-FE-DSAPER|||true
master=ch.psi.pshell.device.MasterPositioner|tilt x y z|||
image=ch.psi.pshell.imaging.CameraSource|scienta|||true
cam1=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.82/axis-cgi/mjpg/video.cgi?camera=1||-200|

11
config/scicat.properties Normal file
View File

@@ -0,0 +1,11 @@
#Tue Nov 16 14:38:27 CET 2021
environment=prod
testParameters=-testenv -user slssim\:slssim
sourceFolder=/sls/X09LA/Data1/X09LA/pshell
prodParameters=\ -user slssim\:slssim
devParameters=-devenv -user slssim\:slssim
ownerGroup=
type=raw
parameters=-ingest -allowexistingsource -noninteractive -autoarchive
creationLocation=/PSI/SLS/SIS
principalInvestigator=

View File

@@ -0,0 +1,4 @@
#Tue Nov 16 14:32:36 CET 2021
Sample=String
Contact=String;gobbo_a
User=String

View File

@@ -0,0 +1,2 @@
#Tue Nov 16 14:38:00 CET 2021
SessionCounter=1

View File

@@ -1,4 +1,4 @@
#Thu Sep 30 11:47:34 CEST 2021
LastRunDate=210930
DaySequentialNumber=7
FileSequentialNumber=53
#Tue Dec 07 14:58:23 CET 2021
LastRunDate=211207
DaySequentialNumber=1
FileSequentialNumber=80

10
devices/cff.properties Normal file
View File

@@ -0,0 +1,10 @@
#Tue Dec 07 11:50:14 CET 2021
offset=0.0
maxValue=2.25
rotation=false
precision=2
scale=1.0
resolution=NaN
minValue=2.25
unit=
sign_bit=0

View File

@@ -1,10 +1,10 @@
#Wed Apr 21 09:48:12 CEST 2021
#Fri Nov 12 15:40:11 CET 2021
offset=0.0
maxValue=350.0
rotation=false
precision=3
scale=1.0
resolution=0.01
minValue=19.5
minValue=0.0
unit=eV
sign_bit=0

View File

@@ -1,6 +1,10 @@
#Mon Sep 27 17:45:37 CEST 2021
unit=800.0000000
#Tue Dec 07 21:38:48 CET 2021
offset=0.0
precision=800
sign_bit=0
maxValue=200.0
precision=1
rotation=false
scale=1.0
resolution=NaN
unit=um
minValue=0.0
sign_bit=0

View File

@@ -1,6 +1,9 @@
#Mon Sep 27 17:45:37 CEST 2021
#Tue Dec 07 13:44:36 CET 2021
unit=mm
minValue=NaN
offset=0.0
maxValue=NaN
precision=3
sign_bit=0
scale=1.0
resolution=NaN

View File

@@ -1,6 +1,9 @@
#Mon Sep 27 17:45:37 CEST 2021
#Tue Dec 07 13:44:36 CET 2021
unit=mm
minValue=NaN
offset=0.0
maxValue=NaN
precision=3
sign_bit=0
scale=1.0
resolution=NaN

View File

@@ -0,0 +1,10 @@
#Tue Dec 07 16:46:29 CET 2021
minValue=2.25
unit=2.250
offset=0.0
maxValue=2.25
rotation=false
precision=2
sign_bit=0
scale=1.0
resolution=NaN

View File

@@ -0,0 +1,10 @@
#Fri Nov 12 15:14:31 CET 2021
offset=0.0
maxValue=2000.0
rotation=false
precision=-1
scale=1.0
resolution=NaN
minValue=0.0
unit=eV
sign_bit=0

View File

@@ -156,7 +156,7 @@
<Component id="panelX" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="panelY" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="18" max="32767" attributes="0"/>
<EmptySpace pref="100" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -637,7 +637,7 @@
<Component id="butonPlot" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="32767" attributes="0"/>
<Component id="detectorPlot" pref="482" max="32767" attributes="0"/>
<Component id="detectorPlot" pref="561" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
@@ -806,8 +806,8 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace pref="294" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<EmptySpace pref="175" max="32767" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel22" linkSize="9" min="-2" max="-2" attributes="0"/>
<Component id="jLabel8" linkSize="9" alignment="0" min="-2" max="-2" attributes="0"/>
@@ -816,27 +816,55 @@
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="checkCompression" alignment="0" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="checkCompression" min="-2" max="-2" attributes="0"/>
<EmptySpace min="59" pref="59" max="-2" attributes="0"/>
</Group>
<Component id="spinnerPasses" linkSize="3" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="checkZigzag" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="spinnerLatency" linkSize="3" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="spinnerPasses" linkSize="3" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="319" max="32767" attributes="0"/>
<EmptySpace min="-2" pref="139" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jLabel21" min="-2" max="-2" attributes="0"/>
<Component id="jLabel23" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="comboPol" linkSize="13" alignment="0" min="-2" pref="103" max="-2" attributes="0"/>
<Component id="comboGrating" linkSize="13" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="175" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="20" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="checkCompression" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel22" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="checkZigzag" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="52" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="3" attributes="0">
<Component id="checkCompression" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel22" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="checkZigzag" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Group type="102" attributes="0">
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel21" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="comboPol" alignment="3" min="-2" pref="27" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jLabel23" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="comboGrating" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
@@ -848,7 +876,7 @@
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="spinnerPasses" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="99" max="32767" attributes="0"/>
<EmptySpace pref="134" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -896,6 +924,122 @@
</Component>
<Component class="javax.swing.JCheckBox" name="checkCompression">
</Component>
<Component class="javax.swing.JLabel" name="jLabel21">
<Properties>
<Property name="horizontalAlignment" type="int" value="11"/>
<Property name="text" type="java.lang.String" value="Polarization:"/>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="comboPol">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="1">
<StringItem index="0" value=" "/>
</StringArray>
</Property>
<Property name="toolTipText" type="java.lang.String" value=""/>
<Property name="name" type="java.lang.String" value="id_mode" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JComboBox" name="comboGrating">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="1">
<StringItem index="0" value=" "/>
</StringArray>
</Property>
<Property name="name" type="java.lang.String" value="grating" noResource="true"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel23">
<Properties>
<Property name="horizontalAlignment" type="int" value="11"/>
<Property name="text" type="java.lang.String" value="Grating:"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel6">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Master Axis">
<Property name="tabTitle" type="java.lang.String" value="Master Axis"/>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane8" pref="743" max="32767" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="buttonEditMaster" min="-2" pref="100" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="buttonEditMaster" min="-2" max="-2" attributes="0"/>
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
</Group>
<Component id="jScrollPane8" pref="282" max="32767" attributes="0"/>
</Group>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane8">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder/>
</Border>
</Property>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="tableMaster">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="3" rowCount="0">
<Column editable="false" title="Name" type="java.lang.String"/>
<Column editable="false" title="Master" type="java.lang.String"/>
<Column editable="false" title="Slaves" type="java.lang.String"/>
</Table>
</Property>
<Property name="selectionMode" type="int" value="0"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="true"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tableMasterMouseClicked"/>
<EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tableMasterMousePressed"/>
<EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="tableMasterKeyReleased"/>
</Events>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="buttonEditMaster">
<Properties>
<Property name="text" type="java.lang.String" value="Edit"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="buttonEditMasterActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel1">
@@ -912,11 +1056,11 @@
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
<Component id="jScrollPane1" pref="159" max="32767" attributes="0"/>
<Component id="jScrollPane1" pref="217" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane2" pref="204" max="32767" attributes="0"/>
<Component id="jScrollPane2" pref="262" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane3" pref="313" max="32767" attributes="0"/>
<Component id="jScrollPane3" pref="371" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@@ -957,6 +1101,9 @@
</Table>
</Property>
<Property name="selectionMode" type="int" value="0"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="true"/>
</Property>
</Properties>
</Component>
</SubComponents>
@@ -985,6 +1132,9 @@
</Table>
</Property>
<Property name="selectionMode" type="int" value="0"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="true"/>
</Property>
</Properties>
</Component>
</SubComponents>
@@ -1006,16 +1156,18 @@
<Component class="javax.swing.JTable" name="tableScanned">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="6" rowCount="0">
<Table columnCount="5" rowCount="0">
<Column editable="false" title="Name" type="java.lang.String"/>
<Column editable="true" title="Start" type="java.lang.Double"/>
<Column editable="true" title="Stop" type="java.lang.Double"/>
<Column editable="true" title="Points" type="java.lang.Integer"/>
<Column editable="false" title="Step" type="java.lang.Double"/>
<Column editable="false" title="Units" type="java.lang.String"/>
</Table>
</Property>
<Property name="selectionMode" type="int" value="0"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="true"/>
</Property>
</Properties>
</Component>
</SubComponents>
@@ -1036,13 +1188,13 @@
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
<Component id="jScrollPane4" pref="166" max="32767" attributes="0"/>
<Component id="jScrollPane4" pref="211" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane5" pref="168" max="32767" attributes="0"/>
<Component id="jScrollPane5" pref="211" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane6" pref="168" max="32767" attributes="0"/>
<Component id="jScrollPane6" pref="211" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane7" pref="168" max="32767" attributes="0"/>
<Component id="jScrollPane7" pref="211" max="32767" attributes="0"/>
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
</Group>
</Group>

View File

@@ -1,12 +1,17 @@
import ch.psi.pshell.core.Context;
import ch.psi.pshell.core.JsonSerializer;
import ch.psi.pshell.device.DiscretePositioner;
import ch.psi.pshell.device.MasterPositioner;
import ch.psi.pshell.device.Motor;
import ch.psi.pshell.device.Positioner;
import ch.psi.pshell.device.ProcessVariable;
import ch.psi.pshell.device.ReadonlyProcessVariable;
import ch.psi.pshell.device.Register;
import ch.psi.pshell.plot.MatrixPlotSeries;
import ch.psi.pshell.plot.Plot;
import ch.psi.pshell.swing.DataPanel;
import ch.psi.pshell.swing.DevicePanel;
import ch.psi.pshell.ui.PanelProcessor;
import ch.psi.pshell.ui.QueueProcessor;
import ch.psi.utils.Arr;
@@ -27,12 +32,14 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DropMode;
import javax.swing.JComboBox;
import javax.swing.JComponent;
@@ -41,6 +48,7 @@ import javax.swing.JFileChooser;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.TransferHandler;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
@@ -54,6 +62,7 @@ public class SIStem extends PanelProcessor {
final DefaultTableModel modelInactive;
final DefaultTableModel modelFixed;
final DefaultTableModel modelScanned;
final DefaultTableModel modelMaster;
QueueProcessor queueProcessor;
JDialog dataDialog;
@@ -62,12 +71,16 @@ public class SIStem extends PanelProcessor {
final JTextField[] scientaIntFields;
final JComboBox[] scientaCombos;
final JTextField[] scientaRangeFields;
final JComboBox[] deviceCombos;
boolean intialized;
public SIStem() {
initComponents();
modelInactive = (DefaultTableModel) tableInactive.getModel();
modelFixed = (DefaultTableModel) tableFixed.getModel();
modelScanned = (DefaultTableModel) tableScanned.getModel();
modelMaster = (DefaultTableModel) tableMaster.getModel();
abstract class PositinerTransferHandler extends TransferHandler {
@@ -97,17 +110,20 @@ public class SIStem extends PanelProcessor {
try {
JTable.DropLocation dl = (JTable.DropLocation) support.getDropLocation();
String name = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor);
Positioner pos = getContext().getDevicePool().getByName(name, Positioner.class);
DefaultTableModel model = ((DefaultTableModel) ((JTable) support.getComponent()).getModel());
addPositioner(pos, model, dl.getRow(), getRowData(pos));
ProcessVariable pos = getContext().getDevicePool().getByName(name, ProcessVariable.class);
if (pos != null) {
addDevice(pos, model, dl.getRow(), getRowData(pos));
}
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
return true;
}
abstract Object[] getRowData(Positioner pos);
abstract Object[] getRowData(ProcessVariable pos);
};
tableInactive.setDragEnabled(true);
@@ -115,8 +131,8 @@ public class SIStem extends PanelProcessor {
tableInactive.setFillsViewportHeight(true);
tableInactive.setTransferHandler(new PositinerTransferHandler() {
@Override
Object[] getRowData(Positioner pos) {
return new Object[]{pos.getName()};
Object[] getRowData(ProcessVariable dev) {
return new Object[]{dev.getName()};
}
});
@@ -125,8 +141,8 @@ public class SIStem extends PanelProcessor {
tableFixed.setFillsViewportHeight(true);
tableFixed.setTransferHandler(new PositinerTransferHandler() {
@Override
Object[] getRowData(Positioner pos) {
return new Object[]{pos.getName(), Double.NaN, pos.getUnit()};
Object[] getRowData(ProcessVariable dev) {
return new Object[]{dev.getName(), Double.NaN, dev.getUnit()};
}
});
@@ -135,8 +151,8 @@ public class SIStem extends PanelProcessor {
tableScanned.setFillsViewportHeight(true);
tableScanned.setTransferHandler(new PositinerTransferHandler() {
@Override
Object[] getRowData(Positioner pos) {
return new Object[]{pos.getName(), Double.NaN, Double.NaN, 0, Double.NaN, pos.getUnit()};
Object[] getRowData(ProcessVariable dev) {
return new Object[]{dev.getName(), Double.NaN, Double.NaN, 0, dev.getUnit()};
}
});
@@ -145,6 +161,7 @@ public class SIStem extends PanelProcessor {
scientaIntFields = new JTextField[]{textSlices, textChannels};
scientaRangeFields = new JTextField[]{textXChannelMax, textXChannelMin, textYChannelMax, textYChannelMin};
scientaCombos = new JComboBox[]{comboPass, comboAcquisition, comboEnergy, comboLens, comboDetMode};
deviceCombos = new JComboBox[]{comboPol, comboGrating};
try {
Class scienta = getContext().getClassByName("Scienta");
@@ -166,20 +183,20 @@ public class SIStem extends PanelProcessor {
clear();
}
void addPositioner(Positioner pos, DefaultTableModel model, int row, Object[] data) {
void addDevice(ProcessVariable dev, DefaultTableModel model, int row, Object[] data) {
if (row < 0) {
row = model.getRowCount();
}
model.insertRow(row, data);
removePositioner(pos, modelInactive, (model == modelInactive) ? row : -1);
removePositioner(pos, modelFixed, (model == modelFixed) ? row : -1);
removePositioner(pos, modelScanned, (model == modelScanned) ? row : -1);
removeDevice(dev, modelInactive, (model == modelInactive) ? row : -1);
removeDevice(dev, modelFixed, (model == modelFixed) ? row : -1);
removeDevice(dev, modelScanned, (model == modelScanned) ? row : -1);
}
void removePositioner(Positioner pos, DefaultTableModel model, int except) {
void removeDevice(ProcessVariable dev, DefaultTableModel model, int except) {
for (int i = 0; i < model.getRowCount(); i++) {
if ((except < 0) || (i != except)) {
if (model.getValueAt(i, 0).equals(pos.getName())) {
if (model.getValueAt(i, 0).equals(dev.getName())) {
model.removeRow(i);
break;
}
@@ -193,10 +210,45 @@ public class SIStem extends PanelProcessor {
if (runCount == 0) {
clear();
}
if (getState()==State.Ready){
onStateChange(State.Ready, State.Initializing);
}
updateMaster();
}
@Override
public void onStateChange(State state, State former) {
if (!intialized) {
if ((state == State.Ready) && (former == State.Initializing)) {
try {
Class enumClass = (Class) eval("scienta.getLensModeClass()");
String[] mode_position = (String[]) eval("id_mode.getPositions()");
String[] grating_position = (String[]) eval("grating.getPositions()");
SwingUtilities.invokeLater(() -> {
try {
SwingUtils.setEnumCombo(comboLens, enumClass, true);
SwingUtils.insertCombo(comboLens, "", 0);
comboLens.setSelectedIndex(0);
comboPol.setModel(new DefaultComboBoxModel(mode_position));
SwingUtils.insertCombo(comboPol, "", 0);
comboPol.setSelectedIndex(0);
comboGrating.setModel(new DefaultComboBoxModel(grating_position));
SwingUtils.insertCombo(comboGrating, "", 0);
comboGrating.setSelectedIndex(0);
} catch (Exception ex) {
ex.printStackTrace();
Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex);
}
});
intialized = true;
} catch (Exception ex) {
ex.printStackTrace();
Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
updateControls();
}
@@ -254,8 +306,14 @@ public class SIStem extends PanelProcessor {
currentFile = new File(fileName);
Map preActions = new LinkedHashMap();
for (JComboBox combo : deviceCombos) {
if ((combo.isVisible()) && (combo.getSelectedIndex() > 0)) {
preActions.put(combo.getName(), String.valueOf(combo.getSelectedItem()));
}
}
for (JComboBox combo : scientaCombos) {
if ((combo.isVisible()) &&(combo.getSelectedIndex() > 0)) {
if ((combo.isVisible()) && (combo.getSelectedIndex() > 0)) {
preActions.put(combo.getName(), String.valueOf(combo.getSelectedItem()));
}
}
@@ -265,7 +323,7 @@ public class SIStem extends PanelProcessor {
}
}
for (JTextField text : scientaIntFields) {
if ((text.isVisible()) &&(!text.getText().isBlank())) {
if ((text.isVisible()) && (!text.getText().isBlank())) {
preActions.put(text.getName(), Integer.valueOf(text.getText().trim()));
}
}
@@ -330,6 +388,12 @@ public class SIStem extends PanelProcessor {
List<Integer> steps = (List) config.get("STEPS");
for (String name : preActions.keySet()) {
for (JComboBox combo : deviceCombos) {
if (name.equals(combo.getName())) {
combo.setSelectedItem(String.valueOf(preActions.get(name)));
break;
}
}
for (JComboBox combo : scientaCombos) {
if (name.equals(combo.getName())) {
combo.setSelectedItem(String.valueOf(preActions.get(name)));
@@ -349,14 +413,14 @@ public class SIStem extends PanelProcessor {
}
Positioner pos = getContext().getDevicePool().getByName(name, Positioner.class);
if (pos != null) {
addPositioner(pos, modelFixed, -1, new Object[]{name, preActions.get(name), pos.getUnit()});
addDevice(pos, modelFixed, -1, new Object[]{name, preActions.get(name), pos.getUnit()});
}
}
for (int i = 0; i < positioners.size(); i++) {
String name = positioners.get(i);
Positioner pos = getContext().getDevicePool().getByName(name, Positioner.class);
if (pos != null) {
addPositioner(pos, modelScanned, -1, new Object[]{name, start.get(i), stop.get(i), steps.get(i) + 1, 0, pos.getUnit()});
addDevice(pos, modelScanned, -1, new Object[]{name, start.get(i), stop.get(i), steps.get(i) + 1, pos.getUnit()});
}
}
@@ -377,6 +441,9 @@ public class SIStem extends PanelProcessor {
@Override
public void clear() {
currentFile = null;
for (JComboBox combo : deviceCombos) {
combo.setSelectedIndex(0);
}
for (JComboBox combo : scientaCombos) {
combo.setSelectedIndex(0);
}
@@ -408,13 +475,13 @@ public class SIStem extends PanelProcessor {
checkZigzag.setSelected(false);
checkCompression.setSelected(true);
updateControls();
if (isLoaded()){
if (isLoaded()) {
updateDetectorPlot();
try {
updateLens();
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
}
}
}
@@ -440,15 +507,24 @@ public class SIStem extends PanelProcessor {
void initInactive() {
modelInactive.setRowCount(0);
Positioner[] positioners = getContext().getDevicePool().getAllDevicesOrderedByName(Positioner.class);
for (Positioner pos : positioners) {
modelInactive.addRow(new Object[]{pos.getName()});
List<String> names = new ArrayList<>();
names.addAll(Arrays.asList(getContext().getDevicePool().getAllNamesOrderedByName(Motor.class)));
names.addAll(Arrays.asList(getContext().getDevicePool().getAllNamesOrderedByName(MasterPositioner.class)));
names.add("energy");
names.add("exit_slit");
names.add("fe_vert_width");
names.add("fe_horiz_width");
names.add("cff");
for (String name : names) {
modelInactive.addRow(new Object[]{name});
}
}
@Override
public void execute() throws Exception {
checkValues();
checkBeamline();
save();
if (currentFile == null) {
return;
@@ -474,12 +550,12 @@ public class SIStem extends PanelProcessor {
if (currentFile != null) {
scan = IO.getPrefix(currentFile);
String home = getContext().getSetup().expandPath(getHomePath());
String path = IO.getRelativePath(currentFile.getParentFile().getPath(), home);
if ((path!=null) && (!path.isBlank()) && !path.equals("/")){
if (!path.endsWith("/")){
path=path+"/";
String path = IO.getRelativePath(currentFile.getParentFile().getPath(), home);
if ((path != null) && (!path.isBlank()) && !path.equals("/")) {
if (!path.endsWith("/")) {
path = path + "/";
}
scan=path+scan;
scan = path + scan;
}
}
return scan;
@@ -502,44 +578,89 @@ public class SIStem extends PanelProcessor {
buttonAddToQueue.setEnabled(((state == State.Ready) && (currentFile != null)) || isDetached());
buttonAbort.setEnabled(state.isProcessing());
buttonScienta.setEnabled(state.isInitialized());
boolean selected = tableMaster.getSelectedRow() >= 0;
boolean enabled = state.isInitialized();
buttonEditMaster.setEnabled(enabled && selected);
}
void updateLens() throws Exception{
void updateMaster() {
modelMaster.setNumRows(0);
for (MasterPositioner dev : getContext().getDevicePool().getAllDevices(MasterPositioner.class)) {
try {
Positioner[] slaves = dev.getSlaves();
String[] names = new String[slaves.length];
for (int i = 0; i < slaves.length; i++) {
names[i] = slaves[i].getName();
}
modelMaster.addRow(new Object[]{dev.getName(), dev.getMaster().getName(), String.join(", ", names)});
} catch (Exception ex) {
Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex);
}
}
updateControls();
}
void updateLens() throws Exception {
String lens = (String) comboLens.getSelectedItem();
boolean empty = ((lens==null)||(lens.isBlank()));
boolean empty = ((lens == null) || (lens.isBlank()));
//if (empty){
//lens = (String) eval("str(scienta.lensMode)", true);
//lens = (String) eval("str(scienta.lensMode)", true);
//}
boolean visibleX = empty || lens.startsWith("A") || lens.startsWith("D");
boolean visibleY = empty || lens.startsWith("D");
panelX.setVisible(visibleX);
for (Component c : SwingUtils.getComponentsByType(panelX, Component.class)){
for (Component c : SwingUtils.getComponentsByType(panelX, Component.class)) {
c.setVisible(visibleX);
}
panelY.setVisible(visibleY);
for (Component c : SwingUtils.getComponentsByType(panelY, Component.class)){
for (Component c : SwingUtils.getComponentsByType(panelY, Component.class)) {
c.setVisible(visibleY);
}
}
void checkValues() {
for (int i = 0; i < modelFixed.getRowCount(); i++) {
if (Double.isNaN((Double) modelFixed.getValueAt(i, 1))) {
throw new IllegalArgumentException("Invalid value for " + modelFixed.getValueAt(i, 0));
String positioner = (String) modelFixed.getValueAt(i, 0);
Double value = (Double) modelFixed.getValueAt(i, 1);
if (Double.isNaN(value)) {
throw new IllegalArgumentException("Invalid value for " + positioner);
}
Positioner dev = (Positioner) getDevice(positioner);
dev.assertValidValue(value);
}
for (int i = 0; i < modelScanned.getRowCount(); i++) {
if (Double.isNaN((Double) modelScanned.getValueAt(i, 1))) {
throw new IllegalArgumentException("Invalid start for " + modelFixed.getValueAt(i, 0));
Double start = (Double) modelScanned.getValueAt(i, 1);
Double end = (Double) modelScanned.getValueAt(i, 2);
Integer points = (Integer) modelScanned.getValueAt(i, 3);
String positioner = (String) modelScanned.getValueAt(i, 0);
/*
if ((start == null) || Double.isNaN(start)) {
throw new IllegalArgumentException("Invalid start for " + positioner);
}
if (Double.isNaN((Double) modelScanned.getValueAt(i, 2))) {
throw new IllegalArgumentException("Invalid stop for " + modelFixed.getValueAt(i, 0));
if ((end == null) || Double.isNaN(end)) {
throw new IllegalArgumentException("Invalid stop for " + positioner);
}
if (((Integer) modelScanned.getValueAt(i, 3)) < 1) {
throw new IllegalArgumentException("Invalid points for " + modelFixed.getValueAt(i, 0));
*/
Positioner dev = (Positioner) getDevice(positioner);
dev.assertValidValue(start);
dev.assertValidValue(end);
/*
double min = Math.min(start, end);
double max = Math.max(start, end);
if ((min < dev.getMinValue()) || (max > dev.getMaxValue())) {
throw new IllegalArgumentException("Invalid scan range for " + positioner);
}
if ((points == null) || (points < 1)) {
throw new IllegalArgumentException("Invalid points for " + positioner);
}
*/
}
for (JTextArea text : new JTextArea[]{textSensors, textDiagnostics, textSnapshots, textMonitors}) {
for (String name : getDevices(text)) {
try {
@@ -584,52 +705,87 @@ public class SIStem extends PanelProcessor {
}
}
void checkBeamline() {
Register chamber = (Register) getDevice("chamber");
if (!chamber.isSimulated()) {
if (!"AC".equals(chamber.take())) {
throw new IllegalArgumentException("Manipulator not in AC");
}
}
}
void onTabChanged() {
}
void updateDetectorPlot() {
try {
int[] sensor = (int[]) eval("scienta.getSensorSize()", true);
int[] roi = (int[]) eval("scienta.getROI()", true);
roi=new int[]{roi[0], roi[1], roi[2] + roi[0], roi[3] + roi[1]};//Change to xmin, ymin, xmax, ymax
try{
roi[0]=Integer.valueOf(textXChannelMin.getText());
} catch (Exception ex){
}
try{
roi[1]=Integer.valueOf(textYChannelMin.getText());
} catch (Exception ex){
}
try{
roi[2]=Integer.valueOf(textXChannelMax.getText());
} catch (Exception ex){
}
try{
roi[3]=Integer.valueOf(textYChannelMax.getText());
} catch (Exception ex){
}
detectorPlot.getAxis(Plot.AxisId.X).setRange(0, sensor[0] - 1);
detectorPlot.getAxis(Plot.AxisId.Y).setRange(0, sensor[1] - 1);
if (detectorPlot.getNumberOfSeries()==0){
double[][] arr = new double[][]{new double[]{Double.NaN}};
detectorPlot.addSeries(new MatrixPlotSeries(""));
detectorPlot.getSeries(0).setData(arr);
}
detectorPlot.removeMarker(null);
detectorPlot.addMarker(roi[0], Plot.AxisId.X, "", Color.GREEN);
detectorPlot.addMarker(roi[1], Plot.AxisId.Y, "", Color.GREEN);
detectorPlot.addMarker(roi[2], Plot.AxisId.X, "", Color.GREEN);
detectorPlot.addMarker(roi[3], Plot.AxisId.Y, "", Color.GREEN);
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
if (getState().isInitialized()) {
new Thread(() -> {
try {
int[] sensor = (int[]) eval("scienta.getSensorSize()", true);
int[] _roi = (int[]) eval("scienta.getROI()", true);
SwingUtilities.invokeAndWait(() -> {
int[] roi = _roi;
roi = new int[]{roi[0], roi[1], roi[2] + roi[0], roi[3] + roi[1]};//Change to xmin, ymin, xmax, ymax
try {
roi[0] = Integer.valueOf(textXChannelMin.getText());
} catch (Exception ex) {
}
try {
roi[1] = Integer.valueOf(textYChannelMin.getText());
} catch (Exception ex) {
}
try {
roi[2] = Integer.valueOf(textXChannelMax.getText());
} catch (Exception ex) {
}
try {
roi[3] = Integer.valueOf(textYChannelMax.getText());
} catch (Exception ex) {
}
detectorPlot.getAxis(Plot.AxisId.X).setRange(0, sensor[0] - 1);
detectorPlot.getAxis(Plot.AxisId.Y).setRange(0, sensor[1] - 1);
if (detectorPlot.getNumberOfSeries() == 0) {
double[][] arr = new double[][]{new double[]{Double.NaN}};
detectorPlot.addSeries(new MatrixPlotSeries(""));
detectorPlot.getSeries(0).setData(arr);
}
detectorPlot.removeMarker(null);
detectorPlot.addMarker(roi[0], Plot.AxisId.X, "", Color.GREEN);
detectorPlot.addMarker(roi[1], Plot.AxisId.Y, "", Color.GREEN);
detectorPlot.addMarker(roi[2], Plot.AxisId.X, "", Color.GREEN);
detectorPlot.addMarker(roi[3], Plot.AxisId.Y, "", Color.GREEN);
});
} catch (Exception ex) {
getLogger().log(Level.WARNING, null, ex);
}
}).start();
}
}
void plotImage() throws Exception {
/*
String getMastersFile(){
return getContext().getSetup().expandPath("{config}/masters.json");
}
void saveMasters() throws IOException{
Vector vector = modelMaster.getDataVector();
String json = JsonSerializer.encode(vector, true);
Files.write(Paths.get(getMastersFile()), json.getBytes());
}
void loadMasters() throws IOException{
String json = new String(Files.readAllBytes(Paths.get(getMastersFile())));
Vector vector = (Vector) JsonSerializer.decode(json, Vector.class);
Vector header = new Vector<>();
Collections.addAll(header, SwingUtils.getTableColumnNames(tableMaster));
modelMaster.setDataVector(vector, header);
}
*/
void plotImage() throws Exception {
double[][] arr = new double[][]{new double[]{Double.NaN}};
int[] sensor = (int[]) eval("scienta.getSensorSize()", true);
int[] roi = (int[]) eval("scienta.getROI()", true);
@@ -737,6 +893,14 @@ public class SIStem extends PanelProcessor {
jLabel8 = new javax.swing.JLabel();
jLabel22 = new javax.swing.JLabel();
checkCompression = new javax.swing.JCheckBox();
jLabel21 = new javax.swing.JLabel();
comboPol = new javax.swing.JComboBox();
comboGrating = new javax.swing.JComboBox();
jLabel23 = new javax.swing.JLabel();
jPanel6 = new javax.swing.JPanel();
jScrollPane8 = new javax.swing.JScrollPane();
tableMaster = new javax.swing.JTable();
buttonEditMaster = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tableInactive = new javax.swing.JTable();
@@ -1053,7 +1217,7 @@ public class SIStem extends PanelProcessor {
.addComponent(panelX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(18, Short.MAX_VALUE))
.addContainerGap(100, Short.MAX_VALUE))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1174,7 +1338,7 @@ public class SIStem extends PanelProcessor {
.addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(butonPlot))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 482, Short.MAX_VALUE)
.addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 561, Short.MAX_VALUE)
.addContainerGap())
);
@@ -1233,12 +1397,25 @@ public class SIStem extends PanelProcessor {
jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel22.setText("Compression:");
jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel21.setText("Polarization:");
comboPol.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " }));
comboPol.setToolTipText("");
comboPol.setName("id_mode"); // NOI18N
comboGrating.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " " }));
comboGrating.setName("grating"); // NOI18N
jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel23.setText("Grating:");
javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addContainerGap(294, Short.MAX_VALUE)
.addContainerGap(175, Short.MAX_VALUE)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel22)
.addComponent(jLabel8)
@@ -1246,28 +1423,50 @@ public class SIStem extends PanelProcessor {
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(checkCompression)
.addGroup(jPanel11Layout.createSequentialGroup()
.addComponent(checkCompression)
.addGap(59, 59, 59))
.addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(checkZigzag)
.addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(319, Short.MAX_VALUE))
.addComponent(spinnerLatency, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(139, 139, 139)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel21)
.addComponent(jLabel23))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(comboPol, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comboGrating, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(175, Short.MAX_VALUE))
);
jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerLatency, spinnerPasses});
jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel22, jLabel4, jLabel8});
jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboGrating, comboPol});
jPanel11Layout.setVerticalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(checkCompression)
.addComponent(jLabel22))
.addGap(18, 18, 18)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(checkZigzag)
.addComponent(jLabel8))
.addGap(52, 52, 52)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(checkCompression)
.addComponent(jLabel22))
.addGap(18, 18, 18)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(checkZigzag)
.addComponent(jLabel8)))
.addGroup(jPanel11Layout.createSequentialGroup()
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel21)
.addComponent(comboPol, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel23)
.addComponent(comboGrating, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
@@ -1276,11 +1475,84 @@ public class SIStem extends PanelProcessor {
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(99, Short.MAX_VALUE))
.addContainerGap(134, Short.MAX_VALUE))
);
jTabbedPane1.addTab("Scan", jPanel11);
jScrollPane8.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
tableMaster.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "Master", "Slaves"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
tableMaster.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tableMaster.getTableHeader().setReorderingAllowed(false);
tableMaster.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tableMasterMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
tableMasterMousePressed(evt);
}
});
tableMaster.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
tableMasterKeyReleased(evt);
}
});
jScrollPane8.setViewportView(tableMaster);
buttonEditMaster.setText("Edit");
buttonEditMaster.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonEditMasterActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 743, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(buttonEditMaster, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(buttonEditMaster)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)))
);
jTabbedPane1.addTab("Master Axis", jPanel6);
jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Inactive"));
tableInactive.setModel(new javax.swing.table.DefaultTableModel(
@@ -1307,6 +1579,7 @@ public class SIStem extends PanelProcessor {
}
});
tableInactive.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tableInactive.getTableHeader().setReorderingAllowed(false);
jScrollPane1.setViewportView(tableInactive);
jScrollPane2.setBorder(javax.swing.BorderFactory.createTitledBorder("Fixed"));
@@ -1335,6 +1608,7 @@ public class SIStem extends PanelProcessor {
}
});
tableFixed.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tableFixed.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(tableFixed);
jScrollPane3.setBorder(javax.swing.BorderFactory.createTitledBorder("Scanned"));
@@ -1344,14 +1618,14 @@ public class SIStem extends PanelProcessor {
},
new String [] {
"Name", "Start", "Stop", "Points", "Step", "Units"
"Name", "Start", "Stop", "Points", "Units"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Integer.class, java.lang.Double.class, java.lang.String.class
java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Integer.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, true, true, true, false, false
false, true, true, true, false
};
public Class getColumnClass(int columnIndex) {
@@ -1363,6 +1637,7 @@ public class SIStem extends PanelProcessor {
}
});
tableScanned.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
tableScanned.getTableHeader().setReorderingAllowed(false);
jScrollPane3.setViewportView(tableScanned);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
@@ -1371,11 +1646,11 @@ public class SIStem extends PanelProcessor {
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 217, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE))
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1424,13 +1699,13 @@ public class SIStem extends PanelProcessor {
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 166, Short.MAX_VALUE)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
.addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
.addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
.addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
.addGap(0, 0, 0))
);
jPanel3Layout.setVerticalGroup(
@@ -1702,6 +1977,35 @@ public class SIStem extends PanelProcessor {
}
}//GEN-LAST:event_comboLensActionPerformed
private void buttonEditMasterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEditMasterActionPerformed
try {
String name = (String) modelMaster.getValueAt(tableMaster.getSelectedRow(), 0);
DevicePanel pn = showDevicePanel(name);
SwingUtils.getWindow(pn).setLocationRelativeTo(this);
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_buttonEditMasterActionPerformed
private void tableMasterKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tableMasterKeyReleased
updateControls();
}//GEN-LAST:event_tableMasterKeyReleased
private void tableMasterMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tableMasterMousePressed
updateControls();
}//GEN-LAST:event_tableMasterMousePressed
private void tableMasterMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tableMasterMouseClicked
try {
if ((evt.getClickCount() % 2) == 0) {
buttonEditMasterActionPerformed(null);
}
} catch (Exception ex) {
showException(ex);
}
}//GEN-LAST:event_tableMasterMouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton butonPlot;
@@ -1709,6 +2013,7 @@ public class SIStem extends PanelProcessor {
private javax.swing.JButton buttonAddToQueue;
private javax.swing.JButton buttonClear;
private javax.swing.JButton buttonData;
private javax.swing.JButton buttonEditMaster;
private javax.swing.JButton buttonOpen;
private javax.swing.JButton buttonSave;
private javax.swing.JButton buttonScienta;
@@ -1718,8 +2023,10 @@ public class SIStem extends PanelProcessor {
private javax.swing.JComboBox comboAcquisition;
private javax.swing.JComboBox comboDetMode;
private javax.swing.JComboBox comboEnergy;
private javax.swing.JComboBox comboGrating;
private javax.swing.JComboBox comboLens;
private javax.swing.JComboBox comboPass;
private javax.swing.JComboBox comboPol;
private ch.psi.pshell.plot.MatrixPlotJFree detectorPlot;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
@@ -1733,7 +2040,9 @@ public class SIStem extends PanelProcessor {
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
@@ -1751,6 +2060,7 @@ public class SIStem extends PanelProcessor {
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
@@ -1758,6 +2068,7 @@ public class SIStem extends PanelProcessor {
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JScrollPane jScrollPane7;
private javax.swing.JScrollPane jScrollPane8;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JPanel panelEnergy;
private javax.swing.JPanel panelX;
@@ -1766,6 +2077,7 @@ public class SIStem extends PanelProcessor {
private javax.swing.JSpinner spinnerPasses;
private javax.swing.JTable tableFixed;
private javax.swing.JTable tableInactive;
private javax.swing.JTable tableMaster;
private javax.swing.JTable tableScanned;
private javax.swing.JTextField textCenterEnergy;
private javax.swing.JTextField textCenterThetaX;

View File

@@ -7,9 +7,171 @@
###################################################################################################
# Device initialization
###################################################################################################
class Energy(PositionerBase):
def __init__(self, name, config):
ControlledVariableBase.__init__(self, name, photon_energy.config)
self.setReadback(photon_energy.getReadback())
def doRead(self):
return photon_energy.read()
def doWrite(self, val):
if not photon_energy.isInPosition(val):
change_photon_pars(_photon_energy=val)
def getMinValue(self):
er=get_energy_range()
return er[0] if er is not None else sys.maxint
def getMaxValue(self):
er=get_energy_range()
return er[1] if er is not None else -sys.maxint
add_device(Energy("energy", None), True)
def get_energy_range():
md,gr = id_mode.read(), grating.read()
if gr.startswith("G1"):
if md in ["CIRC+", "CIRC-", "LH"]:
return (20,360)
if md in ["LV"]:
return (200,360)
if md in ["LV low E"]:
return (40,120)
if md in ["LHQ"]:
return (20,200)
if md in ["OFF"]:
return (20,50)
elif gr.startswith("G2"):
if md in ["CIRC+", "CIRC-", "LH"]:
return (80,800)
if md in ["LV"]:
return (200,800)
if md in ["LV low E"]:
return (80,120)
if md in ["LHQ"]:
return (80,200)
elif gr.startswith("NIM"):
if md in ["CIRC+", "CIRC-"]:
return (20,30)
if md in ["LH", "LHQ"]:
return (10,30)
return None
#scienta.getDataArray().setMonitored(True)
class Cff(PositionerBase):
def __init__(self, name, config):
ControlledVariableBase.__init__(self, name, pgm_cff.config)
self.setReadback(pgm_cff.getReadback())
def doRead(self):
return pgm_cff.read()
def doWrite(self, val):
if not pgm_cff.isInPosition(val):
change_photon_pars(_cff=val)
def getMinValue(self):
return pgm_cff.getMinValue()
def getMaxValue(self):
return pgm_cff.getMaxValue()
add_device(Cff("cff", None), True)
class FeSettlingCondition(SettlingCondition):
def doWait(self):
time.sleep(0.5)
cawait("X09LA-FE-SV1:TR1.DMOV", 1)
cawait("X09LA-FE-SV1:TR2.DMOV", 1)
cawait("X09LA-FE-SH1:TR1.DMOV", 1)
cawait("X09LA-FE-SH1:TR2.DMOV", 1)
class IdSettlingCondition(SettlingCondition):
def doWait(self):
time.sleep(0.5)
id_status.waitValue("done", -1)
class GrSettlingCondition(SettlingCondition):
def doWait(self):
time.sleep(0.5)
cawait("X09LA:m4.DMOV", 1)
class CffSettlingCondition(SettlingCondition):
def doWait(self):
caput("X09LA-PGM:setE.PROC",1)
time.sleep(0.5)
cawait("X09LA:m1.DMOV", 1)
cawait("X09LA:m2.DMOV", 1)
#fe_state.getSetpoint().setBlockingWrite(True)
fe_state.setSettlingCondition(FeSettlingCondition())
oper_mode.getSetpoint().setBlockingWrite(True)
photon_energy.setSettlingCondition(IdSettlingCondition())
id_mode.setSettlingCondition(IdSettlingCondition())
grating.setSettlingCondition(GrSettlingCondition())
pgm_cff.setSettlingCondition(CffSettlingCondition())
def change_photon_pars(_photon_energy=None, _id_mode=None, _grating=None, _cff=None):
if (_photon_energy is not None) and (photon_energy.isInPosition(_photon_energy)):
_photon_energy = None
if _id_mode == id_mode.read():
_id_mode=None
if _grating == grating.read():
_grating=None
if _cff == pgm_cff.read():
_cff=None
if _photon_energy == _id_mode == _grating == _cff == None:
return
log("Changing photon parameters: photon_energy=" + str(_photon_energy) + " id_mode=" + str(_id_mode) + " grating=" + str(_grating) + " cff=" + str(_cff))
initial_fe_state = fe_state.read()
initial_oper_mode = oper_mode.read()
initial_v = fe_vert_width.read();
initial_h = fe_horiz_width.read()
try:
#Set front end to “Closed” state
fe_state.move("Closed")
#Set operation mode to “PGM”
oper_mode.move("PGM")
if _id_mode is not None:
#Set polarization mode
print "Setting id_mode="+str(_id_mode)
id_mode.move("OFF")
id_mode.move(_id_mode)
if _grating is not None:
#Set grating
print "Setting grating="+str(_grating)
grating.move(_grating)
if _photon_energy is not None:
#Set insertion device energy
print "Setting photon_energy="+str(_photon_energy)
photon_energy.move(_photon_energy)
if _cff is not None:
#Set cff
print "Setting cff="+str(_cff)
pgm_cff.move(_cff)
finally:
#Return operation mode to original value (e.g. “PGM+ID”)
oper_mode.move(initial_oper_mode)
#Return front end to original state (e.g. “2x2”)
fe_state.move(initial_fe_state)
#IF (initial_h, initial_v) does not correspond to a predefined setting
if (initial_h!=initial_v) or \
not initial_h in [-15.0,0.0,0.25,0.5,1.0,1.5,2.0]:
fe_vert_width.write(initial_v);
fe_horiz_width.write(initial_h);
fe_settling_condition.waitSettled()
class AcquisitionMode(Readable.ReadableString):
def read(self):

19
script/scans/scan5.json Normal file
View File

@@ -0,0 +1,19 @@
{
"PASSES" : 1,
"STOP" : [ 50.0 ],
"DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ],
"PRE_ACTIONS" : {
"id_mode" : "CIRC+",
"grating" : "G2 1200"
},
"COMPRESSION" : true,
"SENSORS" : [ "scienta.dataMatrix" ],
"ZIGZAG" : false,
"SETTLING_TIME" : 0.0,
"MONITORS" : [ "current" ],
"START" : [ 21.0 ],
"RANGE" : [ null, null, null, null ],
"POSITIONERS" : [ "energy" ],
"STEPS" : [ 9 ],
"SNAPS" : [ "acmi", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ]
}

View File

@@ -41,6 +41,16 @@ passes = int(PASSES)
zigzag = bool(ZIGZAG)
#Change photon parameters
_id_mode=_grating=None
if "id_mode" in PRE_ACTIONS.keys():
_id_mode=PRE_ACTIONS.pop("id_mode")
if "grating" in PRE_ACTIONS.keys():
_grating=PRE_ACTIONS.pop("grating")
if (_id_mode is not None) or (_grating is not None):
print _id_mode, _grating
change_photon_pars(_id_mode=_id_mode, _grating=_grating)
1/0
#Execute pre-actions
for key in PRE_ACTIONS.keys():
if key=="eval":
@@ -78,5 +88,6 @@ try:
snaps=SNAPS, diags=DIAGS, monitors=MONITORS)
finally:
scienta.zeroSupplies()
pass