source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_VSANS_Preferences.ipf @ 1051

Last change on this file since 1051 was 1051, checked in by srkline, 5 years ago

a lot of little changes:

changed the name of the Raw Data display procedure file (removed test)

lots of bug fixes, moving items from the macros menu to proper locations, getting the file status to display properly, some error checking, and cleaning up a few TODO items.

File size: 13.2 KB
Line 
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///////////////////////////
21Proc 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"
32End
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
40Proc 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", 72 )
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       
107end
108
109Function 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
116End
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
127Function V_UnityTransPref(ctrlName,checked) : CheckBoxControl
128        String ctrlName
129        Variable checked
130       
131        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransCheck
132        gVal = checked
133End
134
135Function 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
141End
142
143Function V_DoTransCorrPref(ctrlName,checked) : CheckBoxControl
144        String ctrlName
145        Variable checked
146       
147        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransmissionCor
148        gVal = checked
149End
150
151Function V_DoEfficiencyCorrPref(ctrlName,checked) : CheckBoxControl
152        String ctrlName
153        Variable checked
154       
155        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor
156        gVal = checked
157End
158
159Function 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
165End
166
167Function V_DoDIVCorPref(ctrlName,checked) : CheckBoxControl
168        String ctrlName
169        Variable checked
170       
171        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDIVCor
172        gVal = checked
173End
174
175Function V_DoDeadTimeCorPref(ctrlName,checked) : CheckBoxControl
176        String ctrlName
177        Variable checked
178       
179        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor
180        gVal = checked
181End
182
183Function V_DoSolidAngleCorPref(ctrlName,checked) : CheckBoxControl
184        String ctrlName
185        Variable checked
186       
187        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor
188        gVal = checked
189End
190
191Function V_DoNonLinearCorPref(ctrlName,checked) : CheckBoxControl
192        String ctrlName
193        Variable checked
194       
195        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoNonLinearCor
196        gVal = checked
197End
198
199Function V_DoTubeShadowCorPref(ctrlName,checked) : CheckBoxControl
200        String ctrlName
201        Variable checked
202       
203        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor
204        gVal = checked
205End
206
207Function V_DoMonitorNormPref(ctrlName,checked) : CheckBoxControl
208        String ctrlName
209        Variable checked
210       
211        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization
212        gVal = checked
213End
214
215Function V_IgnoreDetBPref(ctrlName,checked) : CheckBoxControl
216        String ctrlName
217        Variable checked
218       
219        NVAR gVal = root:Packages:NIST:VSANS:Globals:gIgnoreDetB
220        gVal = checked
221End
222
223Function V_PrefDoneButtonProc(ctrlName) : ButtonControl
224        String ctrlName
225       
226        DoWindow/K VSANSPref_Panel
227End
228
229
230Proc 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
305End
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//
314Function 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)
352End
Note: See TracBrowser for help on using the repository browser.