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

Last change on this file since 1022 was 1022, checked in by srkline, 6 years ago

ADDED:

included common NCNR procedures for the PlotManager?, to allow plotting of 1D data sets using a familiar interface

greatly expanded Patch functionality to include input in the multiple sections of the Nexus file, including separate panels to handle patching of waves to the file - needed for non-linear coefficients, dead time, and XY beam centers. All patch operations are expandable as more fields become necessary to patch.

removed bug of group_id being defined in /reduction and in /sample (removed R/W that referenced /reduction)

added panel to "isolate" a single detector panel, allowing the corrections to be applied/removed/recalculated as needed to directly see their effects.

linked new procedures to their appropriate action buttons

Added more data fields (label, intent, etc.) to the VCALC to Nexus data writer to get more realistic values into the fake data files for testing

Added VCALC simulation functions with EMP and BGD in anticipation of testing the CORRECT step

more little bug and documentation fixes which I can't remember, but they are all important...

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