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

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

more additions to the raw data display panel

File size: 27.4 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        NewDataFolder/O root:Packages:NIST:VSANS:RawVSANS
646       
647       
648        SetDataFolder root:Packages:NIST:VSANS:VCALC
649       
650
651///// FRONT DETECTOR BANKS
652// dimensions for the detector banks (then get them in the drawing functions)
653        Variable/G gFront_LR_w = 384            //front bank, nominal LR panel width (mm)
654        Variable/G gFront_LR_h = 1000
655        Variable/G gFront_TB_w = 500
656        Variable/G gFront_TB_h = 384
657
658// SDD offset of T/B (decide on units??)
659        Variable/G gFront_SDDOffset = 300                       // (mm)
660       
661// detector resolution (xy for each bank!)
662        Variable/G gFront_L_pixelX = 0.84                       // (cm)         these tubes are vertical 8.4 mm spacing (JGB 2/2106)
663        Variable/G gFront_L_pixelY = 0.8                        // (cm)         //!! now 8 mm, since nPix=128, rather than 256
664        Variable/G gFront_R_pixelX = 0.84                       // (cm)
665        Variable/G gFront_R_pixelY = 0.8                        // (cm)
666       
667        Variable/G gFront_T_pixelX = 0.4                        // (cm)         these tubes are horizontal
668        Variable/G gFront_T_pixelY = 0.84                       // (cm)
669        Variable/G gFront_B_pixelX = 0.4                        // (cm)
670        Variable/G gFront_B_pixelY = 0.84                       // (cm)
671       
672// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here)
673        Variable/G gFront_L_nPix_X = 48         // == number of tubes
674        Variable/G gFront_L_nPix_Y = 128                // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015)
675        Variable/G gFront_R_nPix_X = 48         // == number of tubes
676        Variable/G gFront_R_nPix_Y = 128                // == pixels in vertical direction
677        Variable/G gFront_T_nPix_X = 128                // == pixels in horizontal direction
678        Variable/G gFront_T_nPix_Y = 48         // == number of tubes
679        Variable/G gFront_B_nPix_X = 128                // == pixels in horizontal direction
680        Variable/G gFront_B_nPix_Y = 48         // == number of tubes
681
682
683
684
685///// MIDDLE DETECTOR BANKS
686        Variable/G gMiddle_LR_w = 384           //middle bank, nominal LR panel width (mm)
687        Variable/G gMiddle_LR_h = 1000
688        Variable/G gMiddle_TB_w = 500
689        Variable/G gMiddle_TB_h = 384
690// SDD offset of T/B (decide on units??)
691        Variable/G gMiddle_SDDOffset = 300                      // (mm)
692       
693// detector resolution (xy for each bank!)
694        Variable/G gMiddle_L_pixelX = 0.8       4               // (cm)         these tubes are vertical
695        Variable/G gMiddle_L_pixelY = 0.8               // (cm)
696        Variable/G gMiddle_R_pixelX = 0.8       4               // (cm)
697        Variable/G gMiddle_R_pixelY = 0.8               // (cm)
698       
699        Variable/G gMiddle_T_pixelX = 0.4                       // (cm)         these tubes are horizontal
700        Variable/G gMiddle_T_pixelY = 0.84                      // (cm)
701        Variable/G gMiddle_B_pixelX = 0.4                       // (cm)
702        Variable/G gMiddle_B_pixelY = 0.8       4               // (cm)
703
704// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here)
705        Variable/G gMiddle_L_nPix_X = 48                // == number of tubes
706        Variable/G gMiddle_L_nPix_Y = 128               // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015)
707        Variable/G gMiddle_R_nPix_X = 48                // == number of tubes
708        Variable/G gMiddle_R_nPix_Y = 128               // == pixels in vertical direction
709        Variable/G gMiddle_T_nPix_X = 128               // == pixels in horizontal direction
710        Variable/G gMiddle_T_nPix_Y = 48                // == number of tubes
711        Variable/G gMiddle_B_nPix_X = 128               // == pixels in horizontal direction
712        Variable/G gMiddle_B_nPix_Y = 48                // == number of tubes
713
714
715
716
717
718//// BACK DETECTOR
719        Variable/G gBack_w = 320                                //w and h for the back detector, (mm)
720        Variable/G gBack_h = 320
721        Variable/G gBack_pixelX = 0.1           // 1mm resolution (units of cm here)
722        Variable/G gBack_pixelY = 0.1
723        Variable/G gBack_nPix_X = 320           // detector pixels in x-direction
724        Variable/G gBack_nPix_Y = 320   
725
726
727// Generate all of the waves used for the detector and the q values
728//
729// TODO: the detector dimensions need to be properly defined here...
730// FRONT
731        SetDataFolder root:Packages:NIST:VSANS:VCALC:Front
732
733        Make/O/D/N=(::gFront_L_nPix_X,::gFront_L_nPix_Y) det_FL
734        Make/O/D/N=(::gFront_R_nPix_X,::gFront_R_nPix_Y) det_FR
735        Make/O/D/N=(::gFront_T_nPix_X,::gFront_T_nPix_Y) det_FT
736        Make/O/D/N=(::gFront_B_nPix_X,::gFront_B_nPix_Y) det_FB
737        Duplicate/O det_FL qTot_FL,qx_FL,qy_FL,qz_FL
738        Duplicate/O det_FR qTot_FR,qx_FR,qy_FR,qz_FR
739        Duplicate/O det_FT qTot_FT,qx_FT,qy_FT,qz_FT
740        Duplicate/O det_FB qTot_FB,qx_FB,qy_FB,qz_FB
741
742//MIDDLE
743// TODO: the detector dimensions need to be properly defined here...
744        SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle
745
746        Make/O/D/N=(::gMiddle_L_nPix_X,::gMiddle_L_nPix_Y) det_ML
747        Make/O/D/N=(::gMiddle_R_nPix_X,::gMiddle_R_nPix_Y) det_MR
748        Make/O/D/N=(::gMiddle_T_nPix_X,::gMiddle_T_nPix_Y) det_MT
749        Make/O/D/N=(::gMiddle_B_nPix_X,::gMiddle_B_nPix_Y) det_MB
750        Duplicate/O det_ML qTot_ML,qx_ML,qy_ML,qz_ML
751        Duplicate/O det_MR qTot_MR,qx_MR,qy_MR,qz_MR
752        Duplicate/O det_MT qTot_MT,qx_MT,qy_MT,qz_MT
753        Duplicate/O det_MB qTot_MB,qx_MB,qy_MB,qz_MB
754
755// BACK
756// TODO: the detector dimensions need to be properly defined here...
757        SetDataFolder root:Packages:NIST:VSANS:VCALC:Back
758       
759        Make/O/D/N=(::gBack_nPix_X,::gBack_nPix_Y) det_B
760        Duplicate/O det_B qTot_B,qx_B,qy_B,qz_B
761
762
763
764
765////////////    FOR THE PANEL
766
767        SetDataFolder root:Packages:NIST:VSANS:VCALC
768
769        Make/O/D/N=2 fpx1,fpy1,mpx1,mpy1                // for display of the detector panels
770        Make/O/D/N=2 fv_degX,fv_degY
771
772
773// to fill in:
774// values for always-visible items
775        String/G gPresetPopStr = "Low Q;High Q;Converging Pinholes;Narrow Slit Aperture;White Beam;Polarizer;"
776        String/G gBinTypeStr = "One;Two;Four;Slit Mode;"
777
778
779
780
781// popup strings for each tab (then use the string in the panel)
782// tab 0 - collimation
783        String/G gMonochromatorType = "Velocity Selector;Graphite;White Beam;"
784        String/G gSourceShape = "circular;rectangular;converging pinholes;"
785        String/G gSourceDiam = "1.0 cm;2.0 cm;5.0 cm;"
786        String/G gDeltaLambda = "0.10;0.20;0.30;"
787       
788// tab 1 - sample conditions
789        String/G gTableLocation = "Changer;Stage;"
790        String/G gSampleApertureShape = "circular;rectangular;converging pinholes;"
791        String/G gSampleApertureDiam = "0.5;1.0;1.5;2.0;"
792       
793// tab 2
794
795// tab 3
796
797// tab 4 - back detector
798        String/G gBackDetType = "1D;2D;"
799
800// tab 5
801        String/G gModelFunctionType = "Debye;Sphere;Big Debye;Big Sphere;AgBeh;Vycor;Empty Cell;Blocked Beam;"
802
803
804////////////////////
805
806
807
808// limits for detector travel? or are these limits part of the panel, hard-wired there
809
810
811//      // for the panel
812
813        Variable/G gNg=0
814//      Variable/G gOffset=0
815        Variable/G gSamAp=1.27          //samAp diameter in cm
816        String/G gSourceApString = "1.43 cm;2.54 cm;3.81 cm;"
817        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;"
818        Variable/G gSamApOther = 10             //non-standard aperture diameter, in mm
819        Variable/G gUsingLenses = 0             //0=no lenses, 1=lenses(or prisms)
820//      Variable/G gModelOffsetFactor = 1
821//     
822//      // for the MC simulation
823//      Variable/G doSimulation =0              // == 1 if 1D simulated data, 0 if other from the checkbox
824//      Variable/G gRanDateTime=datetime
825//      Variable/G gImon = 10000
826//      Variable/G gThick = 0.1
827//      Variable/G gSig_incoh = 0.1
828//      String/G gFuncStr = ""
829//      Variable/G gR2 = 2.54/2
830//      Variable/G gSamTrans=0.8                        //for 1D, default value
831//      Variable/G gCntTime = 300
832//      Variable/G gDoMonteCarlo = 0
833//      Variable/G gUse_MC_XOP = 1                              //set to zero to use Igor code
834//      Variable/G gBeamStopIn = 1                      //set to zero for beamstop out (transmission)
835//      Variable/G gRawCounts = 0
836//      Variable/G gSaveIndex = 100
837//      String/G gSavePrefix = "SIMUL"
838//      Variable/G gAutoSaveIndex = 100                 //a way to set the index for automated saves
839//      String/G gAutoSaveLabel = ""                            //a way to set the "sample" label for automated saves
840//      Make/O/D/N=10 results = 0
841//      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"}
842//
843//      Variable/G g_1DTotCts = 0                       //summed counts (simulated)
844//      Variable/G g_1DEstDetCR = 0             // estimated detector count rate
845//      Variable/G g_1DFracScatt = 0            // fraction of beam captured on detector
846//      Variable/G g_1DEstTrans = 0             // estimated transmission of sample
847//      Variable/G g_1D_DoABS = 1
848//      Variable/G g_1D_AddNoise = 1
849//      Variable/G g_MultScattFraction=0
850//      Variable/G g_detectorEff=0.75                   //average value for most wavelengths
851//      Variable/G g_actSimTime = 0                             //for the save
852//      Variable/G g_SimTimeWarn = 10                   //manually set to a very large value for scripted operation
853//     
854
855//     
856//      //for the fake dependency
857//      Variable/G gTouched=0
858//      Variable/G gCalculate=0
859//      //for plotting
860//      Variable/G gFreezeCount=1               //start the count at 1 to keep Jeff happy
861//      Variable/G gDoTraceOffset=0             // (1==Yes, offset 2^n), 0==turn off the offset
862
863
864
865//
866// instrument - specific dimensions
867//
868
869//     
870        Variable/G gInstrument = 6              // files (may) be tagged SA6 as the 6th SANS instrument
871        Variable/G gS12 = 54.8
872//      Variable/G d_det = 0.5
873//      Variable/G a_pixel = 0.5
874//      Variable/G del_r = 0.5
875//      Variable/G det_width = 64.0
876        Variable/G gLambda_t = 5.50
877        Variable/G gL2r_lower = 132.3
878        Variable/G gL2r_upper =  1317
879        Variable/G gLambda_lower = 2.5
880        Variable/G gLambda_upper = 20.0
881        Variable/G gD_upper = 25.0
882        Variable/G gBs_factor = 1.05
883        Variable/G gT1 = 0.63
884        Variable/G gT2 = 1.0
885        Variable/G gT3 = 0.75
886        Variable/G gL_gap = 100.0
887        Variable/G gGuide_width = 6.0
888        Variable/G gIdmax = 100.0
889
890//
891//      //new values, from 11/2009 --- BeamFluxReport_2009.ifn
892        Variable/G gPhi_0 = 2.42e13
893        Variable/G gB = 0.0
894        Variable/G gC = -0.0243
895        Variable/G gGuide_loss = 0.924
896//     
897//      //fwhm values (new variables) (+3, 0, -3, calibrated 2009)
898        Variable/G gFwhm_narrow = 0.109
899        Variable/G gFwhm_mid = 0.125
900        Variable/G gFwhm_wide = 0.236
901//     
902//      //source apertures (cm)
903        Variable/G gA1_0_0 = 1.43
904        Variable/G gA1_0_1 = 2.54
905        Variable/G gA1_0_2 = 3.81
906        Variable/G gA1_7_0 = 2.5                        // after the polarizer         
907        Variable/G gA1_7_1 = 5.0
908        Variable/G gA1_7_1 = 0.95               //
909        Variable/G gA1_def = 5.00
910//     
911        SetDataFolder root:
912end
Note: See TracBrowser for help on using the repository browser.