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

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

more changes, bug fixes, detector dead time fix

File size: 13.9 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// clear EVERYTHING
167                ClearAllIQIfDisplayed("MLRTB")
168                ClearAllIQIfDisplayed("MLR")
169                ClearAllIQIfDisplayed("MTB")            //this returns to root:
170                ClearAllIQIfDisplayed("MT")     
171                ClearAllIQIfDisplayed("ML")     
172                ClearAllIQIfDisplayed("MR")     
173                ClearAllIQIfDisplayed("MB")     
174
175        if(binType==1)
176//              ClearAllIQIfDisplayed("MLRTB")
177//              ClearAllIQIfDisplayed("MLR")
178//              ClearAllIQIfDisplayed("MTB")            //this returns to root:
179//              ClearAllIQIfDisplayed("MT")     
180//              ClearAllIQIfDisplayed("ML")     
181//              ClearAllIQIfDisplayed("MR")     
182//              ClearAllIQIfDisplayed("MB")                     
183                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
184                CheckDisplayed/W=V_1D_Data iBin_qxqy_ML
185               
186                if(V_flag==0)
187                        AppendtoGraph/W=V_1D_Data iBin_qxqy_ML vs qBin_qxqy_ML
188                        AppendToGraph/W=V_1D_Data iBin_qxqy_MR vs qBin_qxqy_MR
189                        AppendToGraph/W=V_1D_Data iBin_qxqy_MT vs qBin_qxqy_MT
190                        AppendToGraph/W=V_1D_Data iBin_qxqy_MB vs qBin_qxqy_MB
191                        ModifyGraph/W=V_1D_Data mode=4
192                        ModifyGraph/W=V_1D_Data marker=19
193                        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)
194                        ModifyGraph/W=V_1D_Data msize=2
195                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_ML)={0,4},muloffset(iBin_qxqy_MB)={0,2},muloffset(iBin_qxqy_MR)={0,8}
196                        ModifyGraph/W=V_1D_Data grid=1
197                        ModifyGraph/W=V_1D_Data log=1
198                        ModifyGraph/W=V_1D_Data mirror=2
199                endif           
200        endif
201       
202        if(binType==2)
203//              ClearAllIQIfDisplayed("MLRTB")
204//              ClearAllIQIfDisplayed("MT")     
205//              ClearAllIQIfDisplayed("ML")     
206//              ClearAllIQIfDisplayed("MR")     
207//              ClearAllIQIfDisplayed("MB")
208       
209
210                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
211                CheckDisplayed/W=V_1D_Data iBin_qxqy_MLR
212               
213                if(V_flag==0)
214                        AppendtoGraph/W=V_1D_Data iBin_qxqy_MLR vs qBin_qxqy_MLR
215                        AppendToGraph/W=V_1D_Data iBin_qxqy_MTB vs qBin_qxqy_MTB
216                        ModifyGraph/W=V_1D_Data mode=4
217                        ModifyGraph/W=V_1D_Data marker=19
218                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_MLR)=(65535,0,0),rgb(iBin_qxqy_MTB)=(1,16019,65535)
219                        ModifyGraph/W=V_1D_Data msize=2
220                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_MLR)={0,2}
221                        ModifyGraph/W=V_1D_Data grid=1
222                        ModifyGraph/W=V_1D_Data log=1
223                        ModifyGraph/W=V_1D_Data mirror=2
224                        Label/W=V_1D_Data left "Intensity (1/cm)"
225                        Label/W=V_1D_Data bottom "Q (1/A)"
226                endif   
227                       
228        endif
229       
230        if(binType==3)
231//              ClearAllIQIfDisplayed("MLR")
232//              ClearAllIQIfDisplayed("MTB")   
233//              ClearAllIQIfDisplayed("MT")     
234//              ClearAllIQIfDisplayed("ML")     
235//              ClearAllIQIfDisplayed("MR")     
236//              ClearAllIQIfDisplayed("MB")     
237       
238                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
239                CheckDisplayed/W=V_1D_Data iBin_qxqy_MLRTB
240               
241                if(V_flag==0)
242                        AppendtoGraph/W=V_1D_Data iBin_qxqy_MLRTB vs qBin_qxqy_MLRTB
243                        ModifyGraph/W=V_1D_Data mode=4
244                        ModifyGraph/W=V_1D_Data marker=19
245                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_MLRTB)=(65535,0,0)
246                        ModifyGraph/W=V_1D_Data msize=2
247                        ModifyGraph/W=V_1D_Data grid=1
248                        ModifyGraph/W=V_1D_Data log=1
249                        ModifyGraph/W=V_1D_Data mirror=2
250                        Label/W=V_1D_Data left "Intensity (1/cm)"
251                        Label/W=V_1D_Data bottom "Q (1/A)"
252                endif   
253                       
254        endif
255
256        if(binType==4)          // slit aperture binning - Mt, ML, MR, MB are averaged
257//              ClearAllIQIfDisplayed("MLRTB")
258//              ClearAllIQIfDisplayed("MLR")
259//              ClearAllIQIfDisplayed("MTB")
260               
261//              SetDataFolder root:Packages:NIST:VSANS:VCALC
262                CheckDisplayed/W=V_1D_Data iBin_qxqy_ML
263               
264                if(V_flag==0)
265                        AppendtoGraph/W=V_1D_Data iBin_qxqy_ML vs qBin_qxqy_ML
266                        AppendToGraph/W=V_1D_Data iBin_qxqy_MR vs qBin_qxqy_MR
267                        AppendToGraph/W=V_1D_Data iBin_qxqy_MT vs qBin_qxqy_MT
268                        AppendToGraph/W=V_1D_Data iBin_qxqy_MB vs qBin_qxqy_MB
269                        ModifyGraph/W=V_1D_Data mode=4
270                        ModifyGraph/W=V_1D_Data marker=19
271                        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)
272                        ModifyGraph/W=V_1D_Data msize=2
273                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_ML)={0,4},muloffset(iBin_qxqy_MB)={0,2},muloffset(iBin_qxqy_MR)={0,8}
274                        ModifyGraph/W=V_1D_Data grid=1
275                        ModifyGraph/W=V_1D_Data log=1
276                        ModifyGraph/W=V_1D_Data mirror=2
277                endif           
278                       
279        endif
280       
281        SetDataFolder root:
282End
283
284//
285// duplicated from Middle_IQ_Graph from VCALC
286// but plotted in a standalone graph window and not the VCALC subwindow
287//
288// V_1D_Data
289//
290// TODO
291// -- need to set binType
292// -- currently  hard-wired == 1
293//
294//
295Proc V_Front_IQ_Graph(type)
296        String type
297
298        Variable binType
299       
300//      ControlInfo/W=VCALC popup_b
301//      binType = V_Value               // V_value counts menu items from 1, so 1=1, 2=2, 3=4
302
303        binType = 1
304        SetDataFolder $("root:Packages:NIST:VSANS:"+type)
305
306// clear EVERYTHING
307                ClearAllIQIfDisplayed("FLRTB")
308               
309                ClearAllIQIfDisplayed("FLR")
310                ClearAllIQIfDisplayed("FTB")
311
312                ClearAllIQIfDisplayed("FT")     
313                ClearAllIQIfDisplayed("FL")     
314                ClearAllIQIfDisplayed("FR")     
315                ClearAllIQIfDisplayed("FB")
316               
317        if(binType==1)
318//              ClearAllIQIfDisplayed("FLRTB")
319//             
320//              ClearAllIQIfDisplayed("FLR")
321//              ClearAllIQIfDisplayed("FTB")
322//
323//              ClearAllIQIfDisplayed("FT")     
324//              ClearAllIQIfDisplayed("FL")     
325//              ClearAllIQIfDisplayed("FR")     
326//              ClearAllIQIfDisplayed("FB")
327                               
328                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
329                CheckDisplayed/W=V_1D_Data iBin_qxqy_FL
330               
331                if(V_flag==0)
332                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FL vs qBin_qxqy_FL
333                        AppendToGraph/W=V_1D_Data iBin_qxqy_FR vs qBin_qxqy_FR
334                        AppendToGraph/W=V_1D_Data iBin_qxqy_FT vs qBin_qxqy_FT
335                        AppendToGraph/W=V_1D_Data iBin_qxqy_FB vs qBin_qxqy_FB
336                        ModifyGraph/W=V_1D_Data mode=4
337                        ModifyGraph/W=V_1D_Data marker=19
338                        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)
339                        ModifyGraph/W=V_1D_Data msize=2
340                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FL)={0,4},muloffset(iBin_qxqy_FB)={0,2},muloffset(iBin_qxqy_FR)={0,8}
341                        ModifyGraph/W=V_1D_Data grid=1
342                        ModifyGraph/W=V_1D_Data log=1
343                        ModifyGraph/W=V_1D_Data mirror=2
344                endif           
345        endif
346       
347        if(binType==2)
348//              ClearAllIQIfDisplayed("FLRTB")
349//              ClearAllIQIfDisplayed("FT")     
350//              ClearAllIQIfDisplayed("FL")     
351//              ClearAllIQIfDisplayed("FR")     
352//              ClearAllIQIfDisplayed("FB")
353//     
354
355                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
356                CheckDisplayed/W=V_1D_Data iBin_qxqy_FLR
357               
358                if(V_flag==0)
359                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FLR vs qBin_qxqy_FLR
360                        AppendToGraph/W=V_1D_Data iBin_qxqy_FTB vs qBin_qxqy_FTB
361                        ModifyGraph/W=V_1D_Data mode=4
362                        ModifyGraph/W=V_1D_Data marker=19
363                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FLR)=(39321,26208,1),rgb(iBin_qxqy_FTB)=(2,39321,1)
364                        ModifyGraph/W=V_1D_Data msize=2
365                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FLR)={0,2}
366                        ModifyGraph/W=V_1D_Data grid=1
367                        ModifyGraph/W=V_1D_Data log=1
368                        ModifyGraph/W=V_1D_Data mirror=2
369                        Label/W=V_1D_Data left "Intensity (1/cm)"
370                        Label/W=V_1D_Data bottom "Q (1/A)"
371                endif   
372                       
373        endif
374       
375        if(binType==3)
376//              ClearAllIQIfDisplayed("FLR")
377//              ClearAllIQIfDisplayed("FTB")   
378//              ClearAllIQIfDisplayed("FT")     
379//              ClearAllIQIfDisplayed("FL")     
380//              ClearAllIQIfDisplayed("FR")     
381//              ClearAllIQIfDisplayed("FB")     
382       
383                SetDataFolder $("root:Packages:NIST:VSANS:"+type)
384                CheckDisplayed/W=V_1D_Data iBin_qxqy_FLRTB
385               
386                if(V_flag==0)
387                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FLRTB vs qBin_qxqy_FLRTB
388                        ModifyGraph/W=V_1D_Data mode=4
389                        ModifyGraph/W=V_1D_Data marker=19
390                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_FLRTB)=(39321,26208,1)
391                        ModifyGraph/W=V_1D_Data msize=2
392                        ModifyGraph/W=V_1D_Data grid=1
393                        ModifyGraph/W=V_1D_Data log=1
394                        ModifyGraph/W=V_1D_Data mirror=2
395                        Label/W=V_1D_Data left "Intensity (1/cm)"
396                        Label/W=V_1D_Data bottom "Q (1/A)"
397                endif   
398                       
399        endif
400
401        if(binType==4)          // slit aperture binning - Mt, ML, MR, MB are averaged
402//              ClearAllIQIfDisplayed("FLRTB")
403//              ClearAllIQIfDisplayed("FLR")
404//              ClearAllIQIfDisplayed("FTB")
405               
406//              SetDataFolder root:Packages:NIST:VSANS:VCALC
407                CheckDisplayed/W=V_1D_Data iBin_qxqy_FL
408               
409                if(V_flag==0)
410                        AppendtoGraph/W=V_1D_Data iBin_qxqy_FL vs qBin_qxqy_FL
411                        AppendToGraph/W=V_1D_Data iBin_qxqy_FR vs qBin_qxqy_FR
412                        AppendToGraph/W=V_1D_Data iBin_qxqy_FT vs qBin_qxqy_FT
413                        AppendToGraph/W=V_1D_Data iBin_qxqy_FB vs qBin_qxqy_FB
414                        ModifyGraph/W=V_1D_Data mode=4
415                        ModifyGraph/W=V_1D_Data marker=19
416                        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)
417                        ModifyGraph/W=V_1D_Data msize=2
418                        ModifyGraph/W=V_1D_Data muloffset(iBin_qxqy_FL)={0,4},muloffset(iBin_qxqy_FB)={0,2},muloffset(iBin_qxqy_FR)={0,8}
419                        ModifyGraph/W=V_1D_Data grid=1
420                        ModifyGraph/W=V_1D_Data log=1
421                        ModifyGraph/W=V_1D_Data mirror=2
422                endif           
423                       
424        endif
425       
426        SetDataFolder root:
427End
428
429
430// TODO
431// -- need to set binType
432// -- currently  hard-wired == 1
433//
434////////////to plot the back panel I(q)
435Proc V_Back_IQ_Graph(type)
436        String type
437       
438//      SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_B
439
440        Variable binType
441       
442//      ControlInfo/W=VCALC popup_b
443//      binType = V_Value               // V_value counts menu items from 1, so 1=1, 2=2, 3=4
444
445        bintype = 1
446       
447                SetDataFolder $("root:Packages:NIST:VSANS:"+type)       
448
449        if(binType==1 || binType==2 || binType==3)
450       
451                ClearAllIQIfDisplayed("B")
452                SetDataFolder $("root:Packages:NIST:VSANS:"+type)       
453                CheckDisplayed/W=V_1D_Data iBin_qxqy_B
454               
455                if(V_flag==0)
456                        AppendtoGraph/W=V_1D_Data iBin_qxqy_B vs qBin_qxqy_B
457                        ModifyGraph/W=V_1D_Data mode=4
458                        ModifyGraph/W=V_1D_Data marker=19
459                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_B)=(1,52428,52428)
460                        ModifyGraph/W=V_1D_Data msize=2
461                        ModifyGraph/W=V_1D_Data grid=1
462                        ModifyGraph/W=V_1D_Data log=1
463                        ModifyGraph/W=V_1D_Data mirror=2
464                endif
465        endif
466
467        //nothing different here since there is ony a single detector to display, but for the future...
468        if(binType==4)
469       
470                ClearAllIQIfDisplayed("B")
471                SetDataFolder $("root:Packages:NIST:VSANS:"+type)       
472                CheckDisplayed/W=V_1D_Data iBin_qxqy_B
473               
474                if(V_flag==0)
475                        AppendtoGraph/W=V_1D_Data iBin_qxqy_B vs qBin_qxqy_B
476                        ModifyGraph/W=V_1D_Data mode=4
477                        ModifyGraph/W=V_1D_Data marker=19
478                        ModifyGraph/W=V_1D_Data rgb(iBin_qxqy_B)=(1,52428,52428)
479                        ModifyGraph/W=V_1D_Data msize=2
480                        ModifyGraph/W=V_1D_Data grid=1
481                        ModifyGraph/W=V_1D_Data log=1
482                        ModifyGraph/W=V_1D_Data mirror=2
483                endif
484        endif
485
486       
487        SetDataFolder root:
488End
489
Note: See TracBrowser for help on using the repository browser.