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

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

Many changes:

Made the VCALC panel aware of all of the binning options
Corrected the behavior of the VCALC preset conditions
Adjusted how the Slit data is binned so that there are not duplicated q-values in the output

Made Absolute scaling aware of the back detector. Now the ABS String in the protocol has a second
set of scaling constants tagged with "_B" for the back detector. There is an added button
on the protocol panel to set the second set of constants. For the back detector, the read noise
is subtracted by reading it from the empty beam file (shifting over to the right by one box width)
All of the associated abs procedures are now aware of this.
More error checking needs to be added.

Back detector image is now shifted upon loading of the data. the default mask takes this into account
and masks out the padded (zero) regions.

in the protocol, DIV and MSK do not use grep any longer. it was just way too slow. Now it depends on

the file name having DIV or MASK respectively.



Raw data files can now be added together, in the usual way from the protocol panel.



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