1 | #pragma rtGlobals=3 // Use modern global access method and strict wave access. |
---|
2 | |
---|
3 | |
---|
4 | /// |
---|
5 | // x- update all to be only VSANS-specific |
---|
6 | // x- update all of the function names to be unique to VSANS so that there are no |
---|
7 | // name clashes with the "duplicate" version that is in PlotUtils.ipf |
---|
8 | // |
---|
9 | // x- Make this a VSANS-only panel |
---|
10 | // x- eliminate the USANS tab |
---|
11 | // x- be sure the general tab is either unique, or eliminate it |
---|
12 | // x- be sure the Analysis tab is unique, or eliminate it |
---|
13 | // |
---|
14 | // |
---|
15 | // global variables used by VSANS are stored in: |
---|
16 | // root:Packages:NIST:VSANS:Globals |
---|
17 | // |
---|
18 | |
---|
19 | |
---|
20 | /////////////////////////// |
---|
21 | Proc Show_VSANSPreferences_Panel() |
---|
22 | |
---|
23 | DoWindow/F VSANSPref_Panel |
---|
24 | if(V_flag==0) |
---|
25 | // only re-initialize if the variables don't exist, so you don't overwrite what users have changed |
---|
26 | if( exists("root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault") != 2 ) //if the global variable does not exist, initialize |
---|
27 | Initialize_VSANSPreferences() |
---|
28 | endif |
---|
29 | VSANSPref_Panel() |
---|
30 | Endif |
---|
31 | // Print "Preferences Panel stub" |
---|
32 | End |
---|
33 | |
---|
34 | |
---|
35 | // x- there are more detector specific corrections here that need to be added |
---|
36 | // |
---|
37 | // create the globals here if they are not already present |
---|
38 | // each package initialization should call this to repeat the initialization |
---|
39 | // without overwriting what was already set |
---|
40 | Proc Initialize_VSANSPreferences() |
---|
41 | |
---|
42 | Variable val |
---|
43 | |
---|
44 | // GENERAL tab |
---|
45 | /// General items for everyone |
---|
46 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gXML_Write", 0 ) |
---|
47 | Variable/G root:Packages:NIST:VSANS:Globals:gXML_Write = val |
---|
48 | |
---|
49 | |
---|
50 | // VSANS tab |
---|
51 | ///// items for VSANS reduction |
---|
52 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault", 1 ) |
---|
53 | Variable/G root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault=val |
---|
54 | |
---|
55 | // val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gAllowDRK", 0 ) |
---|
56 | // Variable/G root:Packages:NIST:VSANS:Globals:gAllowDRK=val //don't show DRK as default |
---|
57 | |
---|
58 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoTransCheck", 1 ) |
---|
59 | Variable/G root:Packages:NIST:VSANS:Globals:gDoTransCheck=val |
---|
60 | |
---|
61 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gBinWidth", 1 ) |
---|
62 | Variable/G root:Packages:NIST:VSANS:Globals:gBinWidth=val |
---|
63 | |
---|
64 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gNPhiSteps", 90 ) |
---|
65 | Variable/G root:Packages:NIST:VSANS:Globals:gNPhiSteps=val |
---|
66 | |
---|
67 | // flags to turn detector corrections on/off for testing (you should leave these ON) |
---|
68 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor", 1 ) |
---|
69 | Variable/G root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor = 1 |
---|
70 | |
---|
71 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoTransmissionCor", 1 ) |
---|
72 | Variable/G root:Packages:NIST:VSANS:Globals:gDoTransmissionCor = 1 |
---|
73 | |
---|
74 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoDIVCor", 1 ) |
---|
75 | Variable/G root:Packages:NIST:VSANS:Globals:gDoDIVCor = 1 |
---|
76 | |
---|
77 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor", 1 ) |
---|
78 | Variable/G root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor = 1 |
---|
79 | |
---|
80 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor", 1 ) |
---|
81 | Variable/G root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor = 1 |
---|
82 | |
---|
83 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoNonLinearCor", 1 ) |
---|
84 | Variable/G root:Packages:NIST:VSANS:Globals:gDoNonLinearCor = 1 |
---|
85 | |
---|
86 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor", 1 ) |
---|
87 | Variable/G root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor = 1 |
---|
88 | |
---|
89 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization", 1 ) |
---|
90 | Variable/G root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization = 1 |
---|
91 | |
---|
92 | |
---|
93 | // Special global to prevent fake data from "B" detector from being written out |
---|
94 | val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gIgnoreDetB", 1 ) |
---|
95 | Variable/G root:Packages:NIST:VSANS:Globals:gIgnoreDetB = 0 |
---|
96 | |
---|
97 | |
---|
98 | // flag to allow adding raw data files with different attenuation (normally not done) |
---|
99 | // val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten",0) |
---|
100 | // Variable/G root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten=val |
---|
101 | |
---|
102 | |
---|
103 | // VSANS ANALYSIS tab |
---|
104 | /// items for VSANS Analysis |
---|
105 | |
---|
106 | |
---|
107 | end |
---|
108 | |
---|
109 | Function V_LogScalePrefCheck(ctrlName,checked) : CheckBoxControl |
---|
110 | String ctrlName |
---|
111 | Variable checked |
---|
112 | |
---|
113 | NVAR gLog = root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault |
---|
114 | glog=checked |
---|
115 | //print "log pref checked = ",checked |
---|
116 | End |
---|
117 | |
---|
118 | //Function DRKProtocolPref(ctrlName,checked) : CheckBoxControl |
---|
119 | // String ctrlName |
---|
120 | // Variable checked |
---|
121 | // |
---|
122 | // NVAR gDRK = root:Packages:NIST:VSANS:Globals:gAllowDRK |
---|
123 | // gDRK = checked |
---|
124 | // //Print "DRK preference = ",checked |
---|
125 | //End |
---|
126 | |
---|
127 | Function V_UnityTransPref(ctrlName,checked) : CheckBoxControl |
---|
128 | String ctrlName |
---|
129 | Variable checked |
---|
130 | |
---|
131 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransCheck |
---|
132 | gVal = checked |
---|
133 | End |
---|
134 | |
---|
135 | Function V_XMLWritePref(ctrlName,checked) : CheckBoxControl |
---|
136 | String ctrlName |
---|
137 | Variable checked |
---|
138 | |
---|
139 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gXML_Write |
---|
140 | gVal = checked |
---|
141 | End |
---|
142 | |
---|
143 | Function V_DoTransCorrPref(ctrlName,checked) : CheckBoxControl |
---|
144 | String ctrlName |
---|
145 | Variable checked |
---|
146 | |
---|
147 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransmissionCor |
---|
148 | gVal = checked |
---|
149 | End |
---|
150 | |
---|
151 | Function V_DoEfficiencyCorrPref(ctrlName,checked) : CheckBoxControl |
---|
152 | String ctrlName |
---|
153 | Variable checked |
---|
154 | |
---|
155 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor |
---|
156 | gVal = checked |
---|
157 | End |
---|
158 | |
---|
159 | Function V_DoRawAttenAdjPref(ctrlName,checked) : CheckBoxControl |
---|
160 | String ctrlName |
---|
161 | Variable checked |
---|
162 | |
---|
163 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten |
---|
164 | gVal = checked |
---|
165 | End |
---|
166 | |
---|
167 | Function V_DoDIVCorPref(ctrlName,checked) : CheckBoxControl |
---|
168 | String ctrlName |
---|
169 | Variable checked |
---|
170 | |
---|
171 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDIVCor |
---|
172 | gVal = checked |
---|
173 | End |
---|
174 | |
---|
175 | Function V_DoDeadTimeCorPref(ctrlName,checked) : CheckBoxControl |
---|
176 | String ctrlName |
---|
177 | Variable checked |
---|
178 | |
---|
179 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor |
---|
180 | gVal = checked |
---|
181 | End |
---|
182 | |
---|
183 | Function V_DoSolidAngleCorPref(ctrlName,checked) : CheckBoxControl |
---|
184 | String ctrlName |
---|
185 | Variable checked |
---|
186 | |
---|
187 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor |
---|
188 | gVal = checked |
---|
189 | End |
---|
190 | |
---|
191 | Function V_DoNonLinearCorPref(ctrlName,checked) : CheckBoxControl |
---|
192 | String ctrlName |
---|
193 | Variable checked |
---|
194 | |
---|
195 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoNonLinearCor |
---|
196 | gVal = checked |
---|
197 | End |
---|
198 | |
---|
199 | Function V_DoTubeShadowCorPref(ctrlName,checked) : CheckBoxControl |
---|
200 | String ctrlName |
---|
201 | Variable checked |
---|
202 | |
---|
203 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor |
---|
204 | gVal = checked |
---|
205 | End |
---|
206 | |
---|
207 | Function V_DoMonitorNormPref(ctrlName,checked) : CheckBoxControl |
---|
208 | String ctrlName |
---|
209 | Variable checked |
---|
210 | |
---|
211 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization |
---|
212 | gVal = checked |
---|
213 | End |
---|
214 | |
---|
215 | Function V_IgnoreDetBPref(ctrlName,checked) : CheckBoxControl |
---|
216 | String ctrlName |
---|
217 | Variable checked |
---|
218 | |
---|
219 | NVAR gVal = root:Packages:NIST:VSANS:Globals:gIgnoreDetB |
---|
220 | gVal = checked |
---|
221 | End |
---|
222 | |
---|
223 | Function V_PrefDoneButtonProc(ctrlName) : ButtonControl |
---|
224 | String ctrlName |
---|
225 | |
---|
226 | DoWindow/K VSANSPref_Panel |
---|
227 | End |
---|
228 | |
---|
229 | |
---|
230 | Proc VSANSPref_Panel() |
---|
231 | PauseUpdate; Silent 1 // building window... |
---|
232 | NewPanel /W=(646,208,1070,468)/K=2 as "VSANS Preference Panel" |
---|
233 | DoWindow/C VSANSPref_Panel |
---|
234 | ModifyPanel cbRGB=(47748,57192,54093) |
---|
235 | SetDrawLayer UserBack |
---|
236 | ModifyPanel fixedSize=1 |
---|
237 | ////// |
---|
238 | //on main portion of panel, always visible |
---|
239 | Button PrefPanelButtonA,pos={354,12},size={50,20},proc=V_PrefDoneButtonProc,title="Done" |
---|
240 | |
---|
241 | TabControl PrefTab,pos={7,49},size={410,202},tabLabel(0)="General",proc=V_PrefTabProc |
---|
242 | TabControl PrefTab,tabLabel(1)="VSANS",tabLabel(2)="Analysis" |
---|
243 | TabControl PrefTab,value=1 |
---|
244 | TabControl PrefTab labelBack=(47748,57192,54093) |
---|
245 | |
---|
246 | //on tab(0) - General |
---|
247 | CheckBox PrefCtrl_0a,pos={21,96},size={124,14},proc=V_XMLWritePref,title="Use canSAS XML Output" |
---|
248 | CheckBox PrefCtrl_0a,help={"Checking this will set the default output format to be canSAS XML rather than NIST 6 column"} |
---|
249 | CheckBox PrefCtrl_0a,value= root:Packages:NIST:VSANS:Globals:gXML_Write |
---|
250 | |
---|
251 | CheckBox PrefCtrl_0a,disable=1 |
---|
252 | |
---|
253 | |
---|
254 | //on tab(1) - VSANS - initially visible |
---|
255 | CheckBox PrefCtrl_1a,pos={21,100},size={171,14},proc=V_LogScalePrefCheck,title="Use Log scaling for 2D data display" |
---|
256 | CheckBox PrefCtrl_1a,help={"Checking this will display 2D VSANS data with a logarithmic color scale of neutron counts. If not checked, the color mapping will be linear."} |
---|
257 | CheckBox PrefCtrl_1a,value= root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault |
---|
258 | // CheckBox PrefCtrl_1b,pos={21,120},size={163,14},proc=V_DRKProtocolPref,title="Allow DRK correction in protocols" |
---|
259 | // CheckBox PrefCtrl_1b,help={"Checking this will allow DRK correction to be used in reduction protocols. You will need to re-draw the protocol panel for this change to be visible."} |
---|
260 | // CheckBox PrefCtrl_1b,value= root:Packages:NIST:VSANS:Globals:gAllowDRK |
---|
261 | CheckBox PrefCtrl_1c,pos={21,140},size={137,14},proc=V_UnityTransPref,title="Check for Transmission = 1" |
---|
262 | CheckBox PrefCtrl_1c,help={"Checking this will check for SAM or EMP Trans = 1 during data correction"} |
---|
263 | CheckBox PrefCtrl_1c,value= root:Packages:NIST:VSANS:Globals:gDoTransCheck |
---|
264 | SetVariable PrefCtrl_1d,pos={21,170},size={200,15},title="Averaging Bin Width (pixels)" |
---|
265 | SetVariable PrefCtrl_1d,limits={1,100,1},value= root:Packages:NIST:VSANS:Globals:gBinWidth |
---|
266 | SetVariable PrefCtrl_1e,pos={21,195},size={200,15},title="# Phi Steps (annular avg)" |
---|
267 | SetVariable PrefCtrl_1e,limits={1,360,1},value= root:Packages:NIST:VSANS:Globals:gNPhiSteps |
---|
268 | |
---|
269 | CheckBox PrefCtrl_1f title="Do Transmssion Correction?",size={140,14},value=root:Packages:NIST:VSANS:Globals:gDoTransmissionCor,proc=V_DoTransCorrPref |
---|
270 | CheckBox PrefCtrl_1f pos={255,80},help={"TURN OFF ONLY FOR DEBUGGING. This corrects the data for angle dependent transmssion."} |
---|
271 | CheckBox PrefCtrl_1g title="Do Efficiency Correction?",size={140,14},proc=V_DoEfficiencyCorrPref |
---|
272 | CheckBox PrefCtrl_1g value=root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor,pos={255,100},help={"TURN OFF ONLY FOR DEBUGGING. This corrects the data for angle dependent detector efficiency."} |
---|
273 | // CheckBox PrefCtrl_1h title="Adjust RAW attenuation?",size={140,14},proc=V_DoRawAttenAdjPref |
---|
274 | // CheckBox PrefCtrl_1h value=root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten,pos={255,140},help={"This is normally not done"} |
---|
275 | |
---|
276 | CheckBox PrefCtrl_1i title="Do DIV Correction?",size={140,14},proc=V_DoDIVCorPref |
---|
277 | CheckBox PrefCtrl_1i value=root:Packages:NIST:VSANS:Globals:gDoDIVCor,pos={255,120},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
278 | CheckBox PrefCtrl_1j title="Do DeadTime Correction?",size={140,14},proc=V_DoDeadTimeCorPref |
---|
279 | CheckBox PrefCtrl_1j value=root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor,pos={255,140},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
280 | CheckBox PrefCtrl_1k title="Do Solid Angle Correction?",size={140,14},proc=V_DoSolidAngleCorPref |
---|
281 | CheckBox PrefCtrl_1k value=root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor,pos={255,160},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
282 | CheckBox PrefCtrl_1l title="Do Non-linear Correction?",size={140,14},proc=V_DoNonLinearCorPref |
---|
283 | CheckBox PrefCtrl_1l value=root:Packages:NIST:VSANS:Globals:gDoNonLinearCor,pos={255,180},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
284 | CheckBox PrefCtrl_1m title="Do Tube Shadow Correction?",size={140,14},proc=V_DoTubeShadowCorPref |
---|
285 | CheckBox PrefCtrl_1m value=root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor,pos={255,200},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
286 | // CheckBox PrefCtrl_1n title="Do Tube Shadow Correction?",size={140,14},proc=V_DoMonitorNormPref |
---|
287 | // CheckBox PrefCtrl_1n value=root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization,pos={255,220},help={"TURN OFF ONLY FOR DEBUGGING."} |
---|
288 | CheckBox PrefCtrl_1m title="Ignore Back Detector?",size={140,14},proc=V_IgnoreDetBPref |
---|
289 | CheckBox PrefCtrl_1m value=root:Packages:NIST:VSANS:Globals:gIgnoreDetB,pos={150,220},help={"Will prevent data from Back detector being written to data files."} |
---|
290 | |
---|
291 | // CheckBox PrefCtrl_1a,disable=1 |
---|
292 | // CheckBox PrefCtrl_1b,disable=1 |
---|
293 | // CheckBox PrefCtrl_1c,disable=1 |
---|
294 | // SetVariable PrefCtrl_1d,disable=1 |
---|
295 | // SetVariable PrefCtrl_1e,disable=1 |
---|
296 | // CheckBox PrefCtrl_1f,disable=1 |
---|
297 | // CheckBox PrefCtrl_1g,disable=1 |
---|
298 | // CheckBox PrefCtrl_1h,disable=1 |
---|
299 | |
---|
300 | //on tab(2) - Analysis |
---|
301 | GroupBox PrefCtrl_2a pos={21,100},size={1,1},title="nothing to set",fSize=12 |
---|
302 | |
---|
303 | GroupBox PrefCtrl_2a,disable=1 |
---|
304 | |
---|
305 | End |
---|
306 | |
---|
307 | // function to control the drawing of controls in the TabControl on the main panel |
---|
308 | // Naming scheme for the controls MUST be strictly adhered to... else controls will |
---|
309 | // appear in odd places... |
---|
310 | // all controls are named PrefCtrl_NA where N is the tab number and A is the letter denoting |
---|
311 | // the controls position on that particular tab. |
---|
312 | // in this way, they will always be drawn correctly.. |
---|
313 | // |
---|
314 | Function V_PrefTabProc(name,tab) |
---|
315 | String name |
---|
316 | Variable tab |
---|
317 | |
---|
318 | // Print "name,number",name,tab |
---|
319 | String ctrlList = ControlNameList("",";"),item="",nameStr="" |
---|
320 | Variable num = ItemsinList(ctrlList,";"),ii,onTab |
---|
321 | for(ii=0;ii<num;ii+=1) |
---|
322 | //items all start w/"PrefCtrl_", 9 characters |
---|
323 | item=StringFromList(ii, ctrlList ,";") |
---|
324 | nameStr=item[0,8] |
---|
325 | if(cmpstr(nameStr,"PrefCtrl_")==0) |
---|
326 | onTab = str2num(item[9]) //[9] is a number |
---|
327 | ControlInfo $item |
---|
328 | switch(abs(V_flag)) |
---|
329 | case 1: |
---|
330 | Button $item,disable=(tab!=onTab) |
---|
331 | break |
---|
332 | case 2: |
---|
333 | CheckBox $item,disable=(tab!=onTab) |
---|
334 | break |
---|
335 | case 5: |
---|
336 | SetVariable $item,disable=(tab!=onTab) |
---|
337 | break |
---|
338 | case 10: |
---|
339 | TitleBox $item,disable=(tab!=onTab) |
---|
340 | break |
---|
341 | case 4: |
---|
342 | ValDisplay $item,disable=(tab!=onTab) |
---|
343 | break |
---|
344 | case 9: |
---|
345 | GroupBox $item,disable=(tab!=onTab) |
---|
346 | break |
---|
347 | // add more items to the switch if different control types are used |
---|
348 | endswitch |
---|
349 | endif |
---|
350 | endfor |
---|
351 | return(0) |
---|
352 | End |
---|