Ignore:
Timestamp:
Mar 7, 2016 11:55:46 AM (7 years ago)
Author:
srkline
Message:

CHANGES to SANS:
Now allow 4 files to be combined in one step. This required modification of one routine in NIST_XML to allow an extra file name, and significant addition to the NSORT panel to allow an (optional) 4th data file. behaviors are still the same as before with 2, 3, or 4 sets being allowed. The "combine table" also allows up to 4 files to be combined (can be mixed, 2, 3, 4 all allowed).

More addtions to VSANS present as well, not specific changes, but in-progress changes to the beam center handling and ciombining data to 1D.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_BeamCenter.ipf

    r982 r983  
    3434//      ShowTools/A 
    3535         
    36         PopupMenu popup_0,pos={20,20},size={109,20},proc=SetDetPanelPopMenuProc,title="Detector Panel" 
     36        PopupMenu popup_0,pos={20,50},size={109,20},proc=SetDetPanelPopMenuProc,title="Detector Panel" 
    3737        PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;MR;ML;MT;MB;B;\"" 
    3838        PopupMenu popup_1,pos={200,20},size={157,20},proc=DetModelPopMenuProc,title="Model Function" 
    3939        PopupMenu popup_1,mode=1,popvalue="BroadPeak",value= #"\"BroadPeak;other;\"" 
    40          
     40        PopupMenu popup_2,pos={20,20},size={109,20},title="Data Source"//,proc=SetFldrPopMenuProc 
     41        PopupMenu popup_2,mode=1,popvalue="VCALC",value= #"\"RAW;SAM;VCALC;\"" 
     42                 
    4143        Button button_0,pos={486,20},size={80,20},proc=DetFitGuessButtonProc,title="Guess" 
    4244        Button button_1,pos={615,20},size={80,20},proc=DetFitButtonProc,title="Do Fit" 
    4345        Button button_2,pos={744,20},size={80,20},proc=DetFitHelpButtonProc,title="Help" 
     46        Button button_3,pos={615,400},size={110,20},proc=WriteCtrButtonProc,title="Write Centers" 
     47        Button button_4,pos={730,400},size={110,20},proc=CtrTableButtonProc,title="Ctr table" 
     48        Button button_5,pos={730,440},size={110,20},proc=WriteCtrTableButtonProc,title="Write table" 
     49 
    4450 
    4551 
     
    7884 
    7985// edit the fit coefficients     
    80         Edit/W=(500,80,880,350)/HOST=#  parameters_PeakPix2D,coef_PeakPix2D 
     86        Edit/W=(550,80,880,370)/HOST=#  parameters_PeakPix2D,coef_PeakPix2D 
    8187        ModifyTable width(Point)=0 
    8288        ModifyTable width(parameters_PeakPix2D)=120 
     
    8995 
    9096 
    91  
    92  
     97// 
     98// function to choose which detector panel to display, and then to actually display it 
     99// 
    93100Function SetDetPanelPopMenuProc(pa) : PopupMenuControl 
    94101        STRUCT WMPopupAction &pa 
     
    126133 
    127134 
     135// TODO - currently is hard-wired for the simulation path! 
     136//     need to make it more generic, especially for RAW data 
     137// 
     138// -- need to adjust the size of the image subwindows to keep the model 
     139//    calculation from spillon over onto the table (maybe just move the table) 
     140// -- need to do something for panel "B". currently ignored 
     141// -- currently the pixel sizes for "real" data is incorrect in the file 
     142//     and this is why the plots are incorrectly sized 
     143// 
    128144// draw the selected panel and the model calculation, adjusting for the  
    129145// orientation of the panel and the number of pixels, and pixel sizes 
     
    132148         
    133149        // from the selection, find the path to the data 
    134         // TODO - currently is hard-wired for the simulation path! 
    135         //     need to make it more generic, especially for RAW data 
     150 
    136151 
    137152        Variable xDim,yDim 
     
    139154        Variable height, width 
    140155        Variable left2,top2,right2,bottom2 
     156        Variable nPix_X,nPix_Y,pixSize_X,pixSize_Y 
     157 
     158         
    141159        Wave dispW=root:curDispPanel 
    142160        Wave cw = root:coef_PeakPix2D 
     
    154172        // and the other to set the "common" values, some of which are based on the panel dimensions 
    155173 
    156         // panel-specific values 
    157         strswitch(str) 
    158                 case "FL": 
    159                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X 
    160                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y 
    161                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelX 
    162                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelY 
    163 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
    164                         break 
    165                 case "FR": 
    166                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X 
    167                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y 
    168                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelX 
    169                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelY 
    170 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    171                         break 
    172                 case "ML": 
    173                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X 
    174                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y 
    175                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelX 
    176                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelY 
    177 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    178                         break 
    179                 case "MR": 
    180                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X 
    181                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y 
    182                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelX 
    183                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelY 
    184 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    185                         break    
    186  
    187                 case "FT": 
    188                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X 
    189                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y 
    190                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelX 
    191                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelY 
    192 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    193                         break 
    194                 case "FB": 
    195                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X 
    196                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y 
    197                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelX 
    198                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelY 
    199 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    200                         break 
    201                 case "MT": 
    202                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X 
    203                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y 
    204                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelX 
    205                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelY 
    206 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    207                         break 
    208                 case "MB": 
    209                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X 
    210                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y 
    211                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelX 
    212                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelY 
    213 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    214                         break    
    215                          
    216                 case "B": 
    217                         return(0)               //just exit 
    218                         break                                            
    219                 default: 
    220                         return(0)               //just exit 
    221         endswitch 
    222          
    223         wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     174// set the source of the data. not always VCALC anymore 
     175        String folder 
     176        ControlInfo popup_2 
     177        folder = S_Value 
     178 
     179        // TODO -- fix all of this mess 
     180        if(cmpstr(folder,"VCALC") == 0) 
     181                // panel-specific values 
     182                Variable VC_nPix_X = VCALC_get_nPix_X(str) 
     183                Variable VC_nPix_Y = VCALC_get_nPix_Y(str) 
     184                Variable VC_pixSize_X = VCALC_getPixSizeX(str) 
     185                Variable VC_pixSize_Y = VCALC_getPixSizeY(str) 
     186//              strswitch(str) 
     187//                      case "FL": 
     188//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X 
     189//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y 
     190//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelX 
     191//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelY 
     192//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     193//                              break 
     194//                      case "FR": 
     195//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X 
     196//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y 
     197//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelX 
     198//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelY 
     199//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     200//                              break 
     201//                      case "ML": 
     202//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X 
     203//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y 
     204//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelX 
     205//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelY 
     206//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     207//                              break 
     208//                      case "MR": 
     209//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X 
     210//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y 
     211//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelX 
     212//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelY 
     213//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     214//                              break    
     215//       
     216//                      case "FT": 
     217//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X 
     218//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y 
     219//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelX 
     220//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelY 
     221//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     222//                              break 
     223//                      case "FB": 
     224//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X 
     225//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y 
     226//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelX 
     227//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelY 
     228//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     229//                              break 
     230//                      case "MT": 
     231//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X 
     232//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y 
     233//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelX 
     234//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelY 
     235//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     236//                              break 
     237//                      case "MB": 
     238//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X 
     239//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y 
     240//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelX 
     241//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelY 
     242//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     243//                              break    
     244//                               
     245//                      case "B": 
     246//                              return(0)               //just exit 
     247//                              break                                            
     248//                      default: 
     249//                              return(0)               //just exit 
     250//              endswitch 
     251         
     252        // if VCALC declare this way     
     253                wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     254                nPix_X = VC_nPix_X 
     255                nPix_Y = VC_nPix_Y 
     256                pixSize_X = VC_pixSize_X 
     257                pixSize_Y = VC_pixSize_Y 
     258         
     259        else 
     260        // TODO: if real data, need new declaration w/ data as the wave name 
     261                wave newW = $("root:Packages:NIST:VSANS:"+folder+":entry:entry:instrument:detector_"+str+":data") 
     262 
     263                nPix_X = V_getDet_pixel_num_x(folder,str) 
     264                nPix_Y = V_getDet_pixel_num_Y(folder,str) 
     265                pixSize_X = V_getDet_x_pixel_size(folder,str)/10 
     266                pixSize_Y = V_getDet_y_pixel_size(folder,str)/10 
     267        endif 
     268         
    224269 
    225270        Variable scale = 5 
    226271         
    227272        // common values (panel position, etc) 
     273        // TODO -- units are absolute, based on pixels in cm. make sure this is always correct 
    228274        strswitch(str) 
    229275                case "FL": 
     
    313359 
    314360 
    315  
     361// TODO:  
     362// -- allow other model functions as needed. 
     363// 
     364// Function to plot the specified 2D model for the detector 
     365// 
    316366Function DetModelPopMenuProc(pa) : PopupMenuControl 
    317367        STRUCT WMPopupAction &pa 
     
    357407End 
    358408 
    359  
    360  
    361  
    362  
     409// 
     410// TODO -- currently hard-wired for the only fit function 
     411// 
     412Function WriteCtrButtonProc(ba) : ButtonControl 
     413        STRUCT WMButtonAction &ba 
     414 
     415        switch( ba.eventCode ) 
     416                case 2: // mouse up 
     417                        // click code here 
     418                        String detStr,fname 
     419                        Wave coefW=root:coef_PeakPix2D 
     420                         
     421                        ControlInfo popup_0 
     422                        detStr = S_Value 
     423                        ControlInfo popup_2 
     424                        fname = S_Value 
     425                         
     426                        V_putDet_beam_center_x(fname,detStr,coefW[9]) 
     427                        V_putDet_beam_center_y(fname,detStr,coefW[10]) 
     428 
     429                        break 
     430                case -1: // control being killed 
     431                        break 
     432        endswitch 
     433 
     434        return 0 
     435End 
     436 
     437 
     438 
     439// TODO 
     440// -- there is only a single fitting function available, and it's hard-wired 
     441// -- what values are held during the fitting are hard-wired 
     442// 
     443// 
     444// function to call the fit fucntion (2D) 
     445// 
    363446Function DetFitButtonProc(ba) : ButtonControl 
    364447        STRUCT WMButtonAction &ba 
     
    401484End 
    402485 
     486Function CtrTableButtonProc(ba) : ButtonControl 
     487        STRUCT WMButtonAction &ba 
     488 
     489        switch( ba.eventCode ) 
     490                case 2: // mouse up 
     491                        // click code here 
     492                         
     493                        V_BCtrTable() 
     494                         
     495                        break 
     496                case -1: // control being killed 
     497                        break 
     498        endswitch 
     499 
     500        return 0 
     501End 
     502 
     503Function WriteCtrTableButtonProc(ba) : ButtonControl 
     504        STRUCT WMButtonAction &ba 
     505 
     506        switch( ba.eventCode ) 
     507                case 2: // mouse up 
     508                        // click code here 
     509                         
     510                        V_BeamCtr_WriteTable() 
     511                         
     512                        break 
     513                case -1: // control being killed 
     514                        break 
     515        endswitch 
     516 
     517        return 0 
     518End 
    403519 
    404520// TODO 
    405521// -- some of this is hard-wired in 
    406 // -- this is still alll in terms of pixels, which still may not be what I want 
     522// -- this is still all in terms of pixels, which still may not be what I want 
    407523// -- the x-scale of the T/B panels is artificially compressed to "fake" 4mm per pixel in x-direction 
    408524// 
     
    447563end 
    448564 
     565// TODO 
     566// these are "nominal" beam center values in pixels for the default VCALC configuration 
     567// This function "restores" the data display to the "instrument" conditions where the panels overlap 
     568// and is intended to be a TRUE view of what the detectors see - that is - the peaks should appear as rings, 
     569// the view should be symmetric (if the real data is symmetric) 
     570// 
     571// -- this is currently linked to the Vdata panel 
     572// -- will need to remove the hard-wired values and get the proper values from the data 
     573// -- ?? will the "proper" values be in pixels or distance? All depends on how I display the data... 
     574// -- may want to keep the nominal scaling values around in case the proper values aren' in the file 
     575// 
    449576Function V_RestorePanels() 
    450577 
    451         V_RescaleToBeamCenter("RAW","MB",64,55) 
    452         V_RescaleToBeamCenter("RAW","MT",64,-8.7) 
    453         V_RescaleToBeamCenter("RAW","MR",-8.1,64) 
    454         V_RescaleToBeamCenter("RAW","ML",55,64) 
    455         V_RescaleToBeamCenter("RAW","FB",64,55) 
    456         V_RescaleToBeamCenter("RAW","FT",64,-8.7) 
    457         V_RescaleToBeamCenter("RAW","FR",-8.1,64) 
    458         V_RescaleToBeamCenter("RAW","FL",55,64) 
    459  
    460  
     578        String fname="" 
     579        String detStr="" 
     580        Variable ii,xCtr,yCtr 
     581 
     582//// this works if the proper centers are in the file - otherwise, it's a mess   
     583//      fname = "RAW" 
     584//      for(ii=0;ii<ItemsInList(ksDetectorListNoB);ii+=1) 
     585//              detStr = StringFromList(ii, ksDetectorListNoB, ";") 
     586//              xCtr = V_getDet_beam_center_x(fname,detStr) 
     587//              yCtr = V_getDet_beam_center_y(fname,detStr) 
     588//              V_RescaleToBeamCenter("RAW",detStr,xCtr,yCtr) 
     589//      endfor 
     590                 
     591                 
     592                // nominal values... better to use what's in the file 
     593// 
     594                V_RescaleToBeamCenter("RAW","MB",64,55) 
     595                V_RescaleToBeamCenter("RAW","MT",64,-8.7) 
     596                V_RescaleToBeamCenter("RAW","MR",-8.1,64) 
     597                V_RescaleToBeamCenter("RAW","ML",55,64) 
     598                V_RescaleToBeamCenter("RAW","FB",64,55) 
     599                V_RescaleToBeamCenter("RAW","FT",64,-8.7) 
     600                V_RescaleToBeamCenter("RAW","FR",-8.1,64) 
     601                V_RescaleToBeamCenter("RAW","FL",55,64) 
    461602        return(0) 
    462603end 
    463604 
     605// TODO 
     606// these are "spread out" values for the data panels 
     607// This view is meant to spread out the panels so there is (?Less) overlap so the panels can be  
     608// viewed a bit easier. Isolation may still be preferred for detailed work. 
     609// 
     610// -- this is currently linked to the Vdata panel 
     611// -- will need to remove the hard-wired values and get the proper values from the data 
     612// -- ?? will the "proper" values be in pixels or distance? All depends on how I display the data... 
     613// 
    464614Function V_SpreadOutPanels() 
    465615 
     
    474624        return(0) 
    475625end 
     626 
     627// function to display the beam center values for all of the detectors 
     628// opens a separate table with the detector label, and the XY values 
     629// ? Maybe list the XY pair in pixels and in real distance in the table 
     630// 
     631// TODO: 
     632// -- need a way to use this or another table? as input to put the new/fitted/derived 
     633//    beam center values into the data folders, and ultimately into the data files on disk 
     634// -- need read/Write for the XY in pixels, and in real-distance 
     635// -- where are the temporary waves to be located? root? 
     636// -- need way to access the Ctr_mm values 
     637Function V_BCtrTable() 
     638         
     639        // order of the panel names will match the constant string 
     640        //FT;FB;FL;FR;MT;MB;ML;MR;B; 
     641        Make/O/T/N=9 panelW 
     642        Make/O/D/N=9 xCtr_pix,yCtr_pix,xCtr_mm,yCtr_mm 
     643        DoWindow/F BCtrTable 
     644        if(V_flag == 0) 
     645                Edit/W=(547,621,1076,943)/N=BCtrTable panelW,xCtr_pix,yCtr_pix,xCtr_mm,yCtr_mm 
     646        endif 
     647         
     648        Variable ii 
     649        String detStr,fname 
     650         
     651        fname = "RAW" 
     652        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     653                detStr = StringFromList(ii, ksDetectorListAll, ";") 
     654                panelW[ii] = detStr 
     655                xCtr_pix[ii] = V_getDet_beam_center_x(fname,detStr) 
     656                yCtr_pix[ii] = V_getDet_beam_center_y(fname,detStr) 
     657                // TODO 
     658                // and now the mm values 
     659                 
     660        endfor 
     661        return(0) 
     662End 
     663 
     664// 
     665// to write the new beam center values to a file on disk: 
     666// V_writeDet_beam_center_x(fname,detStr,val) 
     667// 
     668// to write to a local WORK folder 
     669// V_putDet_beam_center_x(fname,detStr,val) 
     670// 
     671Function V_BeamCtr_WriteTable() 
     672 
     673        String folder 
     674         
     675        Variable ii 
     676        String detStr,fname 
     677         
     678        Wave xCtr_pix = root:xCtr_pix 
     679        Wave yCtr_pix = root:yCtr_pix 
     680        Wave/T panelW = root:PanelW 
     681         
     682        ControlInfo popup_2 
     683        folder = S_Value 
     684         
     685        fname = folder 
     686        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     687//              detStr = StringFromList(ii, ksDetectorListAll, ";") 
     688                detStr = panelW[ii] 
     689                V_putDet_beam_center_x(fname,detStr,xCtr_pix[ii]) 
     690                V_putDet_beam_center_y(fname,detStr,yCtr_pix[ii]) 
     691                 
     692                // TODO 
     693                // and now the mm values 
     694                 
     695        endfor 
     696        return(0) 
     697         
     698End 
Note: See TracChangeset for help on using the changeset viewer.