From b910d2f00d79456259be52249b9a8efacb24a93b Mon Sep 17 00:00:00 2001 From: gac-x09la Date: Mon, 8 Aug 2022 13:28:59 +0200 Subject: [PATCH] --- config/config.properties | 35 +- config/devices.properties | 3 + config/preferences.bin | Bin 0 -> 3401 bytes config/preferences.json | 126 +++ config/setup.properties | 22 +- config/variables.properties | 8 +- devices/acmi.properties | 3 +- devices/cff.properties | 11 +- devices/energy.properties | 11 +- devices/exit_slit.properties | 11 +- devices/fe_horiz_width.properties | 3 +- devices/fe_vert_width.properties | 3 +- devices/helium_valve.properties | 3 +- devices/id_energy.properties | 10 + devices/image.properties | 8 +- devices/master.properties | 11 +- devices/master_test.properties | 19 + devices/mono_energy.properties | 10 + devices/pgm_cff.properties | 3 +- devices/phi.properties | 21 +- devices/photon_energy.properties | 11 +- devices/raw_image.properties | 20 + devices/scienta Theta Y step size.properties | 3 +- devices/scienta center Theta X.properties | 3 +- devices/scienta center Theta Y.properties | 3 +- devices/scienta center energy.properties | 3 +- devices/scienta excitation energy.properties | 3 +- devices/scienta exposure time.properties | 10 + devices/scienta high Theta Y.properties | 3 +- devices/scienta high energy.properties | 3 +- devices/scienta low Theta Y.properties | 3 +- devices/scienta low energy.properties | 3 +- devices/scienta step size.properties | 3 +- devices/tcmp.properties | 3 +- devices/temp_boot1.properties | 3 +- devices/temp_boot2.properties | 3 +- devices/temp_cryopump.properties | 3 +- devices/temp_cryostat.properties | 3 +- devices/temp_headmech.properties | 3 +- devices/temp_sample1.properties | 3 +- devices/temp_sample2.properties | 3 +- devices/temp_shield.properties | 3 +- devices/theta.properties | 21 +- devices/tilt.properties | 21 +- devices/tilt_correction.properties | 18 + devices/x.properties | 21 +- devices/y.properties | 21 +- devices/z.properties | 21 +- extensions/Scienta.jar | Bin 52749 -> 53999 bytes plugins/SIStem.form | 614 ++++++++++---- plugins/SIStem.java | 794 +++++++++++------- script/local.py | 105 ++- script/queues/test.que | 0 script/queues/test2.que | 0 script/queues/test3.que | 0 script/queues/test4.que | 0 script/scans/templates/Default.json | 33 + script/scans/test/nick.json | 36 +- script/scans/test/nick2d.json | 0 script/scans/test/scan1.json | 21 +- script/scans/test/scan2.json | 0 script/scans/test/scan3.json | 0 script/scans/test/scan4.json | 0 script/scans/test/scan5.json | 20 +- script/scans/test/scan6.json | 0 script/scans/test/scan7.json | 0 script/scans/test/test.json | 25 +- script/scans/test/test1.json | 0 script/scans/test/test2.json | 0 script/scans/test/test3.json | 0 script/scans/test/test_2.json | 38 + script/scans/test/test_alex.json | 33 + script/scans/test/test_nick.json | 0 script/scans/test/test_nick_2.json | 0 script/scans/test/test_simpleSweep.json | 37 + .../test/test_simpleSweep_moreRecords.json | 62 ++ script/scans/test/test_thetaY.json | 37 + script/scans/test/thetaY-x_test.json | 37 + script/scans/test/thetay.json | 35 + script/scans/test/tilt_multiSweeps_test.json | 37 + script/scans/test/tilt_test.json | 37 + script/templates/EnergyScan.py | 0 script/templates/Reload.py | 9 + script/templates/SIStem.py | 39 +- script/test/PlotImage.py | 15 + script/test/TestLensMode.py | 0 script/test/TestScan.py | 0 script/test/test.py | 1 + script/test/x.xml | 13 + 89 files changed, 1953 insertions(+), 667 deletions(-) create mode 100644 config/preferences.bin create mode 100644 config/preferences.json create mode 100644 devices/id_energy.properties create mode 100644 devices/master_test.properties create mode 100644 devices/mono_energy.properties create mode 100644 devices/raw_image.properties create mode 100644 devices/scienta exposure time.properties create mode 100644 devices/tilt_correction.properties mode change 100644 => 100755 script/queues/test.que mode change 100644 => 100755 script/queues/test2.que mode change 100644 => 100755 script/queues/test3.que mode change 100644 => 100755 script/queues/test4.que create mode 100755 script/scans/templates/Default.json mode change 100644 => 100755 script/scans/test/nick.json mode change 100644 => 100755 script/scans/test/nick2d.json mode change 100644 => 100755 script/scans/test/scan1.json mode change 100644 => 100755 script/scans/test/scan2.json mode change 100644 => 100755 script/scans/test/scan3.json mode change 100644 => 100755 script/scans/test/scan4.json mode change 100644 => 100755 script/scans/test/scan5.json mode change 100644 => 100755 script/scans/test/scan6.json mode change 100644 => 100755 script/scans/test/scan7.json mode change 100644 => 100755 script/scans/test/test.json mode change 100644 => 100755 script/scans/test/test1.json mode change 100644 => 100755 script/scans/test/test2.json mode change 100644 => 100755 script/scans/test/test3.json create mode 100644 script/scans/test/test_2.json create mode 100755 script/scans/test/test_alex.json mode change 100644 => 100755 script/scans/test/test_nick.json mode change 100644 => 100755 script/scans/test/test_nick_2.json create mode 100755 script/scans/test/test_simpleSweep.json create mode 100755 script/scans/test/test_simpleSweep_moreRecords.json create mode 100644 script/scans/test/test_thetaY.json create mode 100755 script/scans/test/thetaY-x_test.json create mode 100644 script/scans/test/thetay.json create mode 100755 script/scans/test/tilt_multiSweeps_test.json create mode 100755 script/scans/test/tilt_test.json mode change 100644 => 100755 script/templates/EnergyScan.py create mode 100755 script/templates/Reload.py create mode 100755 script/test/PlotImage.py mode change 100644 => 100755 script/test/TestLensMode.py mode change 100644 => 100755 script/test/TestScan.py create mode 100755 script/test/test.py create mode 100755 script/test/x.xml diff --git a/config/config.properties b/config/config.properties index dcc2cc6..d9a28fe 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1,21 +1,34 @@ -#Wed Mar 16 09:54:44 CET 2022 +#Tue Jun 14 10:01:49 CEST 2022 +autoSaveScanData=true +simulation=false +logDaysToLive=7 +dataScanSaveOutput=false +userAuthenticator= +logLevelConsole=Off +filePermissionsConfig=Public +scanStreamerPort=-1 +dataScanSaveScript=true +dataScanSaveSetpoints=true +notifiedTasks= +parallelInitialization=true +fdaSerialization=false +dataTransferPath= +saveConsoleSessionFiles=false +versionTrackingManual=true +dataTransferMode=Off hostName= userManagement=false disableEmbeddedAttributes=false instanceName=SIS -autoSaveScanData=true -simulation=false dataServerPort=-1 serverPort=8080 hideServerMessages=false versionTrackingEnabled=true dataPath={data}/{year}_{month}/{date}/{date}_{time}_{name} serverEnabled=true -logDaysToLive=7 depthDimension=0 dataScanReleaseRecords=false dataScanPreserveTypes=true -dataScanSaveOutput=false logLevel=Info dataScanFlushRecords=false logPath={logs}/{date}_{time} @@ -26,23 +39,11 @@ sessionHandling=Off terminalEnabled=false notificationLevel=Off filePermissionsScripts=Public -userAuthenticator= terminalPort=3579 -logLevelConsole=Off -filePermissionsConfig=Public -scanStreamerPort=-1 -dataScanSaveScript=false dataTransferUser= -dataScanSaveSetpoints=false -notifiedTasks= filePermissionsData=Default -parallelInitialization=true -dataTransferPath= -saveConsoleSessionFiles=false versionTrackingLogin={context}/svcusr-hlapp_robot noBytecodeFiles=false versionTrackingRemote=git@git.psi.ch\:pshell_config/x09la.git -versionTrackingManual=true dataProvider=h5 -dataTransferMode=Off saveCommandStatistics=false diff --git a/config/devices.properties b/config/devices.properties index b297c0b..b0d3330 100644 --- a/config/devices.properties +++ b/config/devices.properties @@ -16,6 +16,7 @@ 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 +id_energy=ch.psi.pshell.epics.ProcessVariable|X09LA-ID:ENERGY_SP|||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|| @@ -33,6 +34,7 @@ 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||| +analyser_slit=ch.psi.pshell.epics.DiscretePositioner|X09LA-ES1-DA30:SLIT|||true 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| cam2=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.82/axis-cgi/mjpg/video.cgi?camera=2||-200| @@ -40,3 +42,4 @@ cam3=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.82/axis-cgi/mjpg/video cam4=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.82/axis-cgi/mjpg/video.cgi?camera=4||-200| cam5=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.84/axis-cgi/mjpg/video.cgi||-200| cam6=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.85/axis-cgi/mjpg/video.cgi||-200| +#raw_image=ch.psi.pshell.imaging.MjpegSource|http://129.129.117.81:8080/monitor/raw-camera-hardware-settings||-200| diff --git a/config/preferences.bin b/config/preferences.bin new file mode 100644 index 0000000000000000000000000000000000000000..e94eb185487647f54a1d555c341193beb2517658 GIT binary patch literal 3401 zcmbVPOK%)S5NcTaW= zC<+%iz!7d7K;jtw0hb7Ig9AuhI3UCU!~w1#PJGof<7`h160Ef2ovE7Y`l`Nq_|9)^ z*l0HMI={&)sg+S>gPZmyPliXnzx&0>Yu_AVgKKO&QaoJafmOQ7#%x;)(^gT~OJ015 z(dSxs6xZAMp116%2qhHPlol3LU&}$BZP6vdBnT6vIfDIpPc{ss~>jEA$GXRPLXOuz==q{AwoK3M`!~- z*4S90B!qZgWkbgO88&t=5;bExMI?{0feY7Ml&0y57>#eLSeb+eBJAO=!}WEc$q%0r)!2%b(6c{% z{OKQWzxy00Q7tH;+0lDhxR`c!g?{JGho>h#`0>3#B#90kv~031LqS2k2>0@Mjz%&T zL?p}R{Hzm`Dz#kt@|qSvG)3Vf?QLn18?pfs08pKvuqpaYNpJAjP?Vd%bA(R4l-eY< zbsmc-KX{f3pbBP*hUGRjOI$m9Lj!Qs$W8*1xU$LhM{cCZncV|D&m7<=IW>PdQ*plF zLj0t+CoCJVXFWELfMGR#WrQnP6SppTc* zW;1&Og?4OrzsRxzLUwacU1@J9u(7q2S_^x*;7EYqDC?RE9Nz)uDIZEID|Ib!3Yvm2 z^DbV6_Ccs>qKU-KahwIvpN||6r8V=Rl09ya73sCe`ejt2I9yrb}&SMckBu zsG}h|&H0tAZ@HUA@n`q*_wRN^LGvlp%(?$+B@gYuARDZ)BcVHQIpW3?g>t-x&PwF< zpZ37@kwzdz3<|T!{8xsDP`+TS}&4iwjhkd=mNPcdqZVM|; z>X|9|lHsguD$FKZ?)jM&C-ZDP=DSkZ;AoAyu8gFXPSBq8^>TA1HP7Z;{lam zin(Fg6TVtzxTNLTEd{yom{6}{8Y6{g4>IYXI|a|$>#aa4^aZbQ0Clyt6KlWA12k zAj%~OHvj+t literal 0 HcmV?d00001 diff --git a/config/preferences.json b/config/preferences.json new file mode 100644 index 0000000..a445aea --- /dev/null +++ b/config/preferences.json @@ -0,0 +1,126 @@ +{ + "fontShellPanel" : { + "name" : "Monospaced", + "style" : 0, + "size" : 13 + }, + "fontShellCommand" : { + "name" : "SansSerif", + "style" : 0, + "size" : 13 + }, + "fontOutput" : { + "name" : "Monospaced", + "style" : 0, + "size" : 13 + }, + "fontEditor" : { + "name" : "Monospaced", + "style" : 0, + "size" : 13 + }, + "fontPlotLabel" : { + "name" : "SansSerif", + "style" : 0, + "size" : 11 + }, + "fontPlotTick" : { + "name" : "SansSerif", + "style" : 0, + "size" : 10 + }, + "fontPlotTitle" : { + "name" : "SansSerif", + "style" : 1, + "size" : 13 + }, + "fontTerminal" : { + "name" : "Monospaced", + "style" : 0, + "size" : 14 + }, + "tabSize" : 4, + "contentWidth" : 0, + "editorBackground" : null, + "editorForeground" : null, + "simpleEditor" : false, + "hideEditorLineNumbers" : false, + "hideEditorContextMenu" : false, + "consoleLocation" : "Left", + "dataPanelLocation" : null, + "openDataFilesInDocTab" : false, + "noVariableEvaluationPropagation" : false, + "processingScripts" : [ ], + "asyncViewersUpdate" : false, + "scanPlotDisabled" : false, + "scanTableDisabled" : false, + "cachedDataPanel" : false, + "dataExtensions" : null, + "dataSubFiles" : null, + "hideFileName" : false, + "showEmergencyStop" : false, + "showHomingButtons" : false, + "showJogButtons" : false, + "hideScanPanel" : false, + "hideOutputPanel" : false, + "showXScanFileBrowser" : false, + "showQueueBrowser" : false, + "backgroundRendering" : false, + "showImageStatusBar" : true, + "persistRendererWindows" : true, + "defaultRendererColormap" : "Grayscale", + "linePlot" : "ch.psi.pshell.plot.LinePlotJFree", + "matrixPlot" : "ch.psi.pshell.plot.MatrixPlotJFree", + "surfacePlot" : "null", + "timePlot" : "ch.psi.pshell.plot.TimePlotJFree", + "plotsDetached" : false, + "plotLayout" : "Vertical", + "quality" : "High", + "defaultPlotColormap" : "Temperature", + "markerSize" : 2, + "plotBackground" : null, + "gridColor" : null, + "outlineColor" : null, + "disableOffscreenBuffer" : false, + "defaultPanels" : [ { + "deviceClassName" : "Scienta", + "panelClassName" : "ScientaPanel" + }, { + "deviceClassName" : "ch.psi.pshell.epics.Scaler", + "panelClassName" : "ch.psi.pshell.swing.ScalerPanel" + }, { + "deviceClassName" : "ch.psi.pshell.epics.Scienta", + "panelClassName" : "ch.psi.pshell.swing.ScientaPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.Motor", + "panelClassName" : "ch.psi.pshell.swing.MotorPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.MasterPositioner", + "panelClassName" : "ch.psi.pshell.swing.MasterPositionerPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.ProcessVariable", + "panelClassName" : "ch.psi.pshell.swing.ProcessVariablePanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.MotorGroup", + "panelClassName" : "ch.psi.pshell.swing.MotorGroupPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.DiscretePositioner", + "panelClassName" : "ch.psi.pshell.swing.DiscretePositionerPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.Camera", + "panelClassName" : "ch.psi.pshell.swing.CameraPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.Slit", + "panelClassName" : "ch.psi.pshell.swing.SlitPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.HistogramGenerator", + "panelClassName" : "ch.psi.pshell.swing.HistogramGeneratorPanel" + }, { + "deviceClassName" : "ch.psi.pshell.device.ReadonlyRegister$ReadonlyRegisterArray", + "panelClassName" : "ch.psi.pshell.swing.DeviceValueChart" + }, { + "deviceClassName" : "ch.psi.pshell.device.ReadonlyRegister$ReadonlyRegisterMatrix", + "panelClassName" : "ch.psi.pshell.swing.DeviceValueChart" + } ], + "scriptPopupDialog" : "Exception" +} \ No newline at end of file diff --git a/config/setup.properties b/config/setup.properties index 8c46db8..3769028 100644 --- a/config/setup.properties +++ b/config/setup.properties @@ -1,23 +1,25 @@ -#Mon Apr 19 13:32:04 CEST 2021 +#Tue Jun 14 10:01:48 CEST 2022 scriptPath={home}/script sessionsPath={outp}/sessions -pluginsPath={home}/plugins configFileDevices={config}/devices.properties -consoleSessionsPath={sessions}/console -libraryPath={script}; {script}/Lib -contextPath={outp}/context -configFilePlugins={config}/plugins.properties +xscanPath={script} +queuePath={script}/queues extensionsPath={home}/extensions configPath={home}/config configFileSessions={config}/sessions.properties userSessionsPath={sessions}/user dataPath={outp}/data -devicesPath={home}/devices configFileVariables={config}/variables.properties -configFileSettings={config}/settings.properties wwwPath={home}/www logPath={outp}/log -imagesPath={outp}/images configFile={config}/config.properties -scriptType=py configFileTasks={config}/tasks.properties +pluginsPath={home}/plugins +consoleSessionsPath={sessions}/console +libraryPath={script}; {script}/Lib +contextPath={outp}/context +configFilePlugins={config}/plugins.properties +devicesPath={home}/devices +configFileSettings={config}/settings.properties +imagesPath={outp}/images +scriptType=py diff --git a/config/variables.properties b/config/variables.properties index 338e903..a40d7d8 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,4 +1,4 @@ -#Tue Apr 12 13:18:32 CEST 2022 -LastRunDate=220412 -DaySequentialNumber=1 -FileSequentialNumber=278 +#Mon Jun 27 14:15:35 CEST 2022 +LastRunDate=220627 +DaySequentialNumber=6 +FileSequentialNumber=365 diff --git a/devices/acmi.properties b/devices/acmi.properties index ccabaf2..72b64f9 100644 --- a/devices/acmi.properties +++ b/devices/acmi.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=mbar offset=0.0 precision=12 sign_bit=0 scale=1.0 +description=null diff --git a/devices/cff.properties b/devices/cff.properties index 3894d8d..56062f1 100644 --- a/devices/cff.properties +++ b/devices/cff.properties @@ -1,10 +1,11 @@ -#Tue Dec 07 11:50:14 CET 2021 +#Tue Jun 14 10:02:05 CEST 2022 +minValue=2.25 +unit= offset=0.0 maxValue=2.25 rotation=false precision=2 -scale=1.0 -resolution=NaN -minValue=2.25 -unit= sign_bit=0 +scale=1.0 +description=null +resolution=NaN diff --git a/devices/energy.properties b/devices/energy.properties index 9a79895..ba23127 100644 --- a/devices/energy.properties +++ b/devices/energy.properties @@ -1,10 +1,11 @@ -#Fri Nov 12 15:40:11 CET 2021 +#Tue Jun 14 10:02:05 CEST 2022 +minValue=0.0 +unit=eV offset=0.0 maxValue=350.0 rotation=false precision=3 -scale=1.0 -resolution=0.01 -minValue=0.0 -unit=eV sign_bit=0 +scale=1.0 +description=null +resolution=0.02 diff --git a/devices/exit_slit.properties b/devices/exit_slit.properties index d607b24..4e16967 100644 --- a/devices/exit_slit.properties +++ b/devices/exit_slit.properties @@ -1,10 +1,11 @@ -#Tue Dec 07 21:38:48 CET 2021 +#Tue Jun 14 10:01:51 CEST 2022 +unit=um +minValue=0.0 offset=0.0 maxValue=200.0 precision=1 rotation=false -scale=1.0 -resolution=NaN -unit=um -minValue=0.0 sign_bit=0 +scale=1.0 +description=null +resolution=NaN diff --git a/devices/fe_horiz_width.properties b/devices/fe_horiz_width.properties index aca63da..7a2d6b8 100644 --- a/devices/fe_horiz_width.properties +++ b/devices/fe_horiz_width.properties @@ -1,4 +1,4 @@ -#Tue Dec 07 13:44:36 CET 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=mm minValue=NaN offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/fe_vert_width.properties b/devices/fe_vert_width.properties index aca63da..7a2d6b8 100644 --- a/devices/fe_vert_width.properties +++ b/devices/fe_vert_width.properties @@ -1,4 +1,4 @@ -#Tue Dec 07 13:44:36 CET 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=mm minValue=NaN offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/helium_valve.properties b/devices/helium_valve.properties index d669c12..6520e99 100644 --- a/devices/helium_valve.properties +++ b/devices/helium_valve.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=0 offset=0.0 precision=0 sign_bit=0 scale=1.0 +description=null diff --git a/devices/id_energy.properties b/devices/id_energy.properties new file mode 100644 index 0000000..fd2e72c --- /dev/null +++ b/devices/id_energy.properties @@ -0,0 +1,10 @@ +#Tue Jul 05 16:22:46 CEST 2022 +minValue=NaN +unit=eV +offset=0.0 +maxValue=NaN +precision=2 +sign_bit=0 +scale=1.0 +description=Top level ID energy setpoint +resolution=NaN diff --git a/devices/image.properties b/devices/image.properties index bf29fad..9deada8 100644 --- a/devices/image.properties +++ b/devices/image.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 16:46:12 CEST 2021 +#Wed May 11 15:02:09 CEST 2022 spatialCalOffsetY=NaN spatialCalOffsetX=NaN colormapLogarithmic=false @@ -6,12 +6,12 @@ scale=1.0 grayscale=false spatialCalScaleX=NaN spatialCalScaleY=NaN -colormapMax=NaN +colormapMax=246.928 rescaleOffset=0.0 roiWidth=-1 colormap=Grayscale invert=false -colormapMin=NaN +colormapMin=0.0 rotation=0.0 rotationCrop=false rescaleFactor=1.0 @@ -19,7 +19,7 @@ spatialCalUnits=mm flipVertically=false roiHeight=-1 flipHorizontally=false -colormapAutomatic=true +colormapAutomatic=false roiY=0 roiX=0 transpose=false diff --git a/devices/master.properties b/devices/master.properties index 85646bd..dff5215 100644 --- a/devices/master.properties +++ b/devices/master.properties @@ -1,18 +1,19 @@ -#Wed Sep 29 11:32:23 CEST 2021 -slave2Positions=-0.3|0.1|0.6 +#Tue Jun 14 10:01:51 CEST 2022 +slave2Positions=-0.3|0.0|0.1 offset=0.0 maxValue=100.0 slave5Positions=null rotation=false precision=4 scale=1.0 +description=null slave4Positions=null resolution=0.1 mode=LINEAR minValue=-100.0 unit=deg -slave1Positions=0.2|1.0|1.3 -slave3Positions=-0.5|0.0|0.7 +slave1Positions=0.2|0.0|1.0 +slave3Positions=-0.5|0.0|0.0 sign_bit=0 -masterPositions=-1.0|0.0|1.0 +masterPositions=-10.0|0.0|10.0 slave6Positions=null diff --git a/devices/master_test.properties b/devices/master_test.properties new file mode 100644 index 0000000..4690cca --- /dev/null +++ b/devices/master_test.properties @@ -0,0 +1,19 @@ +#Tue Jun 14 10:30:47 CEST 2022 +slave2Positions=null +offset=0.0 +maxValue=2000.0 +slave5Positions=null +rotation=false +precision=-1 +scale=1.0 +description=null +slave4Positions=null +resolution=NaN +mode=LINEAR +minValue=0.0 +unit=eV +slave1Positions=null +slave3Positions=null +sign_bit=0 +masterPositions=null +slave6Positions=null diff --git a/devices/mono_energy.properties b/devices/mono_energy.properties new file mode 100644 index 0000000..6826604 --- /dev/null +++ b/devices/mono_energy.properties @@ -0,0 +1,10 @@ +#Tue Jul 05 16:22:01 CEST 2022 +minValue=NaN +unit=eV +offset=0.0 +maxValue=NaN +precision=2 +sign_bit=0 +scale=1.0 +description=Top level ID energy setpoint +resolution=NaN diff --git a/devices/pgm_cff.properties b/devices/pgm_cff.properties index 8d04da8..e31775d 100644 --- a/devices/pgm_cff.properties +++ b/devices/pgm_cff.properties @@ -1,4 +1,4 @@ -#Tue Dec 07 16:46:29 CET 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=2.25 unit=2.250 offset=0.0 @@ -7,4 +7,5 @@ rotation=false precision=2 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/phi.properties b/devices/phi.properties index 38150ad..7bbeafd 100644 --- a/devices/phi.properties +++ b/devices/phi.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:29 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.1 -minValue=-90.0 -defaultSpeed=17.0 -sign_bit=0 -monitorByPosition=false -minSpeed=17.0 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=110.0 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=20.0 +resolution=0.1 homingType=None startRetries=1 +minValue=-90.0 unit=deg +defaultSpeed=17.0 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=17.0 diff --git a/devices/photon_energy.properties b/devices/photon_energy.properties index c54d98f..8c98ea3 100644 --- a/devices/photon_energy.properties +++ b/devices/photon_energy.properties @@ -1,10 +1,11 @@ -#Fri Nov 12 15:14:31 CET 2021 +#Tue Jun 14 10:01:50 CEST 2022 +minValue=0.0 +unit=eV offset=0.0 maxValue=2000.0 rotation=false precision=-1 -scale=1.0 -resolution=NaN -minValue=0.0 -unit=eV sign_bit=0 +scale=1.0 +description=null +resolution=NaN diff --git a/devices/raw_image.properties b/devices/raw_image.properties new file mode 100644 index 0000000..7615bce --- /dev/null +++ b/devices/raw_image.properties @@ -0,0 +1,20 @@ +#Tue Jun 14 14:48:48 CEST 2022 +spatialCalOffsetY=NaN +invert=false +spatialCalOffsetX=NaN +rotation=0.0 +rotationCrop=false +scale=1.0 +rescaleFactor=1.0 +grayscale=false +spatialCalUnits=mm +flipVertically=false +roiHeight=-1 +spatialCalScaleX=NaN +spatialCalScaleY=NaN +flipHorizontally=false +roiY=0 +roiX=0 +rescaleOffset=0.0 +transpose=false +roiWidth=-1 diff --git a/devices/scienta Theta Y step size.properties b/devices/scienta Theta Y step size.properties index a19ab0d..324bec8 100644 --- a/devices/scienta Theta Y step size.properties +++ b/devices/scienta Theta Y step size.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 11:34:39 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=NaN unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta center Theta X.properties b/devices/scienta center Theta X.properties index cb39e62..268fb12 100644 --- a/devices/scienta center Theta X.properties +++ b/devices/scienta center Theta X.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 16:06:28 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=0.0 unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=0.0 precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta center Theta Y.properties b/devices/scienta center Theta Y.properties index a19ab0d..324bec8 100644 --- a/devices/scienta center Theta Y.properties +++ b/devices/scienta center Theta Y.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 11:34:39 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=NaN unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta center energy.properties b/devices/scienta center energy.properties index ffeb199..20dbb4d 100644 --- a/devices/scienta center energy.properties +++ b/devices/scienta center energy.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 10:57:12 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=-2000.0 unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=2000.0 precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta excitation energy.properties b/devices/scienta excitation energy.properties index 3f135c6..268fb12 100644 --- a/devices/scienta excitation energy.properties +++ b/devices/scienta excitation energy.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 12:16:20 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=0.0 unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=0.0 precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta exposure time.properties b/devices/scienta exposure time.properties new file mode 100644 index 0000000..ba52ece --- /dev/null +++ b/devices/scienta exposure time.properties @@ -0,0 +1,10 @@ +#Tue Jun 14 10:01:50 CEST 2022 +minValue=0.0 +unit=s +offset=0.0 +maxValue=10000.0 +precision=3 +sign_bit=0 +scale=1.0 +description=null +resolution=NaN diff --git a/devices/scienta high Theta Y.properties b/devices/scienta high Theta Y.properties index a19ab0d..324bec8 100644 --- a/devices/scienta high Theta Y.properties +++ b/devices/scienta high Theta Y.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 11:34:39 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=NaN unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta high energy.properties b/devices/scienta high energy.properties index ffeb199..20dbb4d 100644 --- a/devices/scienta high energy.properties +++ b/devices/scienta high energy.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 10:57:12 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=-2000.0 unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=2000.0 precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta low Theta Y.properties b/devices/scienta low Theta Y.properties index a19ab0d..324bec8 100644 --- a/devices/scienta low Theta Y.properties +++ b/devices/scienta low Theta Y.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 11:34:39 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=NaN unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta low energy.properties b/devices/scienta low energy.properties index ffeb199..20dbb4d 100644 --- a/devices/scienta low energy.properties +++ b/devices/scienta low energy.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 10:57:12 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=-2000.0 unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=2000.0 precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/scienta step size.properties b/devices/scienta step size.properties index a33ca1b..324bec8 100644 --- a/devices/scienta step size.properties +++ b/devices/scienta step size.properties @@ -1,4 +1,4 @@ -#Mon Aug 30 10:16:07 CEST 2021 +#Tue Jun 14 10:01:50 CEST 2022 minValue=NaN unit= offset=0.0 @@ -6,4 +6,5 @@ maxValue=NaN precision=3 sign_bit=0 scale=1.0 +description=null resolution=NaN diff --git a/devices/tcmp.properties b/devices/tcmp.properties index ccabaf2..72b64f9 100644 --- a/devices/tcmp.properties +++ b/devices/tcmp.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=mbar offset=0.0 precision=12 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_boot1.properties b/devices/temp_boot1.properties index 154ff95..6142587 100644 --- a/devices/temp_boot1.properties +++ b/devices/temp_boot1.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_boot2.properties b/devices/temp_boot2.properties index 154ff95..6142587 100644 --- a/devices/temp_boot2.properties +++ b/devices/temp_boot2.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_cryopump.properties b/devices/temp_cryopump.properties index 154ff95..6142587 100644 --- a/devices/temp_cryopump.properties +++ b/devices/temp_cryopump.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_cryostat.properties b/devices/temp_cryostat.properties index 3444f5b..6142587 100644 --- a/devices/temp_cryostat.properties +++ b/devices/temp_cryostat.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:07:51 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_headmech.properties b/devices/temp_headmech.properties index 154ff95..6142587 100644 --- a/devices/temp_headmech.properties +++ b/devices/temp_headmech.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_sample1.properties b/devices/temp_sample1.properties index 154ff95..6142587 100644 --- a/devices/temp_sample1.properties +++ b/devices/temp_sample1.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_sample2.properties b/devices/temp_sample2.properties index 154ff95..6142587 100644 --- a/devices/temp_sample2.properties +++ b/devices/temp_sample2.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/temp_shield.properties b/devices/temp_shield.properties index 154ff95..6142587 100644 --- a/devices/temp_shield.properties +++ b/devices/temp_shield.properties @@ -1,6 +1,7 @@ -#Mon Sep 27 17:22:53 CEST 2021 +#Tue Jun 14 10:01:51 CEST 2022 unit=K offset=0.0 precision=2 sign_bit=0 scale=1.0 +description=null diff --git a/devices/theta.properties b/devices/theta.properties index 05d4ff3..6735dd6 100644 --- a/devices/theta.properties +++ b/devices/theta.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:36 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.05 -minValue=-95.0 -defaultSpeed=2.5 -sign_bit=0 -monitorByPosition=false -minSpeed=0.5 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=185.0 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=5.0 +resolution=0.05 homingType=None startRetries=1 +minValue=-95.0 unit=deg +defaultSpeed=2.5 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=0.5 diff --git a/devices/tilt.properties b/devices/tilt.properties index 412c3a4..8a754a5 100644 --- a/devices/tilt.properties +++ b/devices/tilt.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:40 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.1 -minValue=-100.0 -defaultSpeed=20.0 -sign_bit=0 -monitorByPosition=false -minSpeed=17.0 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=100.0 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=20.0 +resolution=0.1 homingType=None startRetries=1 +minValue=-100.0 unit=deg +defaultSpeed=20.0 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=17.0 diff --git a/devices/tilt_correction.properties b/devices/tilt_correction.properties new file mode 100644 index 0000000..1edcace --- /dev/null +++ b/devices/tilt_correction.properties @@ -0,0 +1,18 @@ +#Thu Jun 02 10:50:10 CEST 2022 +slave2Positions=null +offset=0.0 +maxValue=NaN +slave5Positions=null +rotation=false +precision=-1 +scale=1.0 +slave4Positions=null +resolution=NaN +mode=LINEAR +minValue=NaN +unit=null +slave1Positions=null +slave3Positions=null +sign_bit=0 +masterPositions=null +slave6Positions=null diff --git a/devices/x.properties b/devices/x.properties index b3fe9d4..b4c93cf 100644 --- a/devices/x.properties +++ b/devices/x.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:04 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.005 -minValue=-7.0 -defaultSpeed=0.8 -sign_bit=0 -monitorByPosition=false -minSpeed=0.6 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=7.0 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=5.0 +resolution=0.005 homingType=None startRetries=1 +minValue=-7.0 unit=mm +defaultSpeed=0.8 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=0.6 diff --git a/devices/y.properties b/devices/y.properties index b020c24..6672205 100644 --- a/devices/y.properties +++ b/devices/y.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:10 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.005 -minValue=-6.8896 -defaultSpeed=0.8 -sign_bit=0 -monitorByPosition=false -minSpeed=0.6 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=2.7204000000000006 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=5.0 +resolution=0.005 homingType=None startRetries=1 +minValue=-6.8896 unit=mm +defaultSpeed=0.8 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=0.6 diff --git a/devices/z.properties b/devices/z.properties index aed917c..047307b 100644 --- a/devices/z.properties +++ b/devices/z.properties @@ -1,18 +1,19 @@ -#Wed Apr 21 09:23:23 CEST 2021 -precision=4 -scale=1.0 -estbilizationDelay=0 -resolution=0.005 -minValue=-10.0 -defaultSpeed=2.0 -sign_bit=0 -monitorByPosition=false -minSpeed=0.5 +#Tue Jun 14 10:01:50 CEST 2022 offset=0.0 maxValue=600.0 +precision=4 rotation=false +scale=1.0 +description=null +estbilizationDelay=0 maxSpeed=8.0 +resolution=0.005 homingType=None startRetries=1 +minValue=-10.0 unit=mm +defaultSpeed=2.0 +sign_bit=0 hasEnable=true +monitorByPosition=false +minSpeed=0.5 diff --git a/extensions/Scienta.jar b/extensions/Scienta.jar index 6a5499f2dc7871bca90daee891d8a15b3e3ef664..0a9fd18d179f4d19c37bb5c9a75f303d762f8d6e 100644 GIT binary patch delta 12749 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 B@y-AM delta 11495 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 - + @@ -179,7 +179,7 @@ - + @@ -200,24 +200,26 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -229,24 +231,28 @@ - + + - + + + + - - + + - + @@ -296,6 +302,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -313,24 +351,26 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -341,25 +381,29 @@ + - + + - + - + + - + + - + @@ -409,6 +453,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -427,7 +503,9 @@ - + + + @@ -438,7 +516,8 @@ - + + @@ -457,6 +536,14 @@ + + + + + + + + @@ -481,12 +568,19 @@ - - - - + + + + - + + + + + + + + @@ -496,24 +590,28 @@ - + + - + + - + + - + + - + @@ -563,11 +661,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -580,41 +710,50 @@ - + + - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + @@ -622,49 +761,67 @@ + - - - - - - + - - + + + + + + + + + + + + + - - + + - - + + + - + - - - + + + + + + + + + + + + + + + - + + - + - - - - + - + @@ -678,7 +835,8 @@ - + + @@ -693,43 +851,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -773,6 +894,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -790,36 +1013,40 @@ - - - - - - - - - - + + + + - + + + + + + + + + - - - + + + + - - - + + + + - + @@ -861,8 +1088,15 @@ + + - + + + + + + @@ -944,6 +1178,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -966,7 +1228,7 @@ - + @@ -980,7 +1242,7 @@ - + @@ -1059,11 +1321,11 @@ - + - + - + @@ -1072,7 +1334,7 @@ - + @@ -1191,13 +1453,13 @@ - + - + - + - + @@ -1207,7 +1469,7 @@ - + diff --git a/plugins/SIStem.java b/plugins/SIStem.java index bdfac5b..0f4dff0 100644 --- a/plugins/SIStem.java +++ b/plugins/SIStem.java @@ -17,6 +17,7 @@ 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.swing.DeviceValuePanel; import ch.psi.pshell.ui.App; import ch.psi.pshell.ui.PanelProcessor; import ch.psi.pshell.ui.Preferences; @@ -57,6 +58,7 @@ import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFileChooser; +import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; @@ -84,7 +86,6 @@ public class SIStem extends PanelProcessor { final RegisterPanel[] scientaPanels; final DiscretePositionerSelector[] scientaCombos; final JComboBox[] deviceCombos; - final JTextField[] scientaRangeFields; String[] additionalPositioners ; boolean intialized; boolean startButtonPressed; @@ -193,14 +194,15 @@ public class SIStem extends PanelProcessor { }); scientaPanels = new RegisterPanel[]{textLowEnergy,textCenterEnergy, textHighEnergy, textStepEnergy, - textLowThetaY, textCenterThetaY, textHighThetaY, textStepThetaY, textCenterThetaX, textSlices, textChannels, textExposureDev}; - scientaRangeFields = new JTextField[]{textXChannelMax, textXChannelMin, textYChannelMax, textYChannelMin}; + textLowThetaY, textCenterThetaY, textHighThetaY, textStepThetaY, textCenterThetaX, textSlices, textChannels, textExposureDev, + textMinX, textSizeX, textMinY, textSizeY, textSweeps}; scientaCombos = new DiscretePositionerSelector[]{comboPass, comboAcquisition, comboEnergy, comboLens, comboDetMode}; - deviceCombos = new JComboBox[]{comboPol, comboGrating}; + deviceCombos = new JComboBox[]{comboPol, comboGrating, comboAnalyserSlit}; buttonData.setVisible(isDetached()); detectorPlot.getAxis(Plot.AxisId.X).setLabel("X-Scale (energy)"); detectorPlot.getAxis(Plot.AxisId.Y).setLabel("Y-Scale (distance or angle)"); + detectorPlot.getAxis(Plot.AxisId.Y).setInverted(true); comboLens.getComboBox().addActionListener((java.awt.event.ActionEvent evt) -> { updateLens(); @@ -213,8 +215,24 @@ public class SIStem extends PanelProcessor { } }); + for (Component panel:getDeviceValuePanels()){ + try { + JLabel label = ((DeviceValuePanel)panel).getLabel(); + label.setFont(label.getFont().deriveFont(9.0f)); + + } catch (Exception ex) { + showException(ex); + } + } + clear(); - //startTimer(1000, 1000); + startTimer(1000, 1000); + } + + Component[] getDeviceValuePanels(){ + return Arr.append(SwingUtils.getComponentsByType(panelAnalyser, DeviceValuePanel.class), + SwingUtils.getComponentsByType(panelDetector, DeviceValuePanel.class)); + } void addDevice(ProcessVariable dev, DefaultTableModel model, int row, Object[] data) { @@ -274,8 +292,16 @@ public class SIStem extends PanelProcessor { } catch (Exception ex) { showException(ex); } - } + } + for (Component panel:getDeviceValuePanels()){ + try { + ((DeviceValuePanel)panel).setDevice((Device) eval(panel.getName(), true)); + } catch (Exception ex) { + showException(ex); + } + } + try { Device curStep = (Device) eval("scienta.currentStep", true); curStep.addListener(progressListener); @@ -294,7 +320,9 @@ public class SIStem extends PanelProcessor { try { String[] mode_position = (String[]) eval("id_mode.getPositions()", true); String[] grating_position = (String[]) eval("grating.getPositions()", true); + String[] analyser_slit_position = (String[]) eval("analyser_slit.getPositions()", true); List add_pos= (List) eval("get_additional_positioners()", true); + additionalPositioners = new String[add_pos.size()]; for (int i=0; i< add_pos.size(); i++){ additionalPositioners[i]=add_pos.get(i).getName(); @@ -308,6 +336,11 @@ public class SIStem extends PanelProcessor { comboGrating.setModel(new DefaultComboBoxModel(grating_position)); SwingUtils.insertCombo(comboGrating, "", 0); comboGrating.setSelectedIndex(0); + + + comboAnalyserSlit.setModel(new DefaultComboBoxModel(analyser_slit_position)); + SwingUtils.insertCombo(comboAnalyserSlit, "", 0); + comboAnalyserSlit.setSelectedIndex(0); } catch (Exception ex) { ex.printStackTrace(); Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex); @@ -342,12 +375,16 @@ public class SIStem extends PanelProcessor { public void onExecutedFile(String fileName, Object result) { } - //@Override - //public void onTimer() { - // if (getState().isInitialized()){ - // updateTime(); - // } - //} + @Override + public void onTimer() { + if (getState().isInitialized()){ + //updateTime(); + if (panelDetector.isShowing()){ + //System.out.println(".."); + updateDetectorPlot(); + } + } + } //Callback to perform update - in event thread @Override @@ -437,14 +474,9 @@ public class SIStem extends PanelProcessor { steps[i] = (Integer) modelScanned.getValueAt(i, 3) - 1; } - Integer[] range = new Integer[4]; - for (int i = 0; i < scientaRangeFields.length; i++) { - range[i] = scientaRangeFields[i].getText().isBlank() ? null : Integer.valueOf(scientaRangeFields[i].getText().trim()); - } Map config = new HashMap(); config.put("PRE_ACTIONS", preActions); - config.put("RANGE", range.equals(new Integer[]{null, null, null, null}) ? new ArrayList() : Arr.toList(range)); config.put("POSITIONERS", positioners); config.put("START", start); config.put("STOP", stop); @@ -489,6 +521,13 @@ public class SIStem extends PanelProcessor { return null; } + Map readConfig(String fileName) throws IOException{ + Path path = Paths.get(fileName); + String json = new String(Files.readAllBytes(path)); + Map config = (Map) JsonSerializer.decode(json, Map.class); + return config; + } + @Override public void open(String fileName) throws IOException { if (!intialized){ @@ -503,12 +542,8 @@ public class SIStem extends PanelProcessor { clear(); try{ if (fileName != null) { - Path path = Paths.get(fileName); - String json = new String(Files.readAllBytes(path)); - currentFile = path.toFile(); - Map config = (Map) JsonSerializer.decode(json, Map.class); - - + Map config = readConfig(fileName); + currentFile = new File(fileName); Map masterAxis = (Map) config.get("MASTER_AXIS"); if (masterAxis!=null){ String name = (String) masterAxis.get("NAME"); @@ -561,11 +596,6 @@ public class SIStem extends PanelProcessor { break; } } - for (int i = 0; i < range.size(); i++) { - if (range.get(i) != null) { - scientaRangeFields[i].setText(String.valueOf(range.get(i)).trim()); - } - } Positioner pos = getContext().getDevicePool().getByName(name, Positioner.class); if (pos != null) { addDevice(pos, modelFixed, -1, new Object[]{name, preActions.get(name), pos.getUnit()}); @@ -605,13 +635,10 @@ public class SIStem extends PanelProcessor { combo.setSelectedIndex(0); } } - for (JTextField text : scientaRangeFields) { - text.setText(""); - } - modelFixed.setRowCount(0); modelScanned.setRowCount(0); + /* String[] DEFAULT_SENSORS = new String[]{"scienta.dataMatrix"}; //String[] DEFAULT_SNAPS = new String[]{"temp_cryostat", "temp_sample1", "temp_headmech", "temp_sample2", // "temp_boot1", "temp_shield", "temp_boot2", "temp_cryopump", @@ -620,11 +647,22 @@ public class SIStem extends PanelProcessor { String[] DEFAULT_DIAGS = getContext().getDevicePool().getAllNamesOrderedByName(Motor.class); String[] DEFAULT_SNAPS = Arr.remove(getContext().getDevicePool().getAllNamesOrderedByName(ReadonlyProcessVariable.class), DEFAULT_DIAGS); String[] DEFAULT_MONITORS = new String[]{"current"}; - setDevices(textSensors, Arr.toList(DEFAULT_SENSORS)); setDevices(textSnapshots, Arr.toList(DEFAULT_SNAPS)); setDevices(textDiagnostics, Arr.toList(DEFAULT_DIAGS)); setDevices(textMonitors, Arr.toList(DEFAULT_MONITORS)); + */ + + try{ + Map config = readConfig(getContext().getSetup().expandPath(getHomePath()+"/templates/Default.json")); + setDevices(textSensors, (List) config.get("SENSORS")); + setDevices(textSnapshots, (List) config.get("SNAPS")); + setDevices(textDiagnostics, (List) config.get("DIAGS")); + setDevices(textMonitors, (List) config.get("MONITORS")); + } catch (Exception ex){ + Logger.getLogger(SIStem.class.getName()).log(Level.SEVERE, null, ex); + } + initInactive(); spinnerLatency.setValue(0.0); @@ -783,7 +821,7 @@ public class SIStem extends PanelProcessor { if (getContext().getDevicePool().getByName(name)!=null){ throw new Exception("Device name in use"); } - String[] motorNames = getContext().getDevicePool().getAllNamesOrderedByName(Motor.class); + String[] motorNames = getContext().getDevicePool().getAllNamesOrderedByName(Positioner.class); String master = getString("Enter master motor:", motorNames, null); if (master!=null){ ArrayList slaves = new ArrayList<>(); @@ -899,21 +937,6 @@ public class SIStem extends PanelProcessor { } } } - - List defined = new ArrayList(); - for (JTextField text : scientaRangeFields) { - if (!text.getText().isBlank()) { - try { - Integer.valueOf(text.getText().trim()); - } catch (Exception ex) { - throw new IllegalArgumentException("Invalid value in " + text.getName()); - } - } - defined.add(text.getText().isBlank() ? false : true); - } - if ((defined.get(0) != defined.get(1)) || (defined.get(2) != defined.get(3))) { - throw new IllegalArgumentException("Invalid detector range"); - } } void checkBeamline() { @@ -934,27 +957,8 @@ public class SIStem extends PanelProcessor { new Thread(() -> { try { int[] sensor = (int[]) eval("scienta.getSensorSize()", true); - int[] _roi = (int[]) eval("scienta.getROI()", 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); @@ -967,8 +971,8 @@ public class SIStem extends PanelProcessor { 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); + detectorPlot.addMarker(roi[0]+roi[2], Plot.AxisId.X, "", Color.GREEN); + detectorPlot.addMarker(roi[1]+roi[3], Plot.AxisId.Y, "", Color.GREEN); }); } catch (Exception ex) { getLogger().log(Level.WARNING, null, ex); @@ -998,26 +1002,39 @@ public class SIStem extends PanelProcessor { */ 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); + + try { + int[] sensor = (int[]) eval("scienta.getSensorSize()", true); + int[] roi = (int[]) eval("scienta.getROI()", true); Object data = eval("scienta.getDataMatrix().take()", true); - if (data != null) { + if (data != null) { double[][] a = (double[][]) Convert.toDouble(data); - double scaleX = roi[2] / a[0].length; - double scaleY = roi[3] / a.length; - arr = new double[sensor[0]][sensor[1]]; - for (int i = 0; i < a.length; i++) { - for (int j = 0; j < a[0].length; j++) { - arr[(int) (scaleY * i) + roi[1]][(int) (scaleX * j) + roi[0]] = a[i][j]; + + double scaleX = ((double)(a[0].length))/roi[2]; + double scaleY = ((double)a.length-1) / roi[3] ; + + arr = new double[sensor[1]][sensor[0]]; + for (int i = 0; i < sensor[1]; i++) { + for (int j = 0; j < sensor[0]; j++) { + arr[i][j]=Double.NaN; } } + for (int i = 0; i(); comboGrating = new javax.swing.JComboBox<>(); + jLabel34 = new javax.swing.JLabel(); + textSweeps = new ch.psi.pshell.swing.RegisterPanel(); + jLabel35 = new javax.swing.JLabel(); + comboAnalyserSlit = new javax.swing.JComboBox<>(); jPanel6 = new javax.swing.JPanel(); jScrollPane8 = new javax.swing.JScrollPane(); tableMaster = new javax.swing.JTable(); @@ -1242,6 +1286,18 @@ public class SIStem extends PanelProcessor { textStepEnergy.setName("scienta.energyStepSize"); // NOI18N + deviceValuePanel1.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel1.setName("scienta.lowEnergy.readback"); // NOI18N + + deviceValuePanel2.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel2.setName("scienta.centerEnergy.readback"); // NOI18N + + deviceValuePanel3.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel3.setName("scienta.highEnergy.readback"); // NOI18N + + deviceValuePanel4.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel4.setName("scienta.energyStepSize.readback"); // NOI18N + javax.swing.GroupLayout panelEnergyLayout = new javax.swing.GroupLayout(panelEnergy); panelEnergy.setLayout(panelEnergyLayout); panelEnergyLayout.setHorizontalGroup( @@ -1249,20 +1305,23 @@ public class SIStem extends PanelProcessor { .addGroup(panelEnergyLayout.createSequentialGroup() .addContainerGap() .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelEnergyLayout.createSequentialGroup() - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel14) - .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textLowEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) - .addComponent(textCenterEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) - .addComponent(textHighEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelEnergyLayout.createSequentialGroup() - .addComponent(jLabel15) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textStepEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE))) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel14) + .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(jLabel15)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textStepEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE) + .addComponent(textHighEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE) + .addComponent(textCenterEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE) + .addComponent(textLowEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE) + .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) ); @@ -1274,22 +1333,28 @@ public class SIStem extends PanelProcessor { .addContainerGap() .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel12) - .addComponent(textLowEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textLowEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel13) - .addComponent(textCenterEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textCenterEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(jLabel14) - .addComponent(textHighEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textHighEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel14)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelEnergyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel15) - .addComponent(textStepEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(38, Short.MAX_VALUE)) + .addComponent(textStepEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(92, Short.MAX_VALUE)) ); + panelEnergyLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel1, deviceValuePanel2, deviceValuePanel3, deviceValuePanel4, textCenterEnergy, textHighEnergy, textLowEnergy, textStepEnergy}); + panelY.setBorder(javax.swing.BorderFactory.createTitledBorder("ThetaY ")); jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); @@ -1312,6 +1377,18 @@ public class SIStem extends PanelProcessor { textStepThetaY.setName("scienta.thetaYStepSize"); // NOI18N + deviceValuePanel6.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel6.setName("scienta.thetaYStepSize.readback"); // NOI18N + + deviceValuePanel7.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel7.setName("scienta.lowThetaY.readback"); // NOI18N + + deviceValuePanel8.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel8.setName("scienta.centerThetaY.readback"); // NOI18N + + deviceValuePanel9.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel9.setName("scienta.highThetaY.readback"); // NOI18N + javax.swing.GroupLayout panelYLayout = new javax.swing.GroupLayout(panelY); panelY.setLayout(panelYLayout); panelYLayout.setHorizontalGroup( @@ -1319,20 +1396,23 @@ public class SIStem extends PanelProcessor { .addGroup(panelYLayout.createSequentialGroup() .addContainerGap() .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelYLayout.createSequentialGroup() - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel17) - .addComponent(jLabel19, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel18, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textLowThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) - .addComponent(textCenterThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) - .addComponent(textHighThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelYLayout.createSequentialGroup() - .addComponent(jLabel20) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textStepThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE))) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel17) + .addComponent(jLabel19, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel18, javax.swing.GroupLayout.Alignment.TRAILING)) + .addComponent(jLabel20)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(textStepThetaY, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(deviceValuePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel7, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel8, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel9, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)) .addContainerGap()) ); @@ -1343,23 +1423,29 @@ public class SIStem extends PanelProcessor { .addGroup(panelYLayout.createSequentialGroup() .addContainerGap() .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel19) - .addComponent(textLowThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(deviceValuePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel18) - .addComponent(textCenterThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(deviceValuePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel17) - .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textHighThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(panelYLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel20) - .addComponent(textStepThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(38, Short.MAX_VALUE)) + .addComponent(textStepThetaY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(92, Short.MAX_VALUE)) ); + panelYLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel6, deviceValuePanel7, deviceValuePanel8, deviceValuePanel9, textCenterThetaY, textHighThetaY, textLowThetaY, textStepThetaY}); + panelX.setBorder(javax.swing.BorderFactory.createTitledBorder("ThetaX")); jLabel26.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); @@ -1367,6 +1453,9 @@ public class SIStem extends PanelProcessor { textCenterThetaX.setName("scienta.centerThetaX"); // NOI18N + deviceValuePanel5.setMaximumSize(new java.awt.Dimension(60, 32769)); + deviceValuePanel5.setName("scienta.centerThetaX.readback"); // NOI18N + javax.swing.GroupLayout panelXLayout = new javax.swing.GroupLayout(panelX); panelX.setLayout(panelXLayout); panelXLayout.setHorizontalGroup( @@ -1375,7 +1464,9 @@ public class SIStem extends PanelProcessor { .addContainerGap() .addComponent(jLabel26) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textCenterThetaX, javax.swing.GroupLayout.DEFAULT_SIZE, 78, Short.MAX_VALUE) + .addComponent(textCenterThetaX, javax.swing.GroupLayout.DEFAULT_SIZE, 55, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(deviceValuePanel5, javax.swing.GroupLayout.DEFAULT_SIZE, 40, Short.MAX_VALUE) .addContainerGap()) ); panelXLayout.setVerticalGroup( @@ -1384,10 +1475,13 @@ public class SIStem extends PanelProcessor { .addGap(36, 36, 36) .addGroup(panelXLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel26) - .addComponent(textCenterThetaX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(89, Short.MAX_VALUE)) + .addComponent(textCenterThetaX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(143, Short.MAX_VALUE)) ); + panelXLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel5, textCenterThetaX}); + jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); jLabel29.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); @@ -1410,6 +1504,18 @@ public class SIStem extends PanelProcessor { jLabel28.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel28.setText("Acquisition:"); + deviceValuePanel10.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel10.setName("scienta.lensModeDev.readback"); // NOI18N + + deviceValuePanel11.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel11.setName("scienta.energyModeDev.readback"); // NOI18N + + deviceValuePanel12.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel12.setName("scienta.acquisitionModeDev.readback"); // NOI18N + + deviceValuePanel13.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel13.setName("scienta.passEnergyDev.readback"); // NOI18N + javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10); jPanel10.setLayout(jPanel10Layout); jPanel10Layout.setHorizontalGroup( @@ -1423,10 +1529,16 @@ public class SIStem extends PanelProcessor { .addComponent(jLabel30)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(comboLens, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE) - .addComponent(comboEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE) - .addComponent(comboAcquisition, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE) - .addComponent(comboPass, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)) + .addComponent(comboLens, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) + .addComponent(comboEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) + .addComponent(comboAcquisition, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE) + .addComponent(comboPass, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(deviceValuePanel12, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE) + .addComponent(deviceValuePanel13, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) ); @@ -1438,27 +1550,39 @@ public class SIStem extends PanelProcessor { .addContainerGap() .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel24) - .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel28) - .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboAcquisition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel29) - .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(comboEnergy, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel30) - .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(18, Short.MAX_VALUE)) + .addComponent(comboLens, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(72, Short.MAX_VALUE)) ); - javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); - jPanel4.setLayout(jPanel4Layout); - jPanel4Layout.setHorizontalGroup( - jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup() + jPanel10Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboPass, deviceValuePanel13}); + + jPanel10Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboAcquisition, deviceValuePanel12}); + + jPanel10Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboEnergy, deviceValuePanel11}); + + jPanel10Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboLens, deviceValuePanel10}); + + javax.swing.GroupLayout panelAnalyserLayout = new javax.swing.GroupLayout(panelAnalyser); + panelAnalyser.setLayout(panelAnalyserLayout); + panelAnalyserLayout.setHorizontalGroup( + panelAnalyserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelAnalyserLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -1469,26 +1593,27 @@ public class SIStem extends PanelProcessor { .addComponent(panelY, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); - jPanel4Layout.setVerticalGroup( - jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel4Layout.createSequentialGroup() + panelAnalyserLayout.setVerticalGroup( + panelAnalyserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelAnalyserLayout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelAnalyserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(panelY, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelX, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelEnergy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(147, Short.MAX_VALUE)) + .addContainerGap(191, Short.MAX_VALUE)) ); - jPanel4Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel10, panelEnergy, panelX, panelY}); + panelAnalyserLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel10, panelEnergy, panelX, panelY}); - jTabbedPane1.addTab("Analyzer", jPanel4); + jTabbedPane1.addTab("Analyzer", panelAnalyser); jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel16.setText("Mode:"); - jLabel9.setText("X Channel Range:"); + jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel9.setText("Min X:"); jLabel25.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel25.setText("Slices:"); @@ -1496,36 +1621,6 @@ public class SIStem extends PanelProcessor { jLabel27.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel27.setText("Channels:"); - textXChannelMin.setName("x_channel_min"); // NOI18N - textXChannelMin.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - - textXChannelMax.setName("x_channel_max"); // NOI18N - textXChannelMax.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - - jLabel10.setText("Y Channel Range:"); - - textYChannelMin.setName("y_channel_min"); // NOI18N - textYChannelMin.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - - textYChannelMax.setName("y_channel_max"); // NOI18N - textYChannelMax.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - roiChanged(evt); - } - }); - detectorPlot.setLegendVisible(false); detectorPlot.setTitle(""); @@ -1547,87 +1642,161 @@ public class SIStem extends PanelProcessor { textExposureDev.setName("scienta.exposureDev"); // NOI18N - javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); - jPanel5.setLayout(jPanel5Layout); - jPanel5Layout.setHorizontalGroup( - jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel5Layout.createSequentialGroup() - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap(13, Short.MAX_VALUE) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel16) - .addComponent(jLabel31) - .addComponent(jLabel9) - .addComponent(jLabel27) - .addComponent(jLabel10) - .addComponent(jLabel25)) + deviceValuePanel14.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel14.setName("scienta.detectorModeDev.readback"); // NOI18N + + deviceValuePanel15.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel15.setName("scienta.exposureDev.readback"); // NOI18N + + deviceValuePanel18.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel18.setName("scienta.channelsReadback"); // NOI18N + + deviceValuePanel21.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel21.setName("scienta.slicesReadback"); // NOI18N + + textMinX.setName("scienta.minX"); // NOI18N + + deviceValuePanel22.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel22.setName("scienta.minXReadback"); // NOI18N + + jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel11.setText("Size X:"); + + textSizeX.setName("scienta.sizeX"); // NOI18N + + deviceValuePanel23.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel23.setName("scienta.sizeXReadback"); // NOI18N + + jLabel32.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel32.setText("Min Y:"); + + jLabel33.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel33.setText("Size Y:"); + + textMinY.setName("scienta.minY"); // NOI18N + + deviceValuePanel24.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel24.setName("scienta.minYReadback"); // NOI18N + + textSizeY.setName("scienta.sizeY"); // NOI18N + + deviceValuePanel25.setMaximumSize(new java.awt.Dimension(120, 32769)); + deviceValuePanel25.setName("scienta.sizeYReadback"); // NOI18N + + javax.swing.GroupLayout panelDetectorLayout = new javax.swing.GroupLayout(panelDetector); + panelDetector.setLayout(panelDetectorLayout); + panelDetectorLayout.setHorizontalGroup( + panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDetectorLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(butonPlot) + .addGroup(panelDetectorLayout.createSequentialGroup() + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel33, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel31, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel27, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel25, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel32, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(jPanel5Layout.createSequentialGroup() - .addComponent(textYChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(textMinX, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(comboDetMode, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(textExposureDev, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(textSizeX, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(textChannels, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(textMinY, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(textSizeY, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(deviceValuePanel21, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel25, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel24, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel18, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel23, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel22, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel15, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel14, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(detectorPlot, javax.swing.GroupLayout.PREFERRED_SIZE, 563, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel16, jLabel25, jLabel27, jLabel31, jLabel9}); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboDetMode, textChannels, textExposureDev, textMinX, textMinY, textSizeX, textSizeY, textSlices}); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deviceValuePanel14, deviceValuePanel15, deviceValuePanel18, deviceValuePanel21, deviceValuePanel22, deviceValuePanel23, deviceValuePanel24, deviceValuePanel25}); + + panelDetectorLayout.setVerticalGroup( + panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDetectorLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelDetectorLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(panelDetectorLayout.createSequentialGroup() + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel16) + .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textYChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(jPanel5Layout.createSequentialGroup() - .addComponent(textXChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textXChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(comboDetMode, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE) - .addComponent(textExposureDev, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)) - .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(butonPlot) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE) - .addContainerGap()) - ); - - jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel10, jLabel16, jLabel25, jLabel27, jLabel31, jLabel9}); - - jPanel5Layout.setVerticalGroup( - jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel5Layout.createSequentialGroup() - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel5Layout.createSequentialGroup() + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(textExposureDev, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel31))) + .addComponent(deviceValuePanel15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(jLabel16) - .addComponent(comboDetMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(textExposureDev, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel31)) - .addGap(18, 18, 18) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel9) - .addComponent(textXChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textXChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textMinX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel22, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(deviceValuePanel23, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textSizeX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel11)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel27) - .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(jLabel10) - .addComponent(textYChannelMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(textYChannelMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(textChannels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel32) + .addComponent(textMinY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel24, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel33) + .addComponent(textSizeY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel25, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelDetectorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel25) - .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(textSlices, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(deviceValuePanel21, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(151, 151, 151) .addComponent(butonPlot)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup() - .addContainerGap() - .addComponent(detectorPlot, javax.swing.GroupLayout.DEFAULT_SIZE, 301, Short.MAX_VALUE))) + .addComponent(detectorPlot, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); - jTabbedPane1.addTab("Detector", jPanel5); + panelDetectorLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboDetMode, deviceValuePanel14}); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel21, deviceValuePanel24, deviceValuePanel25, textMinY, textSizeY, textSlices}); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel15, textExposureDev}); + + panelDetectorLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deviceValuePanel18, deviceValuePanel22, deviceValuePanel23, textChannels, textMinX, textSizeX}); + + jTabbedPane1.addTab("Detector", panelDetector); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel4.setText("Settling Time:"); @@ -1655,41 +1824,59 @@ public class SIStem extends PanelProcessor { comboGrating.setName("grating"); // NOI18N + jLabel34.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel34.setText("Sweeps:"); + + textSweeps.setName("scienta.sweeps"); // NOI18N + + jLabel35.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel35.setText("Analyser Slit:"); + + comboAnalyserSlit.setName("analyser_slit"); // NOI18N + javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); jPanel11.setLayout(jPanel11Layout); jPanel11Layout.setHorizontalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() .addGap(151, 151, 151) - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel22) - .addComponent(jLabel8) - .addComponent(jLabel4) - .addComponent(jLabel1)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel11Layout.createSequentialGroup() - .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(jLabel34) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textSweeps, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel11Layout.createSequentialGroup() .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel22) + .addComponent(jLabel8) + .addComponent(jLabel4) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(checkCompression) .addComponent(checkZigzag) .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) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel21) - .addComponent(jLabel23)) + .addComponent(jLabel23) + .addComponent(jLabel35)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(comboAnalyserSlit, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(comboPol, 0, 150, Short.MAX_VALUE) - .addComponent(comboGrating, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap(141, Short.MAX_VALUE)))) + .addComponent(comboGrating, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap(242, 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[] {spinnerLatency, spinnerPasses, textSweeps}); - jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel22, jLabel4, jLabel8}); + jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel22, jLabel34, jLabel4, jLabel8}); + + jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel21, jLabel23, jLabel35}); + + jPanel11Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboAnalyserSlit, comboGrating, comboPol}); jPanel11Layout.setVerticalGroup( jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -1720,8 +1907,14 @@ public class SIStem extends PanelProcessor { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .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(177, Short.MAX_VALUE)) + .addComponent(spinnerPasses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel35) + .addComponent(comboAnalyserSlit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel34) + .addComponent(textSweeps, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(234, Short.MAX_VALUE)) ); jTabbedPane1.addTab("Scan", jPanel11); @@ -1793,7 +1986,7 @@ public class SIStem extends PanelProcessor { .addComponent(buttonPrivateMasterAxis) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanel6Layout.createSequentialGroup() - .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 732, Short.MAX_VALUE) + .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 836, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(buttonEditMaster, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) @@ -1803,7 +1996,7 @@ public class SIStem extends PanelProcessor { .addGroup(jPanel6Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 269, Short.MAX_VALUE) + .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 367, Short.MAX_VALUE) .addComponent(buttonEditMaster)) .addGap(13, 13, 13) .addComponent(buttonPrivateMasterAxis) @@ -1905,18 +2098,18 @@ 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, 223, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE) + .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE)) + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE) + .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 397, Short.MAX_VALUE) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) .addContainerGap()) @@ -1958,13 +2151,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, 213, Short.MAX_VALUE) + .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE) + .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 213, Short.MAX_VALUE) + .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 216, Short.MAX_VALUE) + .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE) .addGap(0, 0, 0)) ); jPanel3Layout.setVerticalGroup( @@ -1972,7 +2165,7 @@ public class SIStem extends PanelProcessor { .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE) + .addComponent(jScrollPane6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 397, Short.MAX_VALUE) .addComponent(jScrollPane5, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane7)) @@ -2247,10 +2440,6 @@ public class SIStem extends PanelProcessor { } }//GEN-LAST:event_butonPlotActionPerformed - private void roiChanged(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_roiChanged - updateDetectorPlot(); - }//GEN-LAST:event_roiChanged - private void buttonEditMasterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonEditMasterActionPerformed try { String name = (String) modelMaster.getValueAt(tableMaster.getSelectedRow(), 0); @@ -2312,6 +2501,7 @@ public class SIStem extends PanelProcessor { private javax.swing.JCheckBox checkCompression; private javax.swing.JCheckBox checkZigzag; private ch.psi.pshell.swing.DiscretePositionerSelector comboAcquisition; + private javax.swing.JComboBox comboAnalyserSlit; private ch.psi.pshell.swing.DiscretePositionerSelector comboDetMode; private ch.psi.pshell.swing.DiscretePositionerSelector comboEnergy; private javax.swing.JComboBox comboGrating; @@ -2319,8 +2509,29 @@ public class SIStem extends PanelProcessor { private ch.psi.pshell.swing.DiscretePositionerSelector comboPass; private javax.swing.JComboBox comboPol; private ch.psi.pshell.plot.MatrixPlotJFree detectorPlot; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel10; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel11; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel12; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel13; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel14; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel15; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel18; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel2; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel21; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel22; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel23; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel24; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel25; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel3; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel4; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel5; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel6; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel7; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel8; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel9; private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; @@ -2343,6 +2554,10 @@ public class SIStem extends PanelProcessor { private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; private javax.swing.JLabel jLabel31; + private javax.swing.JLabel jLabel32; + private javax.swing.JLabel jLabel33; + private javax.swing.JLabel jLabel34; + private javax.swing.JLabel jLabel35; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; @@ -2351,8 +2566,6 @@ public class SIStem extends PanelProcessor { private javax.swing.JPanel jPanel11; private javax.swing.JPanel jPanel2; 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; @@ -2363,6 +2576,8 @@ public class SIStem extends PanelProcessor { private javax.swing.JScrollPane jScrollPane7; private javax.swing.JScrollPane jScrollPane8; private javax.swing.JTabbedPane jTabbedPane1; + private javax.swing.JPanel panelAnalyser; + private javax.swing.JPanel panelDetector; private javax.swing.JPanel panelEnergy; private javax.swing.JPanel panelX; private javax.swing.JPanel panelY; @@ -2384,16 +2599,17 @@ public class SIStem extends PanelProcessor { private ch.psi.pshell.swing.RegisterPanel textHighThetaY; private ch.psi.pshell.swing.RegisterPanel textLowEnergy; private ch.psi.pshell.swing.RegisterPanel textLowThetaY; + private ch.psi.pshell.swing.RegisterPanel textMinX; + private ch.psi.pshell.swing.RegisterPanel textMinY; private javax.swing.JTextArea textMonitors; private javax.swing.JTextArea textSensors; + private ch.psi.pshell.swing.RegisterPanel textSizeX; + private ch.psi.pshell.swing.RegisterPanel textSizeY; private ch.psi.pshell.swing.RegisterPanel textSlices; private javax.swing.JTextArea textSnapshots; private ch.psi.pshell.swing.RegisterPanel textStepEnergy; private ch.psi.pshell.swing.RegisterPanel textStepThetaY; + private ch.psi.pshell.swing.RegisterPanel textSweeps; private javax.swing.JTextField textTime; - private javax.swing.JTextField textXChannelMax; - private javax.swing.JTextField textXChannelMin; - private javax.swing.JTextField textYChannelMax; - private javax.swing.JTextField textYChannelMin; // End of variables declaration//GEN-END:variables } diff --git a/script/local.py b/script/local.py index d98d53c..e582564 100644 --- a/script/local.py +++ b/script/local.py @@ -1,7 +1,7 @@ ################################################################################################### # Deployment specific global definitions - executed after startup.py ################################################################################################### - +import ch.psi.pshell.device.Camera as Camera def get_additional_positioners(): ret = [] @@ -38,6 +38,13 @@ class Energy(PositionerBase): def getMaxValue(self): er=get_energy_range() return er[1] if er is not None else -sys.maxint + + def getChannelName(self): + return photon_energy.getChannelName() + + def getResolution(self): + return photon_energy.getResolution() + add_device(Energy("energy", None), True) def get_energy_range(): @@ -90,6 +97,9 @@ class Cff(PositionerBase): def getMaxValue(self): return pgm_cff.getMaxValue() + + def getChannelName(self): + return pgm_cff.getChannelName() add_device(Cff("cff", None), True) @@ -127,6 +137,8 @@ id_mode.setSettlingCondition(IdSettlingCondition()) id_mode.setpoint.blockingWrite=True grating.setSettlingCondition(GrSettlingCondition()) pgm_cff.setSettlingCondition(CffSettlingCondition()) +id_energy.setSettlingCondition(IdSettlingCondition()) +id_energy.setpoint.blockingWrite=True def change_photon_pars(_photon_energy=None, _id_mode=None, _grating=None, _cff=None): @@ -154,27 +166,33 @@ def change_photon_pars(_photon_energy=None, _id_mode=None, _grating=None, _cff=N #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) + + def move_grating(_grating, _photon_energy, _cff): + if _grating is not None: + #Set grating + print "Setting grating="+str(_grating) + grating.move(_grating) + if _photon_energy is not None: + #Set moni 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) - 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) + def move_id(_id_mode, _photon_energy): + 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 _photon_energy is not None: + #Set insertion device energy + print "Setting id_energy="+str(_photon_energy) + id_energy.move(_photon_energy) + + ret = parallelize((move_grating,(_grating, _photon_energy, _cff)), (move_id,(_id_mode, _photon_energy))) finally: #Return operation mode to original value (e.g. “PGM+ID”) @@ -308,7 +326,7 @@ def trigger_scienta(): image_id = scienta.currentImageCount scienta.start() scienta.waitReady(-1) - scienta.waitNewImage(3000, image_id) + scienta.waitNewImage(10000, image_id) def dummy_trigger_scienta(): @@ -401,4 +419,45 @@ def calc_acquisition_time(samples=1,exp=None, iter=None, images=None, mode=None, else: ret= "%02i:%02i:%02i" % (hours, minutes, time_s) return ret - \ No newline at end of file + +def get_device_channel(dev): + dev = string_to_obj(dev) + if "getChannelName" in dir(dev): + return dev.getChannelName() + return None + + +def set_device_channel_names(scan, sensors=None, snaps=None, diags=None, monitors=None): + layout=get_context().dataManager.layout + if sensors is not None: + for dev in sensors: + channel=get_device_channel(dev) + if channel: + try: + set_attribute(layout.getScanPath(scan)+string_to_obj(dev).alias, "channel", channel) + except: + pass + if snaps is not None: + for dev in snaps: + channel=get_device_channel(dev) + if channel: + try: + set_attribute(layout.getSnapPathName(scan, dev), "channel", channel) + except: + pass + if diags is not None: + for dev in diags: + channel=get_device_channel(dev) + if channel: + try: + set_attribute(layout.getDiagPathName(scan, dev), "channel", channel) + except: + pass + if monitors is not None: + for dev in monitors: + channel=get_device_channel(dev) + if channel: + try: + set_attribute(layout.getMonitorPathName(scan, string_to_obj(dev)), "channel", channel) + except: + pass \ No newline at end of file diff --git a/script/queues/test.que b/script/queues/test.que old mode 100644 new mode 100755 diff --git a/script/queues/test2.que b/script/queues/test2.que old mode 100644 new mode 100755 diff --git a/script/queues/test3.que b/script/queues/test3.que old mode 100644 new mode 100755 diff --git a/script/queues/test4.que b/script/queues/test4.que old mode 100644 new mode 100755 diff --git a/script/scans/templates/Default.json b/script/scans/templates/Default.json new file mode 100755 index 0000000..33ab225 --- /dev/null +++ b/script/scans/templates/Default.json @@ -0,0 +1,33 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "20", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "Transmission", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.slices" : 512, + "scienta.channels" : 512, + "scienta.exposureDev" : 3.0, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 750, + "scienta.sweeps" : 1 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/nick.json b/script/scans/test/nick.json old mode 100644 new mode 100755 index 87cb792..5769c2e --- a/script/scans/test/nick.json +++ b/script/scans/test/nick.json @@ -1,29 +1,37 @@ { "PASSES" : 1, - "STOP" : [ 5.0 ], + "STOP" : [ ], "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], "PRE_ACTIONS" : { - "scienta.passEnergyDev" : "5", - "scienta.acquisitionModeDev" : "Fixed", + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep ThetaY", "scienta.energyModeDev" : "Kinetic", - "scienta.lensModeDev" : "A30_01", + "scienta.lensModeDev" : "DA30L_01", "scienta.detectorModeDev" : "ADC", - "scienta.lowEnergy" : 20.3, - "scienta.centerEnergy" : 20.25, - "scienta.highEnergy" : 20.5, - "scienta.energyStepSize" : 0.001, + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, "scienta.centerThetaX" : 0.0, - "scienta.slices" : 601, - "scienta.channels" : 801 + "scienta.slices" : 750, + "scienta.channels" : 800, + "scienta.exposureDev" : 1.0, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 750 }, "COMPRESSION" : true, "SENSORS" : [ "scienta.dataMatrix" ], "ZIGZAG" : false, "SETTLING_TIME" : 0.0, "MONITORS" : [ "current" ], - "START" : [ -5.0 ], - "RANGE" : [ 900, 100, 800, 200 ], - "POSITIONERS" : [ "tilt" ], - "STEPS" : [ 10 ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] } \ No newline at end of file diff --git a/script/scans/test/nick2d.json b/script/scans/test/nick2d.json old mode 100644 new mode 100755 diff --git a/script/scans/test/scan1.json b/script/scans/test/scan1.json old mode 100644 new mode 100755 index 6324ee3..6c74918 --- a/script/scans/test/scan1.json +++ b/script/scans/test/scan1.json @@ -2,14 +2,31 @@ "PASSES" : 1, "STOP" : [ ], "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], - "PRE_ACTIONS" : { }, + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "20", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "A14_08", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 10.0, + "scienta.centerEnergy" : 21.0, + "scienta.highEnergy" : 15.0, + "scienta.energyStepSize" : 0.01, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 512, + "scienta.channels" : 600, + "scienta.exposureDev" : 0.2, + "scienta.minX" : 100, + "scienta.sizeX" : 600, + "scienta.minY" : 0, + "scienta.sizeY" : 600 + }, "COMPRESSION" : true, "SENSORS" : [ "scienta.dataMatrix" ], "ZIGZAG" : false, "SETTLING_TIME" : 0.0, "MONITORS" : [ "current" ], "START" : [ ], - "RANGE" : [ null, null, null, null ], "POSITIONERS" : [ ], "STEPS" : [ ], "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] diff --git a/script/scans/test/scan2.json b/script/scans/test/scan2.json old mode 100644 new mode 100755 diff --git a/script/scans/test/scan3.json b/script/scans/test/scan3.json old mode 100644 new mode 100755 diff --git a/script/scans/test/scan4.json b/script/scans/test/scan4.json old mode 100644 new mode 100755 diff --git a/script/scans/test/scan5.json b/script/scans/test/scan5.json old mode 100644 new mode 100755 index 1372594..050d942 --- a/script/scans/test/scan5.json +++ b/script/scans/test/scan5.json @@ -4,7 +4,24 @@ "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], "PRE_ACTIONS" : { "id_mode" : "CIRC+", - "grating" : "G2 1200" + "grating" : "G2 1200", + "scienta.passEnergyDev" : "20", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "Transmission", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.slices" : 512, + "scienta.channels" : 512, + "scienta.exposureDev" : 3.0, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 750, + "scienta.sweeps" : 1.0 }, "COMPRESSION" : true, "SENSORS" : [ "scienta.dataMatrix" ], @@ -12,7 +29,6 @@ "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" ] diff --git a/script/scans/test/scan6.json b/script/scans/test/scan6.json old mode 100644 new mode 100755 diff --git a/script/scans/test/scan7.json b/script/scans/test/scan7.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test.json b/script/scans/test/test.json old mode 100644 new mode 100755 index acc570f..f7d1766 --- a/script/scans/test/test.json +++ b/script/scans/test/test.json @@ -4,24 +4,33 @@ "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], "PRE_ACTIONS" : { "scienta.passEnergyDev" : "10", - "scienta.acquisitionModeDev" : "Fixed", + "scienta.acquisitionModeDev" : "Sweep ThetaY", "scienta.energyModeDev" : "Kinetic", - "scienta.lensModeDev" : "Transmission", + "scienta.lensModeDev" : "DA30_01", "scienta.detectorModeDev" : "ADC", "scienta.lowEnergy" : 10.0, - "scienta.centerEnergy" : 19.5, - "scienta.highEnergy" : 150.0, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 15.0, "scienta.energyStepSize" : 0.01, - "scienta.slices" : 601, - "scienta.channels" : 801 + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 851, + "scienta.channels" : 801, + "scienta.exposureDev" : 1.0, + "scienta.minX" : 100, + "scienta.sizeX" : 900, + "scienta.minY" : 50, + "scienta.sizeY" : 900 }, "COMPRESSION" : true, "SENSORS" : [ "scienta.dataMatrix" ], "ZIGZAG" : false, "SETTLING_TIME" : 0.0, "MONITORS" : [ "current" ], - "START" : [ 0.0 ], - "RANGE" : [ null, null, null, null ], + "START" : [ -1.0 ], "POSITIONERS" : [ "x" ], "STEPS" : [ 4 ], "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] diff --git a/script/scans/test/test1.json b/script/scans/test/test1.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test2.json b/script/scans/test/test2.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test3.json b/script/scans/test/test3.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test_2.json b/script/scans/test/test_2.json new file mode 100644 index 0000000..115f406 --- /dev/null +++ b/script/scans/test/test_2.json @@ -0,0 +1,38 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep ThetaY", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 350, + "scienta.channels" : 300, + "scienta.exposureDev" : 0.01, + "scienta.minX" : 100, + "scienta.sizeX" : 900, + "scienta.minY" : 350, + "scienta.sizeY" : 900, + "scienta.sweeps" : 1 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/test_alex.json b/script/scans/test/test_alex.json new file mode 100755 index 0000000..b8255fd --- /dev/null +++ b/script/scans/test/test_alex.json @@ -0,0 +1,33 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "20", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "Transmission", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.slices" : 512, + "scienta.channels" : 512, + "scienta.exposureDev" : 3.0, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 750, + "scienta.sweeps" : 1 + }, + "COMPRESSION" : true, + "SENSORS" : [ "current" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/test_nick.json b/script/scans/test/test_nick.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test_nick_2.json b/script/scans/test/test_nick_2.json old mode 100644 new mode 100755 diff --git a/script/scans/test/test_simpleSweep.json b/script/scans/test/test_simpleSweep.json new file mode 100755 index 0000000..e24998f --- /dev/null +++ b/script/scans/test/test_simpleSweep.json @@ -0,0 +1,37 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep Energy", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 900, + "scienta.channels" : 800, + "scienta.exposureDev" : 0.1, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 900 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/test_simpleSweep_moreRecords.json b/script/scans/test/test_simpleSweep_moreRecords.json new file mode 100755 index 0000000..9498196 --- /dev/null +++ b/script/scans/test/test_simpleSweep_moreRecords.json @@ -0,0 +1,62 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z", "energy" ], + "MASTER_AXIS" : { + "CONFIG" : { + "fileName" : "/sls/X09LA/data/X09LA/pshell/home/devices/tilt_correction.properties", + "precision" : -1, + "offset" : 0.0, + "scale" : 1.0, + "unit" : null, + "sign_bit" : 0, + "resolution" : "NaN", + "minValue" : "NaN", + "maxValue" : "NaN", + "rotation" : false, + "mode" : "LINEAR", + "masterPositions" : null, + "slave1Positions" : null, + "slave2Positions" : null, + "slave3Positions" : null, + "slave4Positions" : null, + "slave5Positions" : null, + "slave6Positions" : null + }, + "MASTER" : "tilt", + "SLAVES" : [ "y" ], + "NAME" : "tilt_correction" + }, + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep Energy", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 750, + "scienta.channels" : 800, + "scienta.exposureDev" : 0.1, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 750 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current", "photon_energy", "temp_sample1", "temp_sample2", "acmi" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "pgm_cff", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_shield", "scienta.passEnergyDev", "scienta.acquisitionModeDev", "scienta.energyModeDev", "scienta.lensModeDev", "scienta.lowEnergy", "scienta.centerEnergy", "scienta.highEnergy", "scienta.energyStepSize", "scienta.lowThetaY", "scienta.centerThetaY", "scienta.highThetaY", "scienta.thetaYStepSize", "scienta.centerThetaX", "scienta.exposureDev", "scienta.channels", "scienta.slices", "scienta.minX", "scienta.sizeX", "scienta.minY", "scienta.sizeY", "scienta.detectorModeDev" ] +} \ No newline at end of file diff --git a/script/scans/test/test_thetaY.json b/script/scans/test/test_thetaY.json new file mode 100644 index 0000000..e0707d3 --- /dev/null +++ b/script/scans/test/test_thetaY.json @@ -0,0 +1,37 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "id_mode" : "LH", + "grating" : "G2 1200", + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "A30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 350, + "scienta.channels" : 300, + "scienta.exposureDev" : 1.0, + "scienta.minX" : 100, + "scienta.sizeX" : 900, + "scienta.minY" : 350, + "scienta.sizeY" : 900, + "scienta.sweeps" : 1, + "energy" : 300.0 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "scienta.lensModeDev", "scienta.passEnergyDev", "scienta.energyModeDev", "scienta.exposureDev", "scienta.sweeps", "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/thetaY-x_test.json b/script/scans/test/thetaY-x_test.json new file mode 100755 index 0000000..5f2a483 --- /dev/null +++ b/script/scans/test/thetaY-x_test.json @@ -0,0 +1,37 @@ +{ + "PASSES" : 1, + "STOP" : [ ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep ThetaY", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 10.0, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 15.0, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 851, + "scienta.channels" : 801, + "scienta.exposureDev" : 1.0, + "scienta.minX" : 100, + "scienta.sizeX" : 900, + "scienta.minY" : 50, + "scienta.sizeY" : 900 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ ], + "POSITIONERS" : [ ], + "STEPS" : [ ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/thetay.json b/script/scans/test/thetay.json new file mode 100644 index 0000000..284b992 --- /dev/null +++ b/script/scans/test/thetay.json @@ -0,0 +1,35 @@ +{ + "PASSES" : 1, + "STOP" : [ 2.0 ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Sweep ThetaY", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 350, + "scienta.channels" : 300, + "scienta.exposureDev" : 0.01, + "scienta.minY" : 350, + "scienta.sweeps" : 1 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ 0.0 ], + "POSITIONERS" : [ "x" ], + "STEPS" : [ 2 ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/tilt_multiSweeps_test.json b/script/scans/test/tilt_multiSweeps_test.json new file mode 100755 index 0000000..e23d8e8 --- /dev/null +++ b/script/scans/test/tilt_multiSweeps_test.json @@ -0,0 +1,37 @@ +{ + "PASSES" : 1, + "STOP" : [ 10.0 ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 18.8, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 19.2, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 900, + "scienta.channels" : 800, + "scienta.exposureDev" : 0.1, + "scienta.minX" : 100, + "scienta.sizeX" : 800, + "scienta.minY" : 50, + "scienta.sizeY" : 900 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ -10.0 ], + "POSITIONERS" : [ "tilt" ], + "STEPS" : [ 20 ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/scans/test/tilt_test.json b/script/scans/test/tilt_test.json new file mode 100755 index 0000000..e52cb67 --- /dev/null +++ b/script/scans/test/tilt_test.json @@ -0,0 +1,37 @@ +{ + "PASSES" : 1, + "STOP" : [ 10.0 ], + "DIAGS" : [ "phi", "theta", "tilt", "x", "y", "z" ], + "PRE_ACTIONS" : { + "scienta.passEnergyDev" : "10", + "scienta.acquisitionModeDev" : "Fixed", + "scienta.energyModeDev" : "Kinetic", + "scienta.lensModeDev" : "DA30_01", + "scienta.detectorModeDev" : "ADC", + "scienta.lowEnergy" : 10.0, + "scienta.centerEnergy" : 19.0, + "scienta.highEnergy" : 15.0, + "scienta.energyStepSize" : 0.01, + "scienta.lowThetaY" : -10.0, + "scienta.centerThetaY" : 0.0, + "scienta.highThetaY" : 10.0, + "scienta.thetaYStepSize" : 0.5, + "scienta.centerThetaX" : 0.0, + "scienta.slices" : 851, + "scienta.channels" : 801, + "scienta.exposureDev" : 0.0, + "scienta.minX" : 100, + "scienta.sizeX" : 600, + "scienta.minY" : 50, + "scienta.sizeY" : 950 + }, + "COMPRESSION" : true, + "SENSORS" : [ "scienta.dataMatrix" ], + "ZIGZAG" : false, + "SETTLING_TIME" : 0.0, + "MONITORS" : [ "current" ], + "START" : [ -10.0 ], + "POSITIONERS" : [ "tilt" ], + "STEPS" : [ 20 ], + "SNAPS" : [ "acmi", "cff", "energy", "exit_slit", "fe_horiz_width", "fe_vert_width", "helium_valve", "master", "pgm_cff", "photon_energy", "tcmp", "temp_boot1", "temp_boot2", "temp_cryopump", "temp_cryostat", "temp_headmech", "temp_sample1", "temp_sample2", "temp_shield" ] +} \ No newline at end of file diff --git a/script/templates/EnergyScan.py b/script/templates/EnergyScan.py old mode 100644 new mode 100755 diff --git a/script/templates/Reload.py b/script/templates/Reload.py new file mode 100755 index 0000000..aa9a28f --- /dev/null +++ b/script/templates/Reload.py @@ -0,0 +1,9 @@ +datafile = args[0] + +config = load_data(datafile+"|scripts/config.json") +config_file = get_attributes(datafile+"|scripts")["config"] + +with open(config_file, 'w') as f: + f.write(config) + +App.getInstance().getMainFrame().openScriptOrProcessor(config_file) \ No newline at end of file diff --git a/script/templates/SIStem.py b/script/templates/SIStem.py index 356b1d2..6b291d0 100644 --- a/script/templates/SIStem.py +++ b/script/templates/SIStem.py @@ -26,6 +26,10 @@ def load_parameters(name): for key in config.keys(): globals()[key] = config[key] print str(key), " = ", config[key] + + with open(filename) as config_file: + save_dataset("scripts/config.json", config_file.read(), type = 's') + set_attribute("scripts", "config", filename) if NAME: load_parameters(NAME) @@ -41,6 +45,8 @@ latency = SETTLING_TIME passes = int(PASSES) zigzag = bool(ZIGZAG) +#Setuop Scienta +scienta.setGrabMode(Camera.GrabMode.Single) #Change photon parameters _id_mode=_grating=None @@ -75,33 +81,48 @@ if COMPRESSION: def before_read(pos, scan): - trigger_scienta() + if scienta.dataMatrix in sensors: + trigger_scienta() -data_3d = (scienta.dataMatrix in sensors) and (str(scienta.getAcquisitionMode())=="Swept_Energy_ThetaY") + +data_3d = (scienta.dataMatrix in sensors) and ("thetay" in scienta.acquisitionMode.lower()) +if data_3d: + print "3D dataset" + def after_read(rec, scan): global data_3d #handle_diagnostics(rec) - #data_3d = (scienta.dataMatrix in sensors) and (scienta.arraySize2.read()>1) if data_3d: try: - path = get_exec_pars().scanPath + ("/3d_images/%04d" % rec.index) - data = scienta.takeStack() - save_dataset(path, data) + #path = get_exec_pars().scanPath + ("/3d_images/%04d" % rec.index) + #data = scienta.takeStack() + #save_dataset(path, data) + path = get_exec_pars().scanPath + "/images" + if rec.index==0: + size=scienta.getImageSize() + if len(size)<3: + raise Exception("Data is not 3D") + num_images = scan.getNumberOfRecords() * size[2] + create_dataset(path, scienta.dataArray, None, (num_images, size[1], size[0]), {"layout":"contiguous", "compression":True}) + for img in scienta.takeStack(): + append_dataset(path, img) except: log(sys.exc_info()[1]) try: if len(positioners)==0: ret= tscan (sensors, 1,0, passes=passes, \ before_read=before_read, after_read=after_read, \ - snaps=SNAPS, diags=DIAGS, monitors=MONITORS, keep=True) - save_dataset("/image", ret[scienta.dataMatrix][0], type = 'i', features={"compression":True}) + snaps=SNAPS, diags=DIAGS, monitors=MONITORS, keep=True) + #if (scienta.dataMatrix in sensors) and not data_3d: + # save_dataset("/image", ret[scienta.dataMatrix][0], type = 'i', features={"compression":True}) else: ret= ascan (positioners, sensors, start, end, steps, \ latency= latency, relative=False, passes=passes, zigzag=zigzag, \ before_read=before_read, after_read=after_read, \ snaps=SNAPS, diags=DIAGS, monitors=MONITORS) + set_device_channel_names(ret.scan, sensors, SNAPS, DIAGS, MONITORS ) finally: + scienta.stop() scienta.zeroSupplies() - print ret diff --git a/script/test/PlotImage.py b/script/test/PlotImage.py new file mode 100755 index 0000000..5c69810 --- /dev/null +++ b/script/test/PlotImage.py @@ -0,0 +1,15 @@ + +sensor = scienta.getSensorSize() +roi = scienta.getROI() +data = scienta.getDataMatrix().take() + +a=Convert.toDouble(data); +scaleX = roi[2] / len(a[0]) +scaleY = roi[3] / len(a) +arr = [[0.0] * sensor[1]] *sensor[0] +for i in range(len(a)): + for j in range (len(a[0])): + arr[int(scaleY * i) + roi[1]][int(scaleX * j) + roi[0]] = a[i][j] + + +p=plot(arr) \ No newline at end of file diff --git a/script/test/TestLensMode.py b/script/test/TestLensMode.py old mode 100644 new mode 100755 diff --git a/script/test/TestScan.py b/script/test/TestScan.py old mode 100644 new mode 100755 diff --git a/script/test/test.py b/script/test/test.py new file mode 100755 index 0000000..30d74d2 --- /dev/null +++ b/script/test/test.py @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/script/test/x.xml b/script/test/x.xml new file mode 100755 index 0000000..33c0849 --- /dev/null +++ b/script/test/x.xml @@ -0,0 +1,13 @@ + + + + + + + 10 + + + + + +