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

Last change on this file since 1130 was 1117, checked in by srkline, 4 years ago

extensive changes to accomodate 1x1 binning of the HighRes? detector. It is implemented as a global flag. Currently only 4x4 and 1x1 are allowed. 1x1 has never been tested in reality, only simulated data - so my assumed dimensions may not be correct. look for TODOHIGHRES in the file for places that may need to be updated for different file dimensions. Testing of the simulated data is proving to be excruciatingly slow, but passable for a test. Speed optimization will be needed if this is the final solution. Memory management will also be an issue since every "copy" of the highRes matrix is enormous. Carry as few of these around as possible in the future to keep the experiment size to something reasonable.

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