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

Last change on this file since 1236 was 1236, checked in by srkline, 3 years ago

additions to the reduction for new corrections to the tube detectors for the angle dependent efficiency and the angle dependent tube shadowing. Calculations have been added, new folder for the efficiency has been added, and preference checkboxes have been updated.

File size: 14.3 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", 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        val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoDownstreamWindowCorPref", 1 )
93        Variable/G root:Packages:NIST:VSANS:Globals:gDoDownstreamWindowCorPref = 0
94       
95
96        // Special global to prevent fake data from "B" detector from being written out
97        val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gIgnoreDetB", 1 )
98        Variable/G root:Packages:NIST:VSANS:Globals:gIgnoreDetB = 1
99
100// TODOHIGHRES
101// OCT 2018
102// new global to flag the highRes detector binning to accomodate the change in binning
103//  that was set 10/16/18 (changed from 4x4 bin to 1x1= no binning)
104// set this flag == 1 for 1x1
105// set flag 4 == 4x4
106        Variable/G root:Packages:NIST:VSANS:Globals:gHighResBinning = 4
107                       
108        DoAlert 1,"Are you using the back detector? (This can be changed later in the Preferences Panel)"
109        if(V_flag == 1)
110                // yes
111                Variable/G root:Packages:NIST:VSANS:Globals:gIgnoreDetB = 0
112//              DoAlert 1,"Are you using 1x1 binning?"
113//              if(V_flag == 1)
114//                      // yes
115//                      Variable/G root:Packages:NIST:VSANS:Globals:gHighResBinning = 1
116//              endif
117        endif
118       
119// flag to allow adding raw data files with different attenuation (normally not done)   
120//      val = NumVarOrDefault("root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten",0)
121//      Variable/G root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten=val
122       
123       
124        // VSANS ANALYSIS tab
125        /// items for VSANS Analysis
126       
127       
128end
129
130Function V_LogScalePrefCheck(ctrlName,checked) : CheckBoxControl
131        String ctrlName
132        Variable checked
133       
134        NVAR gLog = root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault
135        glog=checked
136        //print "log pref checked = ",checked
137End
138
139//Function DRKProtocolPref(ctrlName,checked) : CheckBoxControl
140//      String ctrlName
141//      Variable checked
142//     
143//      NVAR gDRK = root:Packages:NIST:VSANS:Globals:gAllowDRK
144//      gDRK = checked
145//      //Print "DRK preference = ",checked
146//End
147
148Function V_UnityTransPref(ctrlName,checked) : CheckBoxControl
149        String ctrlName
150        Variable checked
151       
152        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransCheck
153        gVal = checked
154End
155
156Function V_XMLWritePref(ctrlName,checked) : CheckBoxControl
157        String ctrlName
158        Variable checked
159       
160        NVAR gVal = root:Packages:NIST:VSANS:Globals:gXML_Write
161        gVal = checked
162End
163
164Function V_DoTransCorrPref(ctrlName,checked) : CheckBoxControl
165        String ctrlName
166        Variable checked
167       
168        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTransmissionCor
169        gVal = checked
170End
171
172Function V_DoEfficiencyCorrPref(ctrlName,checked) : CheckBoxControl
173        String ctrlName
174        Variable checked
175       
176        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDetectorEffCor
177        gVal = checked
178End
179
180Function V_DoRawAttenAdjPref(ctrlName,checked) : CheckBoxControl
181        String ctrlName
182        Variable checked
183       
184        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten
185        gVal = checked
186End
187
188Function V_DoDIVCorPref(ctrlName,checked) : CheckBoxControl
189        String ctrlName
190        Variable checked
191       
192        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDIVCor
193        gVal = checked
194End
195
196Function V_DoDeadTimeCorPref(ctrlName,checked) : CheckBoxControl
197        String ctrlName
198        Variable checked
199       
200        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor
201        gVal = checked
202End
203
204Function V_DoSolidAngleCorPref(ctrlName,checked) : CheckBoxControl
205        String ctrlName
206        Variable checked
207       
208        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor
209        gVal = checked
210End
211
212Function V_DoNonLinearCorPref(ctrlName,checked) : CheckBoxControl
213        String ctrlName
214        Variable checked
215       
216        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoNonLinearCor
217        gVal = checked
218End
219
220Function V_DoTubeShadowCorPref(ctrlName,checked) : CheckBoxControl
221        String ctrlName
222        Variable checked
223       
224        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor
225        gVal = checked
226End
227
228Function V_DoMonitorNormPref(ctrlName,checked) : CheckBoxControl
229        String ctrlName
230        Variable checked
231       
232        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization
233        gVal = checked
234End
235
236Function V_DoDownstreamWindowCorPref(ctrlName,checked) : CheckBoxControl
237        String ctrlName
238        Variable checked
239       
240        NVAR gVal = root:Packages:NIST:VSANS:Globals:gDoDownstreamWindowCorPref
241        gVal = checked
242End
243
244
245Function V_IgnoreDetBPref(ctrlName,checked) : CheckBoxControl
246        String ctrlName
247        Variable checked
248       
249        NVAR gVal = root:Packages:NIST:VSANS:Globals:gIgnoreDetB
250        gVal = checked
251End
252
253Function V_PrefDoneButtonProc(ctrlName) : ButtonControl
254        String ctrlName
255       
256        DoWindow/K VSANSPref_Panel
257End
258
259
260Proc VSANSPref_Panel()
261        PauseUpdate; Silent 1           // building window...
262        NewPanel /W=(646,208,1070,468)/K=2 as "VSANS Preference Panel"
263        DoWindow/C VSANSPref_Panel
264        ModifyPanel cbRGB=(47748,57192,54093)
265        SetDrawLayer UserBack
266        ModifyPanel fixedSize=1
267//////
268//on main portion of panel, always visible
269        Button PrefPanelButtonA,pos={354,12},size={50,20},proc=V_PrefDoneButtonProc,title="Done"
270
271        TabControl PrefTab,pos={7,49},size={410,202},tabLabel(0)="General",proc=V_PrefTabProc
272        TabControl PrefTab,tabLabel(1)="VSANS",tabLabel(2)="Analysis"
273        TabControl PrefTab,value=1
274        TabControl PrefTab labelBack=(47748,57192,54093)
275       
276//on tab(0) - General
277        CheckBox PrefCtrl_0a,pos={21,96},size={124,14},proc=V_XMLWritePref,title="Use canSAS XML Output"
278        CheckBox PrefCtrl_0a,help={"Checking this will set the default output format to be canSAS XML rather than NIST 6 column"}
279        CheckBox PrefCtrl_0a,value= root:Packages:NIST:VSANS:Globals:gXML_Write
280
281        CheckBox PrefCtrl_0a,disable=1
282
283
284//on tab(1) - VSANS - initially visible
285        CheckBox PrefCtrl_1a,pos={21,100},size={171,14},proc=V_LogScalePrefCheck,title="Use Log scaling for 2D data display"
286        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."}
287        CheckBox PrefCtrl_1a,value= root:Packages:NIST:VSANS:Globals:gLogScalingAsDefault
288//      CheckBox PrefCtrl_1b,pos={21,120},size={163,14},proc=V_DRKProtocolPref,title="Allow DRK correction in protocols"
289//      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."}
290//      CheckBox PrefCtrl_1b,value= root:Packages:NIST:VSANS:Globals:gAllowDRK
291        CheckBox PrefCtrl_1c,pos={21,140},size={137,14},proc=V_UnityTransPref,title="Check for Transmission = 1"
292        CheckBox PrefCtrl_1c,help={"Checking this will check for SAM or EMP Trans = 1 during data correction"}
293        CheckBox PrefCtrl_1c,value= root:Packages:NIST:VSANS:Globals:gDoTransCheck
294        SetVariable PrefCtrl_1d,pos={21,170},size={200,15},title="Averaging Bin Width (pixels)"
295        SetVariable PrefCtrl_1d,limits={1,100,1},value= root:Packages:NIST:VSANS:Globals:gBinWidth
296        SetVariable PrefCtrl_1e,pos={21,195},size={200,15},title="# Phi Steps (annular avg)"
297        SetVariable PrefCtrl_1e,limits={1,360,1},value= root:Packages:NIST:VSANS:Globals:gNPhiSteps
298       
299        CheckBox PrefCtrl_1f title="Do Transmssion Correction?",size={140,14},value=root:Packages:NIST:VSANS:Globals:gDoTransmissionCor,proc=V_DoTransCorrPref
300        CheckBox PrefCtrl_1f pos={255,80},help={"TURN OFF ONLY FOR DEBUGGING. This corrects the data for angle dependent transmssion."}
301        CheckBox PrefCtrl_1g title="Do Tube Efficiency+Shadowing?",size={140,14},proc=V_DoEfficiencyCorrPref
302        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."}
303//      CheckBox PrefCtrl_1h title="Adjust RAW attenuation?",size={140,14},proc=V_DoRawAttenAdjPref
304//      CheckBox PrefCtrl_1h value=root:Packages:NIST:VSANS:Globals:gDoAdjustRAW_Atten,pos={255,140},help={"This is normally not done"}
305
306        CheckBox PrefCtrl_1i title="Do DIV Correction?",size={140,14},proc=V_DoDIVCorPref
307        CheckBox PrefCtrl_1i value=root:Packages:NIST:VSANS:Globals:gDoDIVCor,pos={255,120},help={"TURN OFF ONLY FOR DEBUGGING."}
308        CheckBox PrefCtrl_1j title="Do DeadTime Correction?",size={140,14},proc=V_DoDeadTimeCorPref
309        CheckBox PrefCtrl_1j value=root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor,pos={255,140},help={"TURN OFF ONLY FOR DEBUGGING."} 
310        CheckBox PrefCtrl_1k title="Do Solid Angle Correction?",size={140,14},proc=V_DoSolidAngleCorPref
311        CheckBox PrefCtrl_1k value=root:Packages:NIST:VSANS:Globals:gDoSolidAngleCor,pos={255,160},help={"TURN OFF ONLY FOR DEBUGGING."}
312        CheckBox PrefCtrl_1l title="Do Non-linear Correction?",size={140,14},proc=V_DoNonLinearCorPref,disable=2
313        CheckBox PrefCtrl_1l value=root:Packages:NIST:VSANS:Globals:gDoNonLinearCor,pos={255,180},help={"Non-linear correction can't be turned off"}
314        CheckBox PrefCtrl_1m title="Do Downstream Window Corr?",size={140,14},proc=V_DoDownstreamWindowCorPref
315        CheckBox PrefCtrl_1m value=root:Packages:NIST:VSANS:Globals:gDoTubeShadowCor,pos={255,200},help={"TURN OFF ONLY FOR DEBUGGING."}
316//      CheckBox PrefCtrl_1n title="Do Monitor Normalization?",size={140,14},proc=V_DoMonitorNormPref
317//      CheckBox PrefCtrl_1n value=root:Packages:NIST:VSANS:Globals:gDoMonitorNormalization,pos={255,220},help={"TURN OFF ONLY FOR DEBUGGING."}
318        CheckBox PrefCtrl_1o title="Ignore Back Detector?",size={140,14},proc=V_IgnoreDetBPref
319        CheckBox PrefCtrl_1o value=root:Packages:NIST:VSANS:Globals:gIgnoreDetB,pos={150,220},help={"Will prevent data from Back detector being written to data files."}               
320       
321//      CheckBox PrefCtrl_1a,disable=1
322//      CheckBox PrefCtrl_1b,disable=1
323//      CheckBox PrefCtrl_1c,disable=1
324//      SetVariable PrefCtrl_1d,disable=1
325//      SetVariable PrefCtrl_1e,disable=1
326//      CheckBox PrefCtrl_1f,disable=1
327//      CheckBox PrefCtrl_1g,disable=1
328//      CheckBox PrefCtrl_1h,disable=1
329//      CheckBox PrefCtrl_1g,value=0,disable=2          // angle dependent efficiency not done yet
330        CheckBox PrefCtrl_1m,value=0,disable=2          // downstream window transmission no done yet
331
332//on tab(2) - Analysis
333        GroupBox PrefCtrl_2a pos={21,100},size={1,1},title="nothing to set",fSize=12
334       
335        GroupBox PrefCtrl_2a,disable=1
336
337End
338
339// function to control the drawing of controls in the TabControl on the main panel
340// Naming scheme for the controls MUST be strictly adhered to... else controls will
341// appear in odd places...
342// all controls are named PrefCtrl_NA where N is the tab number and A is the letter denoting
343// the controls position on that particular tab.
344// in this way, they will always be drawn correctly..
345//
346Function V_PrefTabProc(name,tab)
347        String name
348        Variable tab
349       
350//      Print "name,number",name,tab
351        String ctrlList = ControlNameList("",";"),item="",nameStr=""
352        Variable num = ItemsinList(ctrlList,";"),ii,onTab
353        for(ii=0;ii<num;ii+=1)
354                //items all start w/"PrefCtrl_", 9 characters
355                item=StringFromList(ii, ctrlList ,";")
356                nameStr=item[0,8]
357                if(cmpstr(nameStr,"PrefCtrl_")==0)
358                        onTab = str2num(item[9])                        //[9] is a number
359                        ControlInfo $item
360                        switch(abs(V_flag))     
361                                case 1:
362                                        Button $item,disable=(tab!=onTab)
363                                        break
364                                case 2:
365                                        CheckBox $item,disable=(tab!=onTab)
366                                        break
367                                case 5:
368                                        SetVariable $item,disable=(tab!=onTab)
369                                        break
370                                case 10:       
371                                        TitleBox $item,disable=(tab!=onTab)
372                                        break
373                                case 4:
374                                        ValDisplay $item,disable=(tab!=onTab)
375                                        break
376                                case 9:
377                                        GroupBox $item,disable=(tab!=onTab)
378                                        break
379                                // add more items to the switch if different control types are used
380                        endswitch
381                endif
382        endfor
383        return(0)
384End
Note: See TracBrowser for help on using the repository browser.