PEARL Procedures rev-distro-3.1.0-0-gea838b3-dirty
Igor procedures for the analysis of PEARL data
Loading...
Searching...
No Matches
pearl-menu.ipf
Go to the documentation of this file.
1#pragma TextEncoding = "UTF-8"
2#pragma rtGlobals=1 // Use modern global access method.
3#pragma ModuleName = PearlMenu
4#pragma version = 1.03
5
6// main menu for PEARL data acquisition and analysis packages
7
8// $Id$
9// author: matthias.muntwiler@psi.ch
10// Copyright (c) 2013-25 Paul Scherrer Institut
11
12// Licensed under the Apache License, Version 2.0 (the "License");
13// you may not use this file except in compliance with the License.
14// You may obtain a copy of the License at
15// http://www.apache.org/licenses/LICENSE-2.0
16
17menu "PEARL"
18
19 submenu "Data Files"
20 PearlMenuEnableFunc("pearl_data_explorer") + "Data Explorer", /Q, pearl_data_explorer()
21 help = {"Data explorer panel with file import and preview", "Requires ARPES package and HDF5 XOP"}
22 PearlMenuEnableFunc("ad_load_dialog") + "AD HDF5", /Q, ad_load_dialog("")
23 help = {"Import area detector HDF5 data file", "Requires ARPES package and HDF5 XOP"}
24 end
25
26 submenu "On-the-Fly Data"
27 PearlMenuEnableFunc("otf_rename_folders") + "Shorten OTF Folder Names", /Q, otf_rename_folders("010")
28 help = {"Renames otf_xxxxxx_yyyyyy_zzzz data folders to otf_yyyyyy (removing date and suffix)", "Requires Optics package"}
29 PearlMenuEnableFunc("otf_gather_batch") + "Gather OTF Batch", /Q, otf_gather_batch("current_ch1", "photonenergy", "otf_batch")
30 help = {"Copies data from all otf_* folders into otf_batch folder", "Requires Optics package"}
31 PearlMenuEnableFunc("PearlOpticsPreviewPanel") + "OTF Preview", /Q, PearlOpticsPreviewPanel()
32 help = {"Opens a preview panel for OTF data in otf_* folders", "Requires Optics package"}
33 end
34
35 submenu "Scienta Analyser"
36 PearlMenuEnableFunc("ad_display_profiles") + "Scienta Live View", /Q, PearlLiveDisplay("X03DA-SCIENTA:", "EA", "(65280,54528,48896)")
37 help = {"Display preview panel with latest image from Scienta", "Requires ARPES package and EPICS XOP"}
38 PearlMenuEnableFunc("ast_setup") + "Angle Scan Tracker", /Q, PearlAnglescanTracker("X03DA-SCIENTA:", "(65280,54528,48896)")
39 help = {"Preview of acquired angle scan data and current detection angles.", "Requires ARPES package and EPICS XOP"}
40 PearlMenuEnableFunc("sample_tracker") + "Sample Tracker", /Q, PearlSampleTracker(1)
41 help = {"Live tracking and adjustment of sample position.", "Requires ARPES package and EPICS XOP"}
42 end
43
44 submenu "Cameras"
45 PearlMenuEnableFunc("ad_display_profiles") + "Exit Slit Camera", /Q, PearlLiveDisplay("X03DA-OP-PS1:", "OP", "(65280,54528,48896)")
46 help = {"Display preview panel with latest image from Scienta", "Requires ARPES package and EPICS XOP"}
47 PearlMenuEnableFunc("ad_display_profiles") + "Manipulator Camera", /Q, PearlCameraDisplay("X03DA-ES-PS1:", "ES", "(32767,32767,32767)")
48 help = {"Display live panel of the exit slit camera", "Requires ARPES package and EPICS XOP"}
49 end
50
51 submenu "Display"
52 PearlMenuEnableFunc("ad_display_profiles") + "2D Profiles", /Q, Display2dProfiles()
53 help = {"Profiles display of 2D data", "Requires ARPES package"}
54 PearlMenuEnableFunc("ad_display_brick") + "3D Slicer", /Q, Display3dSlicer()
55 help = {"Slice and profiles display of 3D data", "Requires ARPES package"}
56 PearlMenuEnableFunc("ad_display_brick") + "3D Gizmo", /Q, DisplayGizmoSlicer()
57 help = {"Gizmo display of 3D data", "Requires ARPES package"}
58 end
59
60 submenu "Process"
61 PearlMenuEnableFunc("asp_show_panel") + "XPD scans", /Q, asp_show_panel()
62 help = {"Data processing of two-pi angle scans", "Requires ARPES package"}
63 end
64
65 submenu "Services"
66 PearlMenuEnableFunc("pearl_elog") + "Open ELOG Panel", /Q, pearl_elog("")
67 help = {"Open an ELOG panel to send entries to an ELOG logbook"}
68 PearlMenuEnableFunc("pearl_scilog") + "Open SciLog Panel", /Q, pearl_scilog("")
69 help = {"Open a panel to send entries to a SciLog logbook"}
70 end
71
72 submenu "Sample Preparation"
73 PearlMenuEnableFunc("ramp_generator") + "Annealing Ramp", /Q, ramp_generator()
74 help = {"Sample annealing ramp generator"}
75 end
76
77 submenu "Packages"
78 "Load ARPES Package", /Q, LoadPearlArpes()
79 help = {"Data processing and analysis for ARPES experiments"}
80 "Load Preparation Package", /Q, LoadPearlPreparation()
81 help = {"Process control for sample preparation"}
82 "Load Optics Package", /Q, LoadPearlOptics()
83 help = {"Data processing and analysis for beamline commissioning"}
84 end
85end
86
92function /s PearlMenuEnableFunc(funcname)
93 string funcname
94 if (exists(funcname) >= 3)
95 return ""
96 else
97 return "("
98 endif
99end
100
102 execute /p/q/z "INSERTINCLUDE \"pearl-optics\""
103 execute /p/q/z "COMPILEPROCEDURES "
104 execute /p/q/z "BuildMenu \"PEARL\""
105end
106
108 execute /p/q/z "INSERTINCLUDE \"pearl-arpes\""
109 execute /p/q/z "COMPILEPROCEDURES "
110 execute /p/q/z "BuildMenu \"PEARL\""
111end
112
114 execute /p/q/z "INSERTINCLUDE \"pearl-preparation\""
115 execute /p/q/z "COMPILEPROCEDURES "
116 execute /p/q/z "BuildMenu \"PEARL\""
117end
118
120 dfref dfBefore = GetDataFolderDFR()
121 Execute /q/z "CreateBrowser prompt=\"Select 2D wave\", showWaves=1, showVars=0, showStrs=0"
122 dfref dfAfter = GetDataFolderDFR()
123 SetDataFolder dfBefore
124
125 SVAR list = S_BrowserList
126 NVAR flag = V_Flag
127
128 if ((flag != 0) && (ItemsInList(list) >= 1))
129 string brickname = StringFromList(0, list)
130 string cmd
131 sprintf cmd, "ad_display_profiles(%s)", brickname
132 execute /q/z cmd
133 endif
134end
135
137 dfref dfBefore = GetDataFolderDFR()
138 Execute /q/z "CreateBrowser prompt=\"Select 3D wave\", showWaves=1, showVars=0, showStrs=0"
139 dfref dfAfter = GetDataFolderDFR()
140 SetDataFolder dfBefore
141
142 SVAR list = S_BrowserList
143 NVAR flag = V_Flag
144
145 if ((flag != 0) && (ItemsInList(list) >= 1))
146 string brickname = StringFromList(0, list)
147 string cmd
148 sprintf cmd, "ad_display_slice(%s)", brickname
149 execute /q/z cmd
150 sprintf cmd, "ad_brick_slicer(%s)", brickname
151 execute /q/z cmd
152 endif
153end
154
156 dfref dfBefore = GetDataFolderDFR()
157 Execute /q/z "CreateBrowser prompt=\"Select 3D wave\", showWaves=1, showVars=0, showStrs=0"
158 dfref dfAfter = GetDataFolderDFR()
159 SetDataFolder dfBefore
160
161 SVAR list = S_BrowserList
162 NVAR flag = V_Flag
163
164 if ((flag != 0) && (ItemsInList(list) >= 1))
165 string brickname = StringFromList(0, list)
166 string cmd
167 sprintf cmd, "ad_display_brick(%s)", brickname
168 execute /q/z cmd
169 sprintf cmd, "ad_brick_slicer(%s)", brickname
170 execute /q/z cmd
171 endif
172end
173
188function PearlLiveDisplay(epicsname, nickname, wbRGB)
189 string epicsname
190 string nickname
191 string wbRGB
192
193 string cmd
194 sprintf cmd, "ad_connect(\"%s\", \"%s\")", epicsname, nickname
195 execute /q/z cmd
196 sprintf cmd, "ad_display_profiles(root:pearl_epics:%s:image)", nickname
197 execute /q/z cmd
198 //sprintf cmd, "ad_add_overlay(root:pearl_epics:%s:image)", nickname
199 //execute /q/z cmd
200 sprintf cmd, "ModifyGraph wbRGB=%s", wbRGB
201 execute /q/z cmd
202 sprintf cmd, "add_roi_controls()"
203 execute /q/z cmd
204end
205
221function PearlCameraDisplay(epicsname, nickname, wbRGB)
222 string epicsname
223 string nickname
224 string wbRGB
225
226 string cmd
227 sprintf cmd, "ad_connect(\"%s\", \"%s\")", epicsname, nickname
228 execute /q/z cmd
229 sprintf cmd, "display; appendimage root:pearl_epics:%s:image", nickname
230 execute /q/z cmd
231 sprintf cmd, "ModifyGraph wbRGB=%s", wbRGB
232 execute /q/z cmd
233 cmd = "ModifyGraph height={Plan,1,left,bottom}"
234 execute /q/z cmd
235end
236
245function PearlAnglescanTracker(epicsname, wbRGB)
246 string epicsname
247 string wbRGB
248
249 string cmd
250 sprintf cmd, "ast_setup()"
251 execute /q/z cmd
252 sprintf cmd, "ModifyGraph wbRGB=%s", wbRGB
253 execute /q/z cmd
254end
255
264function PearlSampleTracker(action)
265 variable action
266 string cmd
267 sprintf cmd, "sample_tracker(%u)", action
268 execute /q/z cmd
269end
270
variable asp_show_panel()
create the angle scan processing panel
variable ast_setup()
set up data structures, display graph, and try to connect to analyser.
string ad_display_brick(wave data)
open a new "gizmo" window with three-dimensional data.
string ad_display_profiles(wave image, string filter=defaultValue)
open a new profiles graph window.
variable ad_brick_slicer(wave data)
open a slicer panel for 3D data.
string ad_display_slice(wave data)
display three-dimensional data by 2D slice.
variable ad_load_dialog(string APathName)
load area detector data files selected in a file dialog window
variable pearl_data_explorer()
show the pearl data explorer window
variable pearl_elog(string logbook)
main function to initialize ELOG and to open an ELOG panel.
variable PearlSampleTracker(variable action)
display the sample tracker window
string PearlMenuEnableFunc(string funcname)
check whether a function name exists
variable LoadPearlPreparation()
variable PearlLiveDisplay(string epicsname, string nickname, string wbRGB)
area detector live display
variable PearlAnglescanTracker(string epicsname, string wbRGB)
display the angle scan tracker window
variable LoadPearlArpes()
variable DisplayGizmoSlicer()
variable PearlCameraDisplay(string epicsname, string nickname, string wbRGB)
area detector surveillance camera display
variable Display2dProfiles()
variable Display3dSlicer()
variable LoadPearlOptics()
variable otf_rename_folders(string pattern, variable unique_index=defaultValue, string new_suffix=defaultValue, string match_str=defaultValue)
variable otf_gather_batch(string ywavematch, string xwavematch, string destfolder)
variable pearl_scilog(string logbook)
main function to initialize and open a SciLog panel.