source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf @ 958

Last change on this file since 958 was 958, checked in by srkline, 8 years ago

more changes to the procedures and panel to allow fitting of each panel to determine the beam center.

File size: 25.8 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2
3//
4//
5// mockup of the panel for VCALC
6//
7// -- all is housed in the folder:
8//      NewDataFolder/O root:Packages:NIST:VSANS:VCALC
9//
10// -- Put all of the constants to define the instrument plus all of the VCALC stuff
11//
12// anticipating that at the same level as VCALC will be all of the reduction folders
13// in a similar way as for SANS reduction
14//
15//
16
17
18Macro VCALC_Panel()
19        DoWindow/F VCALC
20        if(V_flag==0)
21       
22                //initialize space = folders, parameters, instrument constants, etc.
23                V_Initialize_Space()
24               
25                //open the panel
26                DrawVCALC_Panel()
27               
28                // two graphs with the ray-tracing side/top views
29                SetupSideView()
30                SetupTopView()
31               
32                // a front view of the panels
33                FrontView_1x()
34               
35                // TODO: fake a "click" on the front SDD to force (almost)everything to update
36                // including the I(q) graph
37                FakeFrontMiddleSDDClick()
38
39        endif
40End
41
42Function FakeFrontMiddleSDDClick()
43       
44        STRUCT WMSetVariableAction sva
45        sva.eventCode = 3
46//      sva.dval = 0.3
47
48        V_BDet_SDD_SetVarProc(sva)             
49        V_MDet_SDD_SetVarProc(sva)
50        V_FDet_SDD_SetVarProc(sva)
51
52        return(0)
53end
54
55
56Proc DrawVCALC_Panel()
57        PauseUpdate; Silent 1           // building window...
58        NewPanel /W=(34,44,1274,699)/N=VCALC/K=1
59        ModifyPanel cbRGB=(49151,60031,65535)
60//      ShowTools/A
61        SetDrawLayer UserBack
62       
63// always visible stuff, not on any tab
64       
65        GroupBox group0,pos={10,10},size={444,180},title="Setup"
66        TabControl Vtab,labelBack=(45000,61000,58000),pos={14,215},size={430,426},tabLabel(0)="Collim"
67        TabControl Vtab,tabLabel(1)="Sample",tabLabel(2)="Front Det",tabLabel(3)="Mid Det"
68        TabControl Vtab,tabLabel(4)="Back Det",tabLabel(5)="Simul",value= 0,proc=VCALCTabProc
69        GroupBox group1,pos={460,10},size={762,635},title="Detector Panel Positions + Data"
70
71        PopupMenu popup_a,pos={50,40},size={142,20},title="Presets"
72        PopupMenu popup_a,mode=1,popvalue="Low Q",value= root:Packages:NIST:VSANS:VCALC:gPresetPopStr
73
74        PopupMenu popup_b,pos={690,310},size={142,20},title="Binning type",proc=V_RebinIQ_PopProc
75        PopupMenu popup_b,mode=1,popvalue="One",value= root:Packages:NIST:VSANS:VCALC:gBinTypeStr
76       
77        SetVariable setVar_a,pos={476,26},size={120,15},title="axis degrees",proc=FrontView_Range_SetVarProc
78        SetVariable setVar_a,limits={0.3,30,0.2},value=_NUM:20
79
80        // for panels (in degrees)     
81        Display/W=(476,45,757,303)/HOST=# root:Packages:NIST:VSANS:VCALC:fv_degY vs root:Packages:NIST:VSANS:VCALC:fv_degX
82        RenameWindow #,FrontView
83        ModifyGraph mode=2              // mode = 2 = dots
84        ModifyGraph marker=19
85        ModifyGraph rgb=(0,0,0)
86        ModifyGraph tick=2,mirror=1
87        Label left "degrees"
88        Label bottom "degrees" 
89        SetActiveSubwindow ##
90
91
92        // for side view
93        Display/W=(842,25,1200,170)/HOST=# root:Packages:NIST:VSANS:VCALC:fv_degY vs root:Packages:NIST:VSANS:VCALC:fv_degX
94        RenameWindow #,SideView
95        ModifyGraph mode=2              // mode = 2 = dots
96        ModifyGraph marker=19
97        ModifyGraph rgb=(0,0,0)
98        ModifyGraph tick=2,mirror=1
99        Label left "Vertical position (mm)"
100        Label bottom "SDD (m)" 
101        SetActiveSubwindow ##   
102       
103        // for top view
104        Display/W=(842,180,1200,325)/HOST=# root:Packages:NIST:VSANS:VCALC:fv_degY vs root:Packages:NIST:VSANS:VCALC:fv_degX
105        RenameWindow #,TopView
106        ModifyGraph mode=2              // mode = 2 = dots
107        ModifyGraph marker=19
108        ModifyGraph rgb=(0,0,0)
109        ModifyGraph tick=2,mirror=1
110        Label left "Horizontal position (mm)"
111        Label bottom "SDD (m)" 
112        SetActiveSubwindow ##   
113
114        // for panels (as 2D Q)
115        Display/W=(475,332,814,631)/HOST=# root:Packages:NIST:VSANS:VCALC:fv_degY vs root:Packages:NIST:VSANS:VCALC:fv_degX
116        RenameWindow #,Panels_Q
117        ModifyGraph mode=2              // mode = 2 = dots
118        ModifyGraph tick=2,mirror=1,grid=2,standoff=0
119        ModifyGraph width={Aspect,1},height={Aspect,1},gbRGB=(56797,56797,56797)
120        SetAxis left -0.2,0.2
121        SetAxis bottom -0.2,0.2
122        Label left "Qy"
123        Label bottom "Qx"       
124        SetActiveSubwindow ##
125
126        SetVariable setVar_b,pos={476,314},size={120,15},title="axis Q",proc=Front2DQ_Range_SetVarProc
127        SetVariable setVar_b,limits={0.02,1,0.02},value=_NUM:0.3
128        CheckBox check_0a title="Log?",size={60,20},pos={619,313},proc=Front2DQ_Log_CheckProc
129
130        // for averaged I(Q)
131        Display/W=(842,334,1204,629)/HOST=# //root:Packages:NIST:VCALC:fv_degY vs root:Packages:NIST:VSANS:VCALC:fv_degX
132        RenameWindow #,Panels_IQ
133//      ModifyGraph mode=2              // mode = 2 = dots
134        ModifyGraph tick=2,mirror=1,grid=2
135//      Label left "Intensity"
136//      Label bottom "Q"       
137        SetActiveSubwindow ##
138
139
140       
141// all controls are named VCALCCtrl_NA where N is the tab number and A is the letter denoting
142
143       
144// tab(0), collimation - initially visible
145        Slider VCALCCtrl_0a,pos={223,324},size={200,45},limits={0,10,1},value= 1,vert= 0
146        SetVariable VCALCCtrl_0b,pos={25,294},size={120,15},title="wavelength"
147        SetVariable VCALCCtrl_0b,limits={4,20,1},value=_NUM:8,proc=V_Lambda_SetVarProc
148        PopupMenu VCALCCtrl_0c,pos={26,257},size={150,20},title="monochromator"
149        PopupMenu VCALCCtrl_0c,mode=1,popvalue="Velocity Selector",value= root:Packages:NIST:VSANS:VCALC:gMonochromatorType
150        PopupMenu VCALCCtrl_0d,pos={26,321},size={115,20},title="delta lambda"
151        PopupMenu VCALCCtrl_0d,mode=1,popvalue="0.10",value= root:Packages:NIST:VSANS:VCALC:gDeltaLambda
152        PopupMenu VCALCCtrl_0e,pos={291,262},size={132,20},title="source shape"
153        PopupMenu VCALCCtrl_0e,mode=1,popvalue="circular",value= root:Packages:NIST:VSANS:VCALC:gSourceShape
154        PopupMenu VCALCCtrl_0f,pos={283,293},size={141,20},title="source aperture"
155        PopupMenu VCALCCtrl_0f,mode=1,popvalue="1.0 cm",value= root:Packages:NIST:VSANS:VCALC:gSourceDiam
156       
157
158// tab(1) - Sample conditions, initially not visible
159        PopupMenu VCALCCtrl_1a,pos={38,270},size={142,20},title="table location",disable=1
160        PopupMenu VCALCCtrl_1a,mode=1,popvalue="Changer",value= root:Packages:NIST:VSANS:VCALC:gTableLocation
161        PopupMenu VCALCCtrl_1b,pos={270,270},size={115,20},title="Aperture Shape",disable=1
162        PopupMenu VCALCCtrl_1b,mode=1,popvalue="circular",value= root:Packages:NIST:VSANS:VCALC:gSampleApertureShape
163        PopupMenu VCALCCtrl_1c,pos={270,330},size={132,20},title="Aperture Size (cm)",disable=1
164        PopupMenu VCALCCtrl_1c,mode=1,popvalue="0.5",value= root:Packages:NIST:VSANS:VCALC:gSampleApertureDiam
165       
166
167// tab(2) - Front detector panels, initially not visible
168        SetVariable VCALCCtrl_2a,pos={30,260},size={150,15},title="L/R Separation (mm)",proc=V_FDet_LR_SetVarProc
169        SetVariable VCALCCtrl_2a,limits={0,400,1},disable=1,value=_NUM:100
170        SetVariable VCALCCtrl_2b,pos={30,290},size={150,15},title="T/B Separation (mm)",proc=V_FDet_LR_SetVarProc
171        SetVariable VCALCCtrl_2b,limits={0,400,1},disable=1,value=_NUM:100
172        SetVariable VCALCCtrl_2c,pos={205,290},size={150,15},title="Lateral Offset (mm)"
173        SetVariable VCALCCtrl_2c,limits={0,200,0.1},disable=1,value=_NUM:0
174        SetVariable VCALCCtrl_2d,pos={205,260},size={230,15},title="Sample to Detector Distance (m)",proc=V_FDet_SDD_SetVarProc
175        SetVariable VCALCCtrl_2d,limits={1,8,0.1},disable=1     ,value=_NUM:1.5
176       
177
178// tab(3) - Middle detector panels, initially not visible
179        SetVariable VCALCCtrl_3a,pos={30,260},size={150,15},title="L/R Separation (mm)",proc=V_MDet_LR_SetVarProc
180        SetVariable VCALCCtrl_3a,limits={0,400,1},disable=1,value=_NUM:120
181        SetVariable VCALCCtrl_3b,pos={30,290},size={150,15},title="T/B Separation (mm)",proc=V_MDet_LR_SetVarProc
182        SetVariable VCALCCtrl_3b,limits={0,400,1},disable=1,value=_NUM:120
183        SetVariable VCALCCtrl_3c,pos={205,290},size={150,15},title="Lateral Offset (mm)"
184        SetVariable VCALCCtrl_3c,limits={0,200,0.1},disable=1,value=_NUM:0
185        SetVariable VCALCCtrl_3d,pos={205,260},size={230,15},title="Sample to Detector Distance (m)",proc=V_MDet_SDD_SetVarProc
186        SetVariable VCALCCtrl_3d,limits={8,20,0.1},disable=1,value=_NUM:10
187       
188// tab(4) - Back detector panel
189        SetVariable VCALCCtrl_4a,pos={188,290},size={150,15},title="Lateral Offset (mm)"
190        SetVariable VCALCCtrl_4a,limits={0,200,0.1},disable=1,value=_NUM:0
191        SetVariable VCALCCtrl_4b,pos={188,260},size={230,15},title="Sample to Detector Distance (m)",proc=V_BDet_SDD_SetVarProc
192        SetVariable VCALCCtrl_4b,limits={20,25,0.1},disable=1,value=_NUM:22
193        PopupMenu VCALCCtrl_4c,pos={40,260},size={180,20},title="Detector type",disable=1
194        PopupMenu VCALCCtrl_4c,mode=1,popvalue="2D",value= root:Packages:NIST:VSANS:VCALC:gBackDetType
195
196// tab(5) - Simulation setup
197        SetVariable VCALCCtrl_5a,pos={40,290},size={200,15},title="Neutrons on Sample (imon)"
198        SetVariable VCALCCtrl_5a,limits={1e7,1e15,1e7},disable=1,value=_NUM:1e10,proc=V_SimImon_SetVarProc
199        PopupMenu VCALCCtrl_5b,pos={40,260},size={180,20},title="Model Function",disable=1
200        PopupMenu VCALCCtrl_5b,mode=1,popvalue="Debye",value= root:Packages:NIST:VSANS:VCALC:gModelFunctionType,proc=V_SimModelFunc_PopProc
201       
202End
203
204//
205// just recalculates the detector panels, doesn't adjust the views
206//
207Function Recalculate_AllDetectors()
208
209        fPlotBackPanels()
210        fPlotMiddlePanels()
211        fPlotFrontPanels()
212
213        return(0)
214End
215
216// function to control the drawing of controls in the TabControl on the main panel
217// Naming scheme for the controls MUST be strictly adhered to... else controls will
218// appear in odd places...
219// all controls are named VCALCCtrl_NA where N is the tab number and A is the letter denoting
220// the controls position on that particular tab.
221// in this way, they will always be drawn correctly..
222//
223//
224// -- this will need to be modified to allow for the graph to be drawn of the detector bank positions
225//     if that is individual to each tab - or if it's  always visible - that's still to be decided.
226//
227//
228Function VCALCTabProc(name,tab)
229        String name
230        Variable tab
231       
232//      Print "name,number",name,tab
233        String ctrlList = ControlNameList("",";"),item="",nameStr=""
234        Variable num = ItemsinList(ctrlList,";"),ii,onTab
235        for(ii=0;ii<num;ii+=1)
236                //items all start w/"VCALCCtrl_", 10 characters
237                item=StringFromList(ii, ctrlList ,";")
238                nameStr=item[0,9]
239                if(cmpstr(nameStr,"VCALCCtrl_")==0)
240                        onTab = str2num(item[10])                       //[10] is a number
241                        ControlInfo $item
242                        switch(abs(V_flag))     
243                                case 1:
244                                        Button $item,disable=(tab!=onTab)
245                                        break
246                                case 2:
247                                        CheckBox $item,disable=(tab!=onTab)
248                                        break
249                                case 3:
250                                        PopupMenu $item,disable=(tab!=onTab)
251                                        break
252                                case 4:
253                                        ValDisplay $item,disable=(tab!=onTab)
254                                        break
255                                case 5:
256                                        SetVariable $item,disable=(tab!=onTab)
257                                        break
258                                case 7:
259                                        Slider $item,disable=(tab!=onTab)
260                                        break
261                                case 9:
262                                        GroupBox $item,disable=(tab!=onTab)
263                                        break
264                                case 10:       
265                                        TitleBox $item,disable=(tab!=onTab)
266                                        break
267                                // add more items to the switch if different control types are used
268                        endswitch
269                endif
270        endfor
271       
272
273       
274        return(0)
275End
276
277Function Front2DQ_Log_CheckProc(cba) : CheckBoxControl
278        STRUCT WMCheckboxAction &cba
279
280        switch( cba.eventCode )
281                case 2: // mouse up
282                        Variable checked = cba.checked
283                       
284                        Execute "FrontPanels_AsQ()"
285                        Execute "MiddlePanels_AsQ()"
286                        Execute "BackPanels_AsQ()"
287                       
288                        break
289                case -1: // control being killed
290                        break
291        endswitch
292
293        return 0
294End
295
296//
297// recalculate the detectors with a preset model function
298//
299Function V_SimModelFunc_PopProc(ctrlName,popNum,popStr) : PopupMenuControl
300        String ctrlName
301        Variable popNum // which item is currently selected (1-based)
302        String popStr           // contents of current popup item as string
303
304        Recalculate_AllDetectors()
305       
306        return(0)       
307End
308
309
310//
311// recalculate the I(q) binning. no need to adjust model function or views
312// just rebin
313//
314Function V_RebinIQ_PopProc(ctrlName,popNum,popStr) : PopupMenuControl
315        String ctrlName
316        Variable popNum // which item is currently selected (1-based)
317        String popStr           // contents of current popup item as string
318
319        // do the q-binning for front panels to get I(Q)
320        Execute "BinAllFrontPanels()"
321        Execute "Front_IQ_Graph()"
322
323        // do the q-binning for middle panels to get I(Q)
324        Execute "BinAllMiddlePanels()"
325        Execute "Middle_IQ_Graph()"
326       
327        // do the q-binning for the back panel to get I(Q)
328        Execute "BinAllBackPanels()"
329        Execute "Back_IQ_Graph()"
330       
331        return(0)       
332End
333
334
335
336       
337       
338//
339// setVar for the wavelength
340//
341Function V_Lambda_SetVarProc(sva) : SetVariableControl
342        STRUCT WMSetVariableAction &sva
343
344        switch( sva.eventCode )
345                case 1: // mouse up
346                case 2: // Enter key
347                case 3: // Live update
348                        Variable dval = sva.dval
349                        String sval = sva.sval
350                       
351//                      // don't need to recalculate the views, but need to recalculate the detectors
352//                      fPlotBackPanels()
353//                      fPlotMiddlePanels()
354//                      fPlotFrontPanels()
355
356                        Recalculate_AllDetectors()             
357                               
358                        break
359                case -1: // control being killed
360                        break
361        endswitch
362
363        return 0
364End
365
366//
367// setVar for the simulation monitor count
368//
369Function V_SimImon_SetVarProc(sva) : SetVariableControl
370        STRUCT WMSetVariableAction &sva
371
372        switch( sva.eventCode )
373                case 1: // mouse up
374                case 2: // Enter key
375                case 3: // Live update
376                        Variable dval = sva.dval
377                        String sval = sva.sval
378
379                        Recalculate_AllDetectors()             
380                               
381                        break
382                case -1: // control being killed
383                        break
384        endswitch
385
386        return 0
387End
388
389
390// setVar for the range (in degrees) for the FrontView plot of the detectors
391//
392Function FrontView_Range_SetVarProc(sva) : SetVariableControl
393        STRUCT WMSetVariableAction &sva
394
395        switch( sva.eventCode )
396                case 1: // mouse up
397                case 2: // Enter key
398                case 3: // Live update
399                        Variable dval = sva.dval
400                        String sval = sva.sval
401                       
402                        FrontView_1x()
403                       
404                        break
405                case -1: // control being killed
406                        break
407        endswitch
408
409        return 0
410End
411
412// setVar for the range (in Q) for the FrontView plot of the detectors
413//
414// TODO: this assumes that everything (the data) is already updated - this only updates the plot range
415Function Front2DQ_Range_SetVarProc(sva) : SetVariableControl
416        STRUCT WMSetVariableAction &sva
417
418        switch( sva.eventCode )
419                case 1: // mouse up
420                case 2: // Enter key
421                case 3: // Live update
422                        Variable dval = sva.dval
423                        String sval = sva.sval
424                       
425                        SetAxis/W=VCALC#Panels_Q left -dval,dval
426                        SetAxis/W=VCALC#Panels_Q bottom -dval,dval
427                       
428//                      FrontPanels_AsQ()
429                       
430                        break
431                case -1: // control being killed
432                        break
433        endswitch
434
435        return 0
436End
437
438// SDD for the Front detector. triggers a recalculation
439// of the intensity and a redraw of the banks
440//
441Function V_FDet_SDD_SetVarProc(sva) : SetVariableControl
442        STRUCT WMSetVariableAction &sva
443
444        switch( sva.eventCode )
445                case 1: // mouse up
446                case 2: // Enter key
447                case 3: // Live update
448                        Variable dval = sva.dval
449                        String sval = sva.sval
450                       
451//                      Variable LR_sep,TB_sep
452//                      // don't know if LR or TB called, so get the explicit values
453//                      //
454//                      ControlInfo VCALCCtrl_2a
455//                      LR_sep = V_Value
456//                      ControlInfo VCALCCtrl_2b
457//                      TB_sep = V_Value
458//                     
459//                      UpdateFrontDetector(LR_sep,TB_sep)
460                       
461                        UpdateSideView()
462                        UpdateTopView()
463                        FrontView_1x()
464                       
465                        fPlotFrontPanels()
466                       
467                        break
468                case -1: // control being killed
469                        break
470        endswitch
471
472        return 0
473End
474
475// SDD for the Middle detector. triggers a recalculation
476// of the intensity and a redraw of the banks
477//
478Function V_MDet_SDD_SetVarProc(sva) : SetVariableControl
479        STRUCT WMSetVariableAction &sva
480
481        switch( sva.eventCode )
482                case 1: // mouse up
483                case 2: // Enter key
484                case 3: // Live update
485                        Variable dval = sva.dval
486                        String sval = sva.sval
487                       
488//                      Variable LR_sep,TB_sep
489//                      // don't know if LR or TB called, so get the explicit values
490//                      //
491//                      ControlInfo VCALCCtrl_2a
492//                      LR_sep = V_Value
493//                      ControlInfo VCALCCtrl_2b
494//                      TB_sep = V_Value
495//                     
496//                      UpdateFrontDetector(LR_sep,TB_sep)
497                       
498                        UpdateSideView()
499                        UpdateTopView()
500                        FrontView_1x()
501                       
502                        fPlotMiddlePanels()
503                       
504                        break
505                case -1: // control being killed
506                        break
507        endswitch
508
509        return 0
510End
511
512// SDD for the Back detector. triggers a recalculation
513// of the intensity and a redraw of the banks
514//
515Function V_BDet_SDD_SetVarProc(sva) : SetVariableControl
516        STRUCT WMSetVariableAction &sva
517
518        switch( sva.eventCode )
519                case 1: // mouse up
520                case 2: // Enter key
521                case 3: // Live update
522                        Variable dval = sva.dval
523                        String sval = sva.sval
524                       
525//                      Variable LR_sep,TB_sep
526//                      // don't know if LR or TB called, so get the explicit values
527//                      //
528//                      ControlInfo VCALCCtrl_2a
529//                      LR_sep = V_Value
530//                      ControlInfo VCALCCtrl_2b
531//                      TB_sep = V_Value
532//                     
533//                      UpdateFrontDetector(LR_sep,TB_sep)
534                       
535                        UpdateSideView()
536                        UpdateTopView()
537                        FrontView_1x()
538                       
539                        fPlotBackPanels()
540                       
541                        break
542                case -1: // control being killed
543                        break
544        endswitch
545
546        return 0
547End
548
549// separation, either LR or TB of the front detector. triggers a recalculation
550// of the intensity and a redraw of the banks
551//
552Function V_FDet_LR_SetVarProc(sva) : SetVariableControl
553        STRUCT WMSetVariableAction &sva
554
555        switch( sva.eventCode )
556                case 1: // mouse up
557                case 2: // Enter key
558                case 3: // Live update
559                        Variable dval = sva.dval
560                        String sval = sva.sval
561                       
562                        Variable LR_sep,TB_sep
563                        // don't know if LR or TB called, so get the explicit values
564                        //
565                        ControlInfo VCALCCtrl_2a
566                        LR_sep = V_Value
567                        ControlInfo VCALCCtrl_2b
568                        TB_sep = V_Value
569                       
570//                      UpdateFrontDetector(LR_sep,TB_sep)
571                       
572                        UpdateSideView()
573                        UpdateTopView()
574                        FrontView_1x()
575                       
576                        fPlotFrontPanels()
577                       
578                        break
579                case -1: // control being killed
580                        break
581        endswitch
582
583        return 0
584End
585
586
587// separation, either LR or TB of the middle detector. triggers a recalculation
588// of the intensity and a redraw of the banks
589//
590Function V_MDet_LR_SetVarProc(sva) : SetVariableControl
591        STRUCT WMSetVariableAction &sva
592
593        switch( sva.eventCode )
594                case 1: // mouse up
595                case 2: // Enter key
596                case 3: // Live update
597                        Variable dval = sva.dval
598                        String sval = sva.sval
599                       
600                        Variable LR_sep,TB_sep
601                        // don't know if LR or TB called, so get the explicit values
602                        //
603                        ControlInfo VCALCCtrl_3a
604                        LR_sep = V_Value
605                        ControlInfo VCALCCtrl_3b
606                        TB_sep = V_Value
607                       
608//                      UpdateMiddleDetector(LR_sep,TB_sep)
609                       
610                        UpdateSideView()
611                        UpdateTopView()
612                        FrontView_1x()
613                       
614                        fPlotMiddlePanels()
615                       
616                        break
617                case -1: // control being killed
618                        break
619        endswitch
620
621        return 0
622End
623
624
625
626
627// this all needs to be fixed and updated - it is all pertinent to SANS (SASCALC)
628// and not yet specific to VSANS
629//
630// -- all of the simulation stuff will need to be re-thought
631// -- all of the integersRead, data, etc. will need to be re-thought...
632// -- but the space needs to be allocated.
633// -- parameters and constants need to be defined in their own space
634//
635//
636Proc V_Initialize_Space()
637//
638        NewDataFolder/O root:Packages
639        NewDataFolder/O root:Packages:NIST
640        NewDataFolder/O root:Packages:NIST:VSANS
641        NewDataFolder/O root:Packages:NIST:VSANS:VCALC
642        NewDataFolder/O root:Packages:NIST:VSANS:VCALC:Front
643        NewDataFolder/O root:Packages:NIST:VSANS:VCALC:Middle
644        NewDataFolder/O root:Packages:NIST:VSANS:VCALC:Back
645       
646       
647        SetDataFolder root:Packages:NIST:VSANS:VCALC
648       
649        Make/O/D/N=2 fpx1,fpy1,mpx1,mpy1                // for display of the detector panels
650        Make/O/D/N=2 fv_degX,fv_degY
651
652// to fill in:
653// values for always-visible items
654        String/G gPresetPopStr = "Low Q;High Q;Converging Pinholes;Narrow Slit Aperture;Converging Slits;White Beam;Polarizer;"
655        String/G gBinTypeStr = "One;Two;Four;Slit Mode;"
656
657///// FRONT DETECTOR BANKS
658// dimensions for the detector banks (then get them in the drawing functions)
659        Variable/G gFront_LR_w = 384            //front bank, nominal LR panel width (mm)
660        Variable/G gFront_LR_h = 1000
661        Variable/G gFront_TB_w = 500
662        Variable/G gFront_TB_h = 384
663
664// SDD offset of T/B (decide on units??)
665        Variable/G gFront_SDDOffset = 300                       // (mm)
666       
667// detector resolution (xy for each bank!)
668        Variable/G gFront_L_pixelX = 0.8                        // (cm)         these tubes are vertical
669        Variable/G gFront_L_pixelY = 0.4                        // (cm)
670        Variable/G gFront_R_pixelX = 0.8                        // (cm)
671        Variable/G gFront_R_pixelY = 0.4                        // (cm)
672       
673        Variable/G gFront_T_pixelX = 0.4                        // (cm)         these tubes are horizontal
674        Variable/G gFront_T_pixelY = 0.8                        // (cm)
675        Variable/G gFront_B_pixelX = 0.4                        // (cm)
676        Variable/G gFront_B_pixelY = 0.8                        // (cm)
677       
678// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here)
679// allocate the detector arrays (+2D Q)
680
681
682///// MIDDLE DETECTOR BANKS
683        Variable/G gMiddle_LR_w = 384           //middle bank, nominal LR panel width (mm)
684        Variable/G gMiddle_LR_h = 1000
685        Variable/G gMiddle_TB_w = 500
686        Variable/G gMiddle_TB_h = 384
687// SDD offset of T/B (decide on units??)
688        Variable/G gMiddle_SDDOffset = 300                      // (mm)
689       
690// detector resolution (xy for each bank!)
691        Variable/G gMiddle_L_pixelX = 0.8                       // (cm)         these tubes are vertical
692        Variable/G gMiddle_L_pixelY = 0.4                       // (cm)
693        Variable/G gMiddle_R_pixelX = 0.8                       // (cm)
694        Variable/G gMiddle_R_pixelY = 0.4                       // (cm)
695       
696        Variable/G gMiddle_T_pixelX = 0.4                       // (cm)         these tubes are horizontal
697        Variable/G gMiddle_T_pixelY = 0.8                       // (cm)
698        Variable/G gMiddle_B_pixelX = 0.4                       // (cm)
699        Variable/G gMiddle_B_pixelY = 0.8                       // (cm)
700
701
702
703//// BACK DETECTOR
704        Variable/G gBack_w = 320                                //w and h for the back detector, (mm)
705        Variable/G gBack_h = 320
706        Variable/G gBack_pixelX = 0.1           // 1mm resolution (units of cm here)
707        Variable/G gBack_pixelY = 0.1
708
709
710// Generate all of the waves used for the detector and the q values
711//
712// TODO: the detector dimensions need to be properly defined here...
713// FRONT
714        SetDataFolder root:Packages:NIST:VSANS:VCALC:Front
715
716        Make/O/D/N=(48,256) det_FL,det_FR
717        Make/O/D/N=(128,48) det_FT,det_FB
718        Duplicate/O det_FL qTot_FL,qx_FL,qy_FL,qz_FL
719        Duplicate/O det_FR qTot_FR,qx_FR,qy_FR,qz_FR
720        Duplicate/O det_FT qTot_FT,qx_FT,qy_FT,qz_FT
721        Duplicate/O det_FB qTot_FB,qx_FB,qy_FB,qz_FB
722
723//MIDDLE
724// TODO: the detector dimensions need to be properly defined here...
725        SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle
726
727        Make/O/D/N=(48,256) det_ML,det_MR
728        Make/O/D/N=(128,48) det_MT,det_MB
729        Duplicate/O det_ML qTot_ML,qx_ML,qy_ML,qz_ML
730        Duplicate/O det_MR qTot_MR,qx_MR,qy_MR,qz_MR
731        Duplicate/O det_MT qTot_MT,qx_MT,qy_MT,qz_MT
732        Duplicate/O det_MB qTot_MB,qx_MB,qy_MB,qz_MB
733
734// BACK
735// TODO: the detector dimensions need to be properly defined here...
736        SetDataFolder root:Packages:NIST:VSANS:VCALC:Back
737       
738        Make/O/D/N=(320,320) det_B
739        Duplicate/O det_B qTot_B,qx_B,qy_B,qz_B
740
741
742////////////    FOR THE PANEL
743
744        SetDataFolder root:Packages:NIST:VSANS:VCALC
745
746// popup strings for each tab (then use the string in the panel)
747// tab 0 - collimation
748        String/G gMonochromatorType = "Velocity Selector;Graphite;White Beam;"
749        String/G gSourceShape = "circular;rectangular;converging pinholes;converging slits;"
750        String/G gSourceDiam = "1.0 cm;2.0 cm;5.0 cm;"
751        String/G gDeltaLambda = "0.10;0.20;0.30;"
752       
753// tab 1 - sample conditions
754        String/G gTableLocation = "Changer;Stage;"
755        String/G gSampleApertureShape = "circular;rectangular;converging pinholes;converging slits;"
756        String/G gSampleApertureDiam = "0.5;1.0;1.5;2.0;"
757       
758// tab 2
759
760// tab 3
761
762// tab 4 - back detector
763        String/G gBackDetType = "1D;2D;"
764
765// tab 5
766        String/G gModelFunctionType = "Debye;Sphere;Big Debye;Big Sphere;AgBeh;Vycor;Empty Cell;Blocked Beam;"
767
768
769////////////////////
770
771
772
773// limits for detector travel? or are these limits part of the panel, hard-wired there
774
775
776//      // for the panel
777
778        Variable/G gNg=0
779//      Variable/G gOffset=0
780        Variable/G gSamAp=1.27          //samAp diameter in cm
781        String/G gSourceApString = "1.43 cm;2.54 cm;3.81 cm;"
782        String/G gApPopStr = "1/16\";1/8\";3/16\";1/4\";5/16\";3/8\";7/16\";1/2\";9/16\";5/8\";11/16\";3/4\";other;"
783        Variable/G gSamApOther = 10             //non-standard aperture diameter, in mm
784        Variable/G gUsingLenses = 0             //0=no lenses, 1=lenses(or prisms)
785//      Variable/G gModelOffsetFactor = 1
786//     
787//      // for the MC simulation
788//      Variable/G doSimulation =0              // == 1 if 1D simulated data, 0 if other from the checkbox
789//      Variable/G gRanDateTime=datetime
790//      Variable/G gImon = 10000
791//      Variable/G gThick = 0.1
792//      Variable/G gSig_incoh = 0.1
793//      String/G gFuncStr = ""
794//      Variable/G gR2 = 2.54/2
795//      Variable/G gSamTrans=0.8                        //for 1D, default value
796//      Variable/G gCntTime = 300
797//      Variable/G gDoMonteCarlo = 0
798//      Variable/G gUse_MC_XOP = 1                              //set to zero to use Igor code
799//      Variable/G gBeamStopIn = 1                      //set to zero for beamstop out (transmission)
800//      Variable/G gRawCounts = 0
801//      Variable/G gSaveIndex = 100
802//      String/G gSavePrefix = "SIMUL"
803//      Variable/G gAutoSaveIndex = 100                 //a way to set the index for automated saves
804//      String/G gAutoSaveLabel = ""                            //a way to set the "sample" label for automated saves
805//      Make/O/D/N=10 results = 0
806//      Make/O/T/N=10 results_desc = {"total X-section (1/cm)","SAS X-section (1/cm)","number that scatter","number that reach detector","avg # times scattered","fraction single coherent","fraction multiple coherent","fraction multiple scattered","fraction transmitted","detector counts w/beamstop"}
807//
808//      Variable/G g_1DTotCts = 0                       //summed counts (simulated)
809//      Variable/G g_1DEstDetCR = 0             // estimated detector count rate
810//      Variable/G g_1DFracScatt = 0            // fraction of beam captured on detector
811//      Variable/G g_1DEstTrans = 0             // estimated transmission of sample
812//      Variable/G g_1D_DoABS = 1
813//      Variable/G g_1D_AddNoise = 1
814//      Variable/G g_MultScattFraction=0
815//      Variable/G g_detectorEff=0.75                   //average value for most wavelengths
816//      Variable/G g_actSimTime = 0                             //for the save
817//      Variable/G g_SimTimeWarn = 10                   //manually set to a very large value for scripted operation
818//     
819
820//     
821//      //for the fake dependency
822//      Variable/G gTouched=0
823//      Variable/G gCalculate=0
824//      //for plotting
825//      Variable/G gFreezeCount=1               //start the count at 1 to keep Jeff happy
826//      Variable/G gDoTraceOffset=0             // (1==Yes, offset 2^n), 0==turn off the offset
827
828
829
830//
831// instrument - specific dimensions
832//
833
834//     
835        Variable/G gInstrument = 6              // files (may) be tagged SA6 as the 6th SANS instrument
836        Variable/G gS12 = 54.8
837//      Variable/G d_det = 0.5
838//      Variable/G a_pixel = 0.5
839//      Variable/G del_r = 0.5
840//      Variable/G det_width = 64.0
841        Variable/G gLambda_t = 5.50
842        Variable/G gL2r_lower = 132.3
843        Variable/G gL2r_upper =  1317
844        Variable/G gLambda_lower = 2.5
845        Variable/G gLambda_upper = 20.0
846        Variable/G gD_upper = 25.0
847        Variable/G gBs_factor = 1.05
848        Variable/G gT1 = 0.63
849        Variable/G gT2 = 1.0
850        Variable/G gT3 = 0.75
851        Variable/G gL_gap = 100.0
852        Variable/G gGuide_width = 6.0
853        Variable/G gIdmax = 100.0
854
855//
856//      //new values, from 11/2009 --- BeamFluxReport_2009.ifn
857        Variable/G gPhi_0 = 2.42e13
858        Variable/G gB = 0.0
859        Variable/G gC = -0.0243
860        Variable/G gGuide_loss = 0.924
861//     
862//      //fwhm values (new variables) (+3, 0, -3, calibrated 2009)
863        Variable/G gFwhm_narrow = 0.109
864        Variable/G gFwhm_mid = 0.125
865        Variable/G gFwhm_wide = 0.236
866//     
867//      //source apertures (cm)
868        Variable/G gA1_0_0 = 1.43
869        Variable/G gA1_0_1 = 2.54
870        Variable/G gA1_0_2 = 3.81
871        Variable/G gA1_7_0 = 2.5                        // after the polarizer         
872        Variable/G gA1_7_1 = 5.0
873        Variable/G gA1_7_1 = 0.95               //
874        Variable/G gA1_def = 5.00
875//     
876        SetDataFolder root:
877end
Note: See TracBrowser for help on using the repository browser.