1 #pragma rtGlobals=3 // Use modern global access method and strict wave access. 2 #pragma IgorVersion = 6.35 3 #pragma ModuleName = PearlScientaCountrate 4 #include "pearl-area-display" 48 ad_connect(epicsname, nickname)
50 sprintf df_name,
"ad_display_profiles(root:pearl_epics:%s)", nickname
52 wave /sdfr=df img = image
54 wbRGB = replacestring(
"(", wbRGB,
"")
55 wbRGB = replacestring(")", wbRGB, "")
56 variable rr = str2num(StringFromList(0, wbRGB, ","))
57 variable gg = str2num(StringFromList(1, wbRGB, ","))
58 variable bb = str2num(StringFromList(2, wbRGB, ","))
59 ModifyGraph /w=$graphname wbRGB=(rr,gg,bb)
64 #if igorVersion() >= 8 65 function check_exposure(image, outmask, dwelltime)
93 variable ybin = 902 / dimsize(image, 1)
94 variable thresh = 1e5 / 900 / 900
96 duplicate /free image, filt
97 setscale /p x -dimsize(image, 0)/2, 1, "", filt
98 setscale /p y -dimsize(image, 1)/2, 1, "", filt
99 variable wx = sqrt(500) / xbin
100 variable wy = sqrt(500) / ybin
101 filt = exp(-((x/wx)^2 + (y/wy)^2))
102 variable nfilt = sum(filt)
104 fft /free /dest=filt_fft filt
106 duplicate /free image, img
108 setscale /p x -dimsize(image, 0)/2, 1, "", img
109 setscale /p y -dimsize(image, 1)/2, 1, "", img
110 fft /free /dest=img_fft img
112 ifft /free /dest=img_ifft img_fft
113 imagetransform swap img_ifft
115 outmask = (img_ifft < thresh) * 64
157 variable ybin = 902 / dimsize(image, 1)
158 variable thresh = 1e5 / 900 / 900
160 dfref save_df = GetDataFolderDFR()
161 if (ParamIsDefault(calc_df))
162 dfref source_df = GetWavesDataFolderDFR(image)
164 dfref calc_df = source_df:$calc_df_name
166 NewDataFolder /o /s calc_df
169 wave /z /c co_filt_fft
171 wave /z /c co_img_fft
173 nvar /z co_img_size_x
174 nvar /z co_img_size_y
177 if (waveexists(co_filt))
178 cache = (dimsize(image, 0) == co_img_size_x) && (dimsize(image, 1) == co_img_size_y)
180 redimension /n=(dimsize(image, 0), dimsize(image, 1)) co_filt, co_filt_fft, co_img, co_img_fft, co_img_ifft
183 duplicate /o image, co_filt, co_img, co_img_ifft
184 make /n=(dimsize(image, 0), dimsize(image, 1)) /c co_filt_fft, co_img_fft
185 variable /g co_img_size_x
186 variable /g co_img_size_y
189 co_img_size_x = dimsize(image, 0)
190 co_img_size_y = dimsize(image, 1)
191 setscale /p x -co_img_size_x/2, 1, "", co_filt, co_filt_fft, co_img, co_img_fft, co_img_ifft
192 setscale /p y -co_img_size_y/2, 1, "", co_filt, co_filt_fft, co_img, co_img_fft, co_img_ifft
195 variable wx = sqrt(500) / xbin
196 variable wy = sqrt(500) / ybin
197 co_filt = exp(-((x/wx)^2 + (y/wy)^2))
198 variable nfilt = sum(co_filt)
200 fft /dest=co_filt_fft co_filt
204 fft /dest=co_img_fft co_img
205 co_img_fft *= co_filt_fft
206 ifft /dest=co_img_ifft co_img_fft
207 imagetransform swap co_img_ifft
209 redimension /n=(dimsize(co_img_ifft, 0), dimsize(co_img_ifft, 1)) outmask
210 outmask = (co_img_ifft < thresh) * 64
212 SetDataFolder save_df
variable check_exposure_opt(wave image, wave outmask, variable dwelltime, dfref calc_df=defaultValue)
optimized check exposure and calculate overexposure indicator mask
string PearlCleanupName(string name)
string ad_display(wave image)
open a new graph window with a 2D image.
wave ad_add_overlay(wave image, string rgba=defaultValue)
add an overlay on top of the displayed image
variable ScientaLiveDisplay(string epicsname, string nickname, string wbRGB)
open live display of most recent scienta measurement