source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf @ 1037

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

more changes, lots of files.

File size: 8.3 KB
Line 
1#pragma rtGlobals=3             // Use modern global access method and strict wave access.
2
3////////////////////////
4//
5//
6// a bunch of utility procedures to access information from the VCALC panel and to access
7// constants based in which of the detectors I'm trying to work with. Saves a lot of repetitive switches
8//
9// start the function names with VCALC_ to avoid the eventual conflicts with the file loading utilities
10// for reduction of real VSANS data
11//
12//
13// -- add more of these procedures as more items are added to the panel
14//
15////////////////////////
16
17
18//  Values from the VCALC panel
19
20
21// returns the nominal SDD from the panel -- value is METERS
22// Does NOT include the set back (offset) of the T/B panels. This is a separate value
23Function VCALC_getSDD(type)
24        String type
25       
26        Variable sdd
27       
28        strswitch(type)
29                case "FL":
30                case "FR":             
31                        ControlInfo/W=VCALC VCALCCtrl_2d
32                        SDD = V_Value
33                        break
34                case "FT":
35                case "FB":             
36                        ControlInfo/W=VCALC VCALCCtrl_2d
37                        SDD = V_Value   
38                        break
39
40                case "ML":
41                case "MR":             
42                        ControlInfo/W=VCALC VCALCCtrl_3d
43                        SDD = V_Value
44                        break
45                case "MT":
46                case "MB":
47                        ControlInfo/W=VCALC VCALCCtrl_3d
48                        SDD = V_Value
49                        break   
50                                               
51                case "B":               
52                        ControlInfo/W=VCALC VCALCCtrl_4b
53                        SDD = V_Value
54                        break
55                       
56                default:
57                        Print "Error -- type not found in        V_getSDD(type)"                                       
58                        sdd = NaN               //no match for type             
59        endswitch
60       
61        return(sdd)
62end
63
64// returns the panel separation [mm]
65Function VCALC_getPanelSeparation(type)
66        String type
67       
68        Variable sep
69       
70        strswitch(type)
71                case "FL":
72                case "FR":
73                case "FLR":             
74                        ControlInfo/W=VCALC VCALCCtrl_2a
75                        sep = V_Value
76                        break
77                case "FT":
78                case "FB":
79                case "FTB":             
80                        ControlInfo/W=VCALC VCALCCtrl_2b
81                        sep = V_Value   
82                        break
83
84                case "ML":
85                case "MR":
86                case "MLR":             
87                        ControlInfo/W=VCALC VCALCCtrl_3a
88                        sep = V_Value
89                        break
90                case "MT":
91                case "MB":
92                case "MTB":
93                        ControlInfo/W=VCALC VCALCCtrl_3b
94                        sep = V_Value
95                        break   
96                                               
97                case "B":               
98                        sep = 0
99                        break
100                       
101                default:
102                        Print "Error -- type not found in        VCALC_getPanelSeparation(type)"                                       
103                        sep = NaN               //no match for type             
104        endswitch
105       
106        return(sep)
107end
108
109// returns the lateral panel offset [mm]
110Function VCALC_getLateralOffset(type)
111        String type
112       
113        Variable offset
114       
115        strswitch(type)
116                case "FL":
117                case "FR":
118                case "FLR":
119                case "FT":
120                case "FB":
121                case "FTB":             
122                        ControlInfo/W=VCALC VCALCCtrl_2c
123                        offset = V_Value       
124                        break
125
126                case "ML":
127                case "MR":
128                case "MLR":
129                case "MT":
130                case "MB":
131                case "MTB":
132                        ControlInfo/W=VCALC VCALCCtrl_3c
133                        offset = V_Value
134                        break   
135                                               
136                case "B":               
137                        ControlInfo/W=VCALC VCALCCtrl_4a
138                        offset = V_Value
139                        break
140                       
141                default:
142                        Print "Error -- type not found in        VCALC_getLateralOffset(type)"                                 
143                        offset = NaN            //no match for type             
144        endswitch
145       
146        return(offset)
147end
148
149// returns the (mean) wavelength from the panel -- value is angstroms
150Function VCALC_getWavelength()
151       
152        ControlInfo/W=VCALC VCALCCtrl_0b
153
154        return(V_Value)
155end
156
157// returns the number of neutrons on the sample
158Function VCALC_getImon()
159       
160        ControlInfo/W=VCALC VCALCCtrl_5a
161
162        return(V_Value)
163end
164
165// returns the model function to use
166Function/S VCALC_getModelFunctionStr()
167       
168        ControlInfo/W=VCALC VCALCCtrl_5b
169
170        return(S_Value)
171end
172
173
174
175/// NVARs set in VCALC space (not necessarily matching the true instrument values)
176// -- these all set to the proper data folder, then BACK TO ROOT:
177
178
179// return the pixel X size, in [cm]
180Function VCALC_getPixSizeX(type)
181        String type
182
183        Variable pixSizeX = V_getDet_x_pixel_size("VCALC",type)
184
185//      SetDataFolder root:Packages:NIST:VSANS:VCALC
186//                     
187//      strswitch(type)
188//              case "FL":
189//                      NVAR pixSizeX = gFront_L_pixelX
190//                      break
191//              case "FR":             
192//                      NVAR pixSizeX = gFront_R_pixelX
193//                      break
194//              case "FT":
195//                      NVAR pixSizeX = gFront_T_pixelX
196//                      break   
197//              case "FB":             
198//                      NVAR pixSizeX = gFront_B_pixelX
199//                      break
200//                     
201//              case "ML":
202//                      NVAR pixSizeX = gMiddle_L_pixelX
203//                      break
204//              case "MR":             
205//                      NVAR pixSizeX = gMiddle_R_pixelX
206//                      break
207//              case "MT":
208//                      NVAR pixSizeX = gMiddle_T_pixelX
209//                      break   
210//              case "MB":             
211//                      NVAR pixSizeX = gMiddle_B_pixelX
212//                      break
213//                                             
214//              case "B":               
215//                      NVAR pixSizeX = gBack_pixelX
216//                      break
217//                     
218//              default:                                                       
219//                      Print "Detector type mismatch in        V_getPixSizeX(type)"
220//                      setDataFolder root:
221//                      return(NaN)
222//      endswitch
223//
224//      setDataFolder root:
225               
226        return(pixSizeX)
227end
228
229// return the pixel Y size, in [cm]
230Function VCALC_getPixSizeY(type)
231        String type
232
233        Variable pixSizeY = V_getDet_y_pixel_size("VCALC",type)
234       
235//      SetDataFolder root:Packages:NIST:VSANS:VCALC
236//                     
237//      strswitch(type)
238//              case "FL":
239//                      NVAR pixSizeY = gFront_L_pixelY
240//                      break
241//              case "FR":             
242//                      NVAR pixSizeY = gFront_R_pixelY
243//                      break
244//              case "FT":
245//                      NVAR pixSizeY = gFront_T_pixelY
246//                      break   
247//              case "FB":             
248//                      NVAR pixSizeY = gFront_B_pixelY
249//                      break
250//                     
251//              case "ML":
252//                      NVAR pixSizeY = gMiddle_L_pixelY
253//                      break
254//              case "MR":             
255//                      NVAR pixSizeY = gMiddle_R_pixelY
256//                      break
257//              case "MT":
258//                      NVAR pixSizeY = gMiddle_T_pixelY
259//                      break   
260//              case "MB":             
261//                      NVAR pixSizeY = gMiddle_B_pixelY
262//                      break
263//                                             
264//              case "B":               
265//                      NVAR pixSizeY = gBack_pixelY
266//                      break
267//                     
268//              default:                                                       
269//                      Print "Detector type mismatch in        V_getPixSizeY(type)"
270//                      SetDataFolder root:
271//                      return(NaN)
272//      endswitch
273//
274//      setDatafolder root:
275               
276        return(pixSizeY)
277end
278
279
280// return the number of pixels in x-dimension
281Function VCALC_get_nPix_X(type)
282        String type
283
284        Variable nPix = V_getDet_pixel_num_x("VCALC",type)
285       
286//      SetDataFolder root:Packages:NIST:VSANS:VCALC
287//                     
288//      strswitch(type)
289//              case "FL":
290//                      NVAR nPix = gFront_L_nPix_X
291//                      break
292//              case "FR":             
293//                      NVAR nPix = gFront_R_nPix_X
294//                      break
295//              case "FT":
296//                      NVAR nPix = gFront_T_nPix_X
297//                      break   
298//              case "FB":             
299//                      NVAR nPix = gFront_B_nPix_X
300//                      break
301//                     
302//              case "ML":
303//                      NVAR nPix = gMiddle_L_nPix_X
304//                      break
305//              case "MR":             
306//                      NVAR nPix = gMiddle_R_nPix_X
307//                      break
308//              case "MT":
309//                      NVAR nPix = gMiddle_T_nPix_X
310//                      break   
311//              case "MB":             
312//                      NVAR nPix = gMiddle_B_nPix_X
313//                      break
314//                                             
315//              case "B":               
316//                      NVAR nPix = gBack_nPix_X
317//                      break
318//                     
319//              default:                                                       
320//                      Print "Detector type mismatch in        VCALC_get_nPix_X(type)"
321//                      SetDataFolder root:
322//                      return(NaN)
323//      endswitch
324//
325//      setDataFolder root:
326               
327        return(nPix)
328end
329
330// return the number of pixels in y-dimension
331Function VCALC_get_nPix_Y(type)
332        String type
333
334        Variable nPix = V_getDet_pixel_num_y("VCALC",type)
335
336//      SetDataFolder root:Packages:NIST:VSANS:VCALC
337//                     
338//      strswitch(type)
339//              case "FL":
340//                      NVAR nPix = gFront_L_nPix_Y
341//                      break
342//              case "FR":             
343//                      NVAR nPix = gFront_R_nPix_Y
344//                      break
345//              case "FT":
346//                      NVAR nPix = gFront_T_nPix_Y
347//                      break   
348//              case "FB":             
349//                      NVAR nPix = gFront_B_nPix_Y
350//                      break
351//                     
352//              case "ML":
353//                      NVAR nPix = gMiddle_L_nPix_Y
354//                      break
355//              case "MR":             
356//                      NVAR nPix = gMiddle_R_nPix_Y
357//                      break
358//              case "MT":
359//                      NVAR nPix = gMiddle_T_nPix_Y
360//                      break   
361//              case "MB":             
362//                      NVAR nPix = gMiddle_B_nPix_Y
363//                      break
364//                                             
365//              case "B":               
366//                      NVAR nPix = gBack_nPix_Y
367//                      break
368//                     
369//              default:                                                       
370//                      Print "Detector type mismatch in        VCALC_get_nPix_Y(type)"
371//                      SetDataFolder root:
372//                      return(NaN)
373//      endswitch
374//
375//      SetDataFolder root:
376               
377        return(nPix)
378end
379
380
381
382// SDD offset of the top/bottom panels
383// value returned is in mm (so beware)
384//
385Function VCALC_getTopBottomSDDOffset(type)
386        String type
387
388        SetDataFolder root:Packages:NIST:VSANS:VCALC
389       
390        strswitch(type)
391                case "FL":
392                case "FR":
393                        SetDataFolder root:
394                        return(0)               
395                        break           //already zero, do nothing
396                case "FT":
397                case "FB":             
398                        NVAR sdd_offset = gFront_SDDOffset      //T/B are 300 mm farther back
399                        break
400                       
401                case "ML":
402                case "MR":
403                        SetDataFolder root:
404                        return(0)
405                        break           //already zero, do nothing
406                case "MT":
407                case "MB":
408                        NVAR sdd_offset = gMiddle_SDDOffset     //T/B are 300 mm farther back
409                        break   
410                                               
411                case "B":
412                        SetDataFolder root:
413                        return(0)
414                        break           //already zero, do nothing
415                       
416                default:
417                        Print "Error -- type not found in        VCALC_getTopBottomSDDOffset(type)"                                     
418                        sdd_offset = 0          //no match for type             
419        endswitch
420
421        SetDataFolder root:
422               
423        return(sdd_offset)     
424End
425
426
427/////////// procedure to concatenate I(q) files into a single file
428//
429// currently, no rescaling is done, no trimming is done, just crude concatentate and sort
430//
431// TODO
432// -- all of this needs to be done. There's nothing here...
433//
434
435
436
437
Note: See TracBrowser for help on using the repository browser.