source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_DataPlotting.ipf @ 992

Last change on this file since 992 was 992, checked in by srkline, 7 years ago

removed the doubled "entry" field from the VSANS file load.

appears now to work fine with R/W routines and with VCALC.

File size: 13.0 KB
Line 
1#pragma TextEncoding = "MacRoman"               // For details execute DisplayHelpTopic "The TextEncoding Pragma"
2#pragma rtGlobals=3             // Use modern global access method and strict wave access.
3#pragma version=1.0
4
5
6//
7// functions to plot the averaged data in various views.
8//
9
10
11
12//
13// simple entry procedure
14//
15Function V_PlotData_Panel()
16        DoWindow V_1D_Data
17        if(V_flag==0)
18                Execute "V_DrawPlotPanel()"
19        else
20                SVAR type = root:Packages:NIST:VSANS:Globals:gCurDispType
21
22                V_QBinAllPanels(type)
23
24        // TODO:
25        // x- "B" detector is currently skipped - Q is not yet calculated
26                Execute ("V_Back_IQ_Graph(\""+type+"\")")
27                Execute ("V_Middle_IQ_Graph(\""+type+"\")")
28                Execute ("V_Front_IQ_Graph(\""+type+"\")")
29        endif
30End
31
32
33// graph with the 1D representation of the VSANS detectors
34//
35// TODO:
36// -- add multiple options for how to present/rescale the data
37// -- automatically position the window next to the 2D data
38// -- color coding of the different panels (data tags/arrows/toggle on/off)?
39// -- VERIFY accuracy
40// -- decide what to add to the control bar
41//
42// -- see Middle_IQ_Graph() and similar for how VCALC does this plot
43//
44Proc V_DrawPlotPanel()
45       
46        String type = root:Packages:NIST:VSANS:Globals:gCurDispType
47
48        PauseUpdate; Silent 1           // building window...
49        Display /W=(277,526,748,938)/N=V_1D_Data
50
51        V_QBinAllPanels(type)
52
53// TODO
54// x- "B" detector is currently skipped - Q is not yet calculated
55        V_Back_IQ_Graph(type)
56        V_Middle_IQ_Graph(type)
57        V_Front_IQ_Graph(type)
58       
59End
60
61
62
63//
64// see the VCALC BinAllMiddlePanels() for an example of this
65//
66// TODO
67// x- detector "B" is currently skipped since the calibration waves are not faked
68//    when the raw data is loaded. Then the qxqyqz waves are not generated.
69//
70// -- REDO the logic here. It's a mess, and will get the calculation wrong
71//
72// -- figure out the binning type (where is it set?)
73// -- binning type is HARD-WIRED
74// -- figure out when this is to be called to re-calculate the I vs Q
75//
76Function V_QBinAllPanels(folderStr)
77        String folderStr
78
79        // do the back, middle, and front separately
80       
81//      figure out the binning type (where is it set?)
82        Variable binType,ii,delQ
83        String detStr
84        binType = 1
85       
86       
87
88//// TODO:
89// x- currently the "B" detector is skipped - it was skipped in
90//       previous functions where q values are calculated       
91//     
92        delQ = SetDeltaQ(folderStr,"B")
93       
94        // dispatch based on binning type
95        if(binType == 1)
96                VC_fDoBinning_QxQy2D(folderStr, "B")            //normal binning, nothing to combine
97        endif
98
99// TODO -- this is only a temporary fix for slit mode   
100        if(binType == 4)
101                /// this is for a tall, narrow slit mode       
102                VC_fBinDetector_byRows(folderStr,"B")
103        endif   
104
105// these are the binning types where detectors are not combined
106// other combined binning is below the loop
107        for(ii=0;ii<ItemsInList(ksDetectorListNoB);ii+=1)
108                detStr = StringFromList(ii, ksDetectorListNoB, ";")
109               
110                // set delta Q for binning
111                delQ = SetDeltaQ(folderStr,detStr)
112               
113                // dispatch based on binning type
114                if(binType==1)
115                        VC_fDoBinning_QxQy2D(folderStr,detStr)
116                endif
117               
118                // TODO -- this is only a temporary fix for slit mode   
119                if(binType == 4)
120                        /// this is for a tall, narrow slit mode       
121                        VC_fBinDetector_byRows(folderStr,detStr)
122                endif   
123               
124        endfor
125       
126        // bin in pairs
127        if(binType == 2)
128                VC_fDoBinning_QxQy2D(folderStr,"MLR")
129                VC_fDoBinning_QxQy2D(folderStr,"MTB")
130                VC_fDoBinning_QxQy2D(folderStr,"FLR")
131                VC_fDoBinning_QxQy2D(folderStr,"FTB")   
132        endif
133       
134        // bin everything on front or middle together
135        if(binType == 3)
136                VC_fDoBinning_QxQy2D(folderStr,"MLRTB")
137                VC_fDoBinning_QxQy2D(folderStr,"FLRTB")
138        endif
139
140        return(0)
141End
142
143
144//
145// duplicated from Middle_IQ_Graph from VCALC
146// but plotted in a standalone graph window and not the VCALC subwindow
147//
148// V_1D_Data
149//
150// TODO
151// -- need to set binType
152// -- currently  hard-wired == 1
153//
154//
155Proc V_Middle_IQ_Graph(type)
156        String type
157
158        Variable binType
159       
160//      ControlInfo/W=VCALC popup_b
161//      binType = V_Value               // V_value counts menu items from 1, so 1=1, 2=2, 3=4
162
163        binType = 1
164        SetDataFolder $("root:Packages:NIST:VSANS:"+type)
165
166        if(binType==1)
167                ClearIQIfDisplayed(type,"MLRTB")
168                ClearIQIfDisplayed(type,"MLR")
169                ClearIQIfDisplayed(type,"MTB")          //this returns to root:
170               
171                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
172                CheckDisplayed/W=V_1D_Data iBin_qxqy_ML
173               
174                if(V_flag==0)
175                        AppendtoGraph/W=V_1D_Data iBin_qxqy_ML vs qBin_qxqy_ML
176                        AppendToGraph/W=V_1D_Data iBin_qxqy_MR vs qBin_qxqy_MR
177                        AppendToGraph/W=V_1D_Data iBin_qxqy_MT vs qBin_qxqy_MT
178                        AppendToGraph/W=V_1D_Data iBin_qxqy_MB vs qBin_qxqy_MB
179                        ModifyGraph/W=V_1D_Data mode=4
180                        ModifyGraph/W=V_1D_Data marker=19
181                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_ML)=(65535,0,0),rgb(iBin_qxqy_MB)=(1,16019,65535),rgb(iBin_qxqy_MR)=(65535,0,0),rgb(iBin_qxqy_MT)=(1,16019,65535)
182                        ModifyGraph/W=V_1D_Data msize=2
183                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_ML)={0,4},muloffset(iBin_qxqy_MB)={0,2},muloffset(iBin_qxqy_MR)={0,8}
184                        ModifyGraph/W=V_1D_Data grid=1
185                        ModifyGraph/W=V_1D_Data log=1
186                        ModifyGraph/W=V_1D_Data mirror=2
187                endif           
188        endif
189       
190        if(binType==2)
191                ClearIQIfDisplayed(type,"MLRTB")
192                ClearIQIfDisplayed(type,"MT")   
193                ClearIQIfDisplayed(type,"ML")   
194                ClearIQIfDisplayed(type,"MR")   
195                ClearIQIfDisplayed(type,"MB")
196       
197
198                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
199                CheckDisplayed/W=V_1D_Data iBin_qxqy_MLR
200               
201                if(V_flag==0)
202                        AppendtoGraph/W=V_1D_Data iBin_qxqy_MLR vs qBin_qxqy_MLR
203                        AppendToGraph/W=V_1D_Data iBin_qxqy_MTB vs qBin_qxqy_MTB
204                        ModifyGraph/W=V_1D_Data mode=4
205                        ModifyGraph/W=V_1D_Data marker=19
206                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_MLR)=(65535,0,0),rgb(iBin_qxqy_MTB)=(1,16019,65535)
207                        ModifyGraph/W=V_1D_Data msize=2
208                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_MLR)={0,2}
209                        ModifyGraph/W=V_1D_Data grid=1
210                        ModifyGraph/W=V_1D_Data log=1
211                        ModifyGraph/W=V_1D_Data mirror=2
212                        Label/W=V_1D_Data left "Intensity (1/cm)"
213                        Label/W=V_1D_Data bottom "Q (1/A)"
214                endif   
215                       
216        endif
217       
218        if(binType==3)
219                ClearIQIfDisplayed(type,"MLR")
220                ClearIQIfDisplayed(type,"MTB") 
221                ClearIQIfDisplayed(type,"MT")   
222                ClearIQIfDisplayed(type,"ML")   
223                ClearIQIfDisplayed(type,"MR")   
224                ClearIQIfDisplayed(type,"MB")   
225       
226                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
227                CheckDisplayed/W=V_1D_Data iBin_qxqy_MLRTB
228               
229                if(V_flag==0)
230                        AppendtoGraph/W=V_1D_Data iBin_qxqy_MLRTB vs qBin_qxqy_MLRTB
231                        ModifyGraph/W=V_1D_Data mode=4
232                        ModifyGraph/W=V_1D_Data marker=19
233                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_MLRTB)=(65535,0,0)
234                        ModifyGraph/W=V_1D_Data msize=2
235                        ModifyGraph/W=V_1D_Data grid=1
236                        ModifyGraph/W=V_1D_Data log=1
237                        ModifyGraph/W=V_1D_Data mirror=2
238                        Label/W=V_1D_Data left "Intensity (1/cm)"
239                        Label/W=V_1D_Data bottom "Q (1/A)"
240                endif   
241                       
242        endif
243
244        if(binType==4)          // slit aperture binning - Mt, ML, MR, MB are averaged
245                ClearIQIfDisplayed(type,"MLRTB")
246                ClearIQIfDisplayed(type,"MLR")
247                ClearIQIfDisplayed(type,"MTB")
248               
249//              SetDataFolder root:Packages:NIST:VSANS:VCALC
250                CheckDisplayed/W=V_1D_Data iBin_qxqy_ML
251               
252                if(V_flag==0)
253                        AppendtoGraph/W=V_1D_Data iBin_qxqy_ML vs qBin_qxqy_ML
254                        AppendToGraph/W=V_1D_Data iBin_qxqy_MR vs qBin_qxqy_MR
255                        AppendToGraph/W=V_1D_Data iBin_qxqy_MT vs qBin_qxqy_MT
256                        AppendToGraph/W=V_1D_Data iBin_qxqy_MB vs qBin_qxqy_MB
257                        ModifyGraph/W=V_1D_Data mode=4
258                        ModifyGraph/W=V_1D_Data marker=19
259                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_ML)=(65535,0,0),rgb(iBin_qxqy_MB)=(1,16019,65535),rgb(iBin_qxqy_MR)=(65535,0,0),rgb(iBin_qxqy_MT)=(1,16019,65535)
260                        ModifyGraph/W=V_1D_Data msize=2
261                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_ML)={0,4},muloffset(iBin_qxqy_MB)={0,2},muloffset(iBin_qxqy_MR)={0,8}
262                        ModifyGraph/W=V_1D_Data grid=1
263                        ModifyGraph/W=V_1D_Data log=1
264                        ModifyGraph/W=V_1D_Data mirror=2
265                endif           
266                       
267        endif
268       
269        SetDataFolder root:
270End
271
272//
273// duplicated from Middle_IQ_Graph from VCALC
274// but plotted in a standalone graph window and not the VCALC subwindow
275//
276// V_1D_Data
277//
278// TODO
279// -- need to set binType
280// -- currently  hard-wired == 1
281//
282//
283Proc V_Front_IQ_Graph(type)
284        String type
285
286        Variable binType
287       
288//      ControlInfo/W=VCALC popup_b
289//      binType = V_Value               // V_value counts menu items from 1, so 1=1, 2=2, 3=4
290
291        binType = 1
292        SetDataFolder $("root:Packages:NIST:VSANS:"+type)
293
294        if(binType==1)
295                ClearIQIfDisplayed(type,"FLRTB")
296                ClearIQIfDisplayed(type,"FLR")
297                ClearIQIfDisplayed(type,"FTB")          //this returns to root:
298               
299                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
300                CheckDisplayed/W=V_1D_Data iBin_qxqy_FL
301               
302                if(V_flag==0)
303                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FL vs qBin_qxqy_FL
304                        AppendToGraph/W=V_1D_Data iBin_qxqy_FR vs qBin_qxqy_FR
305                        AppendToGraph/W=V_1D_Data iBin_qxqy_FT vs qBin_qxqy_FT
306                        AppendToGraph/W=V_1D_Data iBin_qxqy_FB vs qBin_qxqy_FB
307                        ModifyGraph/W=V_1D_Data mode=4
308                        ModifyGraph/W=V_1D_Data marker=19
309                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FL)=(39321,26208,1),rgb(iBin_qxqy_FB)=(2,39321,1),rgb(iBin_qxqy_FR)=(39321,26208,1),rgb(iBin_qxqy_FT)=(2,39321,1)
310                        ModifyGraph/W=V_1D_Data msize=2
311                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FL)={0,4},muloffset(iBin_qxqy_FB)={0,2},muloffset(iBin_qxqy_FR)={0,8}
312                        ModifyGraph/W=V_1D_Data grid=1
313                        ModifyGraph/W=V_1D_Data log=1
314                        ModifyGraph/W=V_1D_Data mirror=2
315                endif           
316        endif
317       
318        if(binType==2)
319                ClearIQIfDisplayed(type,"FLRTB")
320                ClearIQIfDisplayed(type,"FT")   
321                ClearIQIfDisplayed(type,"FL")   
322                ClearIQIfDisplayed(type,"FR")   
323                ClearIQIfDisplayed(type,"FB")
324       
325
326                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
327                CheckDisplayed/W=V_1D_Data iBin_qxqy_FLR
328               
329                if(V_flag==0)
330                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FLR vs qBin_qxqy_FLR
331                        AppendToGraph/W=V_1D_Data iBin_qxqy_FTB vs qBin_qxqy_FTB
332                        ModifyGraph/W=V_1D_Data mode=4
333                        ModifyGraph/W=V_1D_Data marker=19
334                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FLR)=(39321,26208,1),rgb(iBin_qxqy_FTB)=(2,39321,1)
335                        ModifyGraph/W=V_1D_Data msize=2
336                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FLR)={0,2}
337                        ModifyGraph/W=V_1D_Data grid=1
338                        ModifyGraph/W=V_1D_Data log=1
339                        ModifyGraph/W=V_1D_Data mirror=2
340                        Label/W=V_1D_Data left "Intensity (1/cm)"
341                        Label/W=V_1D_Data bottom "Q (1/A)"
342                endif   
343                       
344        endif
345       
346        if(binType==3)
347                ClearIQIfDisplayed(type,"FLR")
348                ClearIQIfDisplayed(type,"FTB") 
349                ClearIQIfDisplayed(type,"FT")   
350                ClearIQIfDisplayed(type,"FL")   
351                ClearIQIfDisplayed(type,"FR")   
352                ClearIQIfDisplayed(type,"FB")   
353       
354                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
355                CheckDisplayed/W=V_1D_Data iBin_qxqy_FLRTB
356               
357                if(V_flag==0)
358                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FLRTB vs qBin_qxqy_FLRTB
359                        ModifyGraph/W=V_1D_Data mode=4
360                        ModifyGraph/W=V_1D_Data marker=19
361                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FLRTB)=(39321,26208,1)
362                        ModifyGraph/W=V_1D_Data msize=2
363                        ModifyGraph/W=V_1D_Data grid=1
364                        ModifyGraph/W=V_1D_Data log=1
365                        ModifyGraph/W=V_1D_Data mirror=2
366                        Label/W=V_1D_Data left "Intensity (1/cm)"
367                        Label/W=V_1D_Data bottom "Q (1/A)"
368                endif   
369                       
370        endif
371
372        if(binType==4)          // slit aperture binning - Mt, ML, MR, MB are averaged
373                ClearIQIfDisplayed(type,"FLRTB")
374                ClearIQIfDisplayed(type,"FLR")
375                ClearIQIfDisplayed(type,"FTB")
376               
377//              SetDataFolder root:Packages:NIST:VSANS:VCALC
378                CheckDisplayed/W=V_1D_Data iBin_qxqy_FL
379               
380                if(V_flag==0)
381                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FL vs qBin_qxqy_FL
382                        AppendToGraph/W=V_1D_Data iBin_qxqy_FR vs qBin_qxqy_FR
383                        AppendToGraph/W=V_1D_Data iBin_qxqy_FT vs qBin_qxqy_FT
384                        AppendToGraph/W=V_1D_Data iBin_qxqy_FB vs qBin_qxqy_FB
385                        ModifyGraph/W=V_1D_Data mode=4
386                        ModifyGraph/W=V_1D_Data marker=19
387                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FL)=(39321,26208,1),rgb(iBin_qxqy_FB)=(2,39321,1),rgb(iBin_qxqy_FR)=(39321,26208,1),rgb(iBin_qxqy_FT)=(2,39321,1)
388                        ModifyGraph/W=V_1D_Data msize=2
389                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FL)={0,4},muloffset(iBin_qxqy_FB)={0,2},muloffset(iBin_qxqy_FR)={0,8}
390                        ModifyGraph/W=V_1D_Data grid=1
391                        ModifyGraph/W=V_1D_Data log=1
392                        ModifyGraph/W=V_1D_Data mirror=2
393                endif           
394                       
395        endif
396       
397        SetDataFolder root:
398End
399
400
401// TODO
402// -- need to set binType
403// -- currently  hard-wired == 1
404//
405////////////to plot the back panel I(q)
406Proc V_Back_IQ_Graph(type)
407        String type
408       
409        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_B
410
411        Variable binType
412       
413//      ControlInfo/W=VCALC popup_b
414//      binType = V_Value               // V_value counts menu items from 1, so 1=1, 2=2, 3=4
415
416        bintype = 1
417       
418                SetDataFolder $("root:Packages:NIST:VSANS:"+type)       
419
420        if(binType==1 || binType==2 || binType==3)
421               
422                CheckDisplayed/W=V_1D_Data iBin_qxqy_B
423               
424                if(V_flag==0)
425                        AppendtoGraph/W=V_1D_Data iBin_qxqy_B vs qBin_qxqy_B
426                        ModifyGraph/W=V_1D_Data mode=4
427                        ModifyGraph/W=V_1D_Data marker=19
428                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_B)=(1,52428,52428)
429                        ModifyGraph/W=V_1D_Data msize=2
430                        ModifyGraph/W=V_1D_Data grid=1
431                        ModifyGraph/W=V_1D_Data log=1
432                        ModifyGraph/W=V_1D_Data mirror=2
433                endif
434        endif
435
436        //nothing different here since there is ony a single detector to display, but for the future...
437        if(binType==4)
438               
439                CheckDisplayed/W=V_1D_Data iBin_qxqy_B
440               
441                if(V_flag==0)
442                        AppendtoGraph/W=V_1D_Data iBin_qxqy_B vs qBin_qxqy_B
443                        ModifyGraph/W=V_1D_Data mode=4
444                        ModifyGraph/W=V_1D_Data marker=19
445                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_B)=(1,52428,52428)
446                        ModifyGraph/W=V_1D_Data msize=2
447                        ModifyGraph/W=V_1D_Data grid=1
448                        ModifyGraph/W=V_1D_Data log=1
449                        ModifyGraph/W=V_1D_Data mirror=2
450                endif
451        endif
452
453       
454        SetDataFolder root:
455End
456
Note: See TracBrowser for help on using the repository browser.