Ignore:
Timestamp:
Sep 23, 2015 8:24:30 AM (7 years ago)
Author:
srkline
Message:

Updated the display of the "beam center finder" to better display the panels with an appropriate aspect ratio for the pixels.

Made the number of pixels (x,y) on each of the panels as globals, plus access functions. Large panels were coded for 256, but will likely be 128 pixels in reality. Make global for easy changes. Made sure that exsting functions used the global and were not hard-wired.

Location:
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS
Files:
8 edited

Legend:

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

    r958 r963  
    2828// 
    2929Proc PlotBroadPeak_Pix2D(xDim,yDim)                                              
    30         Variable xDim=48, yDim=256 
     30        Variable xDim=48, yDim=128 
    3131        Prompt xDim "Enter X dimension: " 
    3232        Prompt yDim "Enter Y dimension: " 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/Nexus_VSANS_Write.ipf

    r961 r963  
    214214//   always be the case. A bit of math may prove this. or not. Plus, the situation for VSANS may be different. 
    215215// 
     216// 
     217// 
     218// TODO -- make the number of pixels GLOBAL 
     219// 
    216220Proc H_Setup_VSANS_DIV_Structure() 
    217221         
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_BeamCenter.ipf

    r958 r963  
    66// -- multiple fit options with different things held 
    77// x- when selecting the detector, set the x/y pixel sizes 
    8 // x- figure out how to re-plot the images when swapping between LR and TB panels 
     8// -- figure out how to re-plot the images when swapping between LR and TB panels 
    99// 
    1010 
     
    1414//      ModifyGraph width={Plan,1,bottom,left} 
    1515// 
    16 Window DetectorPanelFit() : Panel 
     16Macro DetectorPanelFit() : Panel 
    1717        PauseUpdate; Silent 1           // building window... 
    1818 
     
    2222        endif 
    2323 
    24         NewPanel /W=(662,418,1586,1108)/N=PanelFit/K=1 
     24        NewPanel /W=(662,418,1586,960)/N=PanelFit/K=1 
    2525//      ShowTools/A 
    2626                 
     
    3838        SetScale/P x 0,1, curDispPanel 
    3939        SetScale/P y 0,1, curDispPanel 
    40          
    41 //draw the detector panel 
    42         Display/W=(20,80,180,600)/HOST=#  
    43         AppendImage curDispPanel 
    44         ModifyImage curDispPanel ctab= {*,*,ColdWarm,0} 
    45 //      ModifyGraph width={Plan,1,bottom,left} 
    46         Label left "Y pixels" 
    47         Label bottom "X pixels"  
    48         RenameWindow #,DetData 
    49         SetActiveSubwindow ##    
    50          
    51 //draw the model calculation 
    52         Display/W=(200,80,360,600)/HOST=# 
    53         AppendImage PeakPix2D_mat 
    54         ModifyImage PeakPix2D_mat ctab= {*,*,ColdWarm,0} 
    55 //      ModifyGraph width={Plan,1,bottom,left} 
    56         Label left "Y pixels" 
    57         Label bottom "X pixels"  
    58         RenameWindow #,ModelData 
    59         SetActiveSubwindow ##            
     40 
     41 
     42        // draw the correct images 
     43        DrawDetPanel("FL") 
     44 
     45         
     46////draw the detector panel 
     47//      Display/W=(20,80,200,600)/HOST=#  
     48//      AppendImage curDispPanel 
     49//      ModifyImage curDispPanel ctab= {*,*,ColdWarm,0} 
     50////    ModifyGraph height={Aspect,2.67}                 
     51//      Label left "Y pixels" 
     52//      Label bottom "X pixels"  
     53//      RenameWindow #,DetData 
     54//      SetActiveSubwindow ##    
     55//       
     56////draw the model calculation 
     57//      Display/W=(220,80,400,600)/HOST=# 
     58//      AppendImage PeakPix2D_mat 
     59//      ModifyImage PeakPix2D_mat ctab= {*,*,ColdWarm,0} 
     60////    ModifyGraph height={Aspect,2.67}                 
     61////    ModifyGraph width={Aspect,0.375}                 
     62//      Label left "Y pixels" 
     63//      Label bottom "X pixels"  
     64//      RenameWindow #,ModelData 
     65//      SetActiveSubwindow ##            
     66 
     67 
     68 
    6069 
    6170// edit the fit coefficients     
     
    6776        SetActiveSubwindow ## 
    6877 
    69  
    7078         
    7179EndMacro 
     
    8189                        Variable popNum = pa.popNum 
    8290                        String popStr = pa.popStr 
    83                          
     91                                                 
     92                        // remove the old image (it may not be the right shape) 
     93                        // -- but make sure it exists first... 
     94                        String childList = ChildWindowList("PanelFit") 
     95                        Variable flag 
     96                         
     97                        flag = WhichListItem("DetData", ChildList)              //returns -1 if not in list, 0+ otherwise 
     98                        if(flag != -1) 
     99                                KillWindow PanelFit#DetData 
     100                        endif 
     101                         
     102                        flag = WhichListItem("ModelData", ChildList) 
     103                        if(flag != -1) 
     104                                KillWindow PanelFit#ModelData 
     105                        endif 
     106         
     107                        // draw the correct images 
    84108                        DrawDetPanel(popStr) 
    85109                         
     
    93117 
    94118 
    95 //      duplicate/O root:Packages:NIST:VSANS:VCALC:Front:det_FL curDispPanel 
    96 //      SetScale/P x 0,1, curDispPanel 
    97 //      SetScale/P y 0,1, curDispPanel 
    98          
    99 // draws a single panel from the set of detectors 
     119// draw the selected panel and the model calculation, adjusting for the  
     120// orientation of the panel and the number of pixels, and pixel sizes 
    100121Function DrawDetPanel(str) 
    101122        String str 
     
    106127 
    107128        Variable xDim,yDim 
     129        Variable left,top,right,bottom 
     130        Variable height, width 
     131        Variable left2,top2,right2,bottom2 
    108132        Wave dispW=root:curDispPanel 
    109133        Wave cw = root:coef_PeakPix2D 
    110134 
    111         cw[7] = 4 
    112         cw[8] = 8 
    113          
    114135        Wave xwave_PeakPix2D=root:xwave_PeakPix2D 
    115136        Wave ywave_PeakPix2D=root:ywave_PeakPix2D 
    116137        Wave zwave_PeakPix2D=root:zwave_PeakPix2D 
    117138 
    118         //plot it in the subwindow with the proper aspect and positioning        
     139        //plot it in the subwindow with the proper aspect and positioning 
     140        // for 48x256 (8mm x 4mm), aspect = (256/2)/48 = 2.67 (LR panels) 
     141        // for 128x48 (4mm x 8 mm), aspect = 48/(128/2) = 0.75 (TB panels) 
     142         
     143         
     144        // using two switches -- one to set the panel-specific dimensions 
     145        // and the other to set the "common" values, some of which are based on the panel dimensions 
     146 
     147        // panel-specific values 
    119148        strswitch(str) 
    120149                case "FL": 
    121                         xDim=48 
    122                         yDim=256 
    123                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,180,600) 
    124                         MoveSubWindow/W=PanelFit#ModelData fnum=(200,80,360,600)                         
    125                         cw[7] = 8 
    126                         cw[8] = 4 
    127                         wave newW = root:Packages:NIST:VSANS:VCALC:Front:det_FL 
     150                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X 
     151                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y 
     152                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelX 
     153                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelY 
     154                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    128155                        break 
    129156                case "FR": 
    130                         xDim=48 
    131                         yDim=256 
    132                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,180,600) 
    133                         MoveSubWindow/W=PanelFit#ModelData fnum=(200,80,360,600)         
    134                         cw[7] = 8 
    135                         cw[8] = 4                                                
    136                         wave newW = root:Packages:NIST:VSANS:VCALC:Front:det_FR 
    137                         break 
     157                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X 
     158                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y 
     159                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelX 
     160                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelY 
     161                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     162                        break 
     163                case "ML": 
     164                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X 
     165                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y 
     166                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelX 
     167                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelY 
     168                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     169                        break 
     170                case "MR": 
     171                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X 
     172                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y 
     173                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelX 
     174                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelY 
     175                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     176                        break    
     177 
    138178                case "FT": 
    139                         xDim=128 
    140                         yDim=48 
    141                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,464,235) 
    142                         MoveSubWindow/W=PanelFit#ModelData fnum=(20,280,464,435) 
    143                         cw[7] = 4 
    144                         cw[8] = 8                        
    145                         wave newW = root:Packages:NIST:VSANS:VCALC:Front:det_FT 
     179                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X 
     180                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y 
     181                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelX 
     182                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelY 
     183                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    146184                        break 
    147185                case "FB": 
    148                         xDim=128 
    149                         yDim=48 
    150                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,464,235) 
    151                         MoveSubWindow/W=PanelFit#ModelData fnum=(20,280,464,435) 
    152                         cw[7] = 4 
    153                         cw[8] = 8                        
    154                         wave newW = root:Packages:NIST:VSANS:VCALC:Front:det_FB 
    155                         break 
    156                 case "ML": 
    157                         xDim=48 
    158                         yDim=256 
    159                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,180,600) 
    160                         MoveSubWindow/W=PanelFit#ModelData fnum=(200,80,360,600)         
    161                         cw[7] = 8 
    162                         cw[8] = 4                                                
    163                         wave newW = root:Packages:NIST:VSANS:VCALC:Middle:det_ML 
    164                         break 
    165                 case "MR": 
    166                         xDim=48 
    167                         yDim=256 
    168                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,180,600) 
    169                         MoveSubWindow/W=PanelFit#ModelData fnum=(200,80,360,600)         
    170                         cw[7] = 8 
    171                         cw[8] = 4                                                
    172                         wave newW = root:Packages:NIST:VSANS:VCALC:Middle:det_MR 
     186                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X 
     187                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y 
     188                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelX 
     189                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelY 
     190                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    173191                        break 
    174192                case "MT": 
    175                         xDim=128 
    176                         yDim=48 
    177                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,464,235) 
    178                         MoveSubWindow/W=PanelFit#ModelData fnum=(20,280,464,435) 
    179                         cw[7] = 4 
    180                         cw[8] = 8                        
    181                         wave newW = root:Packages:NIST:VSANS:VCALC:Middle:det_MT 
     193                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X 
     194                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y 
     195                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelX 
     196                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelY 
     197                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    182198                        break 
    183199                case "MB": 
    184                         xDim=128 
    185                         yDim=48 
    186                         MoveSubWindow/W=PanelFit#DetData fnum=(20,80,464,235) 
    187                         MoveSubWindow/W=PanelFit#ModelData fnum=(20,280,464,435) 
    188                         cw[7] = 4 
    189                         cw[8] = 8                        
    190                         wave newW = root:Packages:NIST:VSANS:VCALC:Middle:det_MB 
    191                         break 
     200                        NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X 
     201                        NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y 
     202                        NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelX 
     203                        NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelY 
     204                        wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     205                        break    
     206                         
    192207                case "B": 
    193                  
    194208                        return(0)               //just exit 
    195209                        break                                            
     
    197211                        return(0)               //just exit 
    198212        endswitch 
    199  
    200 // set the simulated detector data to be point-scaling for display and fitting, not q-scaling    
    201         duplicate/O newW dispW 
    202         SetScale/P x 0,1, dispW 
    203         SetScale/P y 0,1, dispW  
     213         
     214 
     215         
     216         
     217        Variable scale = 5 
     218         
     219        // common values (panel position, etc) 
     220        strswitch(str) 
     221                case "FL": 
     222                case "FR": 
     223                case "ML": 
     224                case "MR": 
     225                        width = trunc(nPix_X*pixSize_X *scale*1.15)                     //48 tubes @ 8 mm 
     226                        height = trunc(nPix_Y*pixSize_Y *scale*0.8)                     //128 pixels @ 8 mm 
     227                         
     228                        left = 20 
     229                        top = 80 
     230                        right = left+width 
     231                        bottom = top+height 
     232                         
     233                        left2 = right + 20 
     234                        right2 = left2 + width 
     235                        top2 = top 
     236                        bottom2 = bottom 
     237                         
     238                        break                    
     239                case "FT": 
     240                case "FB": 
     241                case "MT": 
     242                case "MB": 
     243                        width = trunc(nPix_X*pixSize_X *scale*1.)                       //128 pix @ 4 mm 
     244                        height = trunc(nPix_Y*pixSize_Y *scale)                 // 48 tubes @ 8 mm 
     245                                                 
     246                        left = 20 
     247                        top = 80 
     248                        right = left+width 
     249                        bottom = top+height 
     250                         
     251                        left2 = left 
     252                        right2 = right 
     253                        top2 = top + height + 20 
     254                        bottom2 = bottom + height + 20 
     255                         
     256                        break 
     257                case "B": 
     258                        return(0)               //just exit 
     259                        break                                            
     260                default: 
     261                        return(0)               //just exit 
     262        endswitch 
     263 
     264        // set from the detector-specific strswitch 
     265        cw[7] = pixSize_X*10 
     266        cw[8] = pixSize_Y*10             
     267 
     268        // generate the new panel display 
     269        duplicate/O newW curDispPanel 
     270        SetScale/P x 0,1, curDispPanel 
     271        SetScale/P y 0,1, curDispPanel 
     272         
     273        //draw the detector panel 
     274        Display/W=(left,top,right,bottom)/HOST=#  
     275        AppendImage curDispPanel 
     276        ModifyImage curDispPanel ctab= {*,*,ColdWarm,0} 
     277        Label left "Y pixels" 
     278        Label bottom "X pixels"  
     279        RenameWindow #,DetData 
     280        SetActiveSubwindow ##    
     281         
    204282                 
    205  
    206283        // re-dimension the model calculation to be the proper dimensions        
    207         Redimension/N=(xDim*yDim) xwave_PeakPix2D, ywave_PeakPix2D,zwave_PeakPix2D       
    208         FillPixTriplet(xwave_PeakPix2D, ywave_PeakPix2D,zwave_PeakPix2D,xDim,yDim)       
    209         Make/O/D/N=(xDim,yDim) PeakPix2D_mat            // use the point scaling of the matrix (=pixels) 
     284        Redimension/N=(nPix_X*nPix_Y) xwave_PeakPix2D, ywave_PeakPix2D,zwave_PeakPix2D   
     285        FillPixTriplet(xwave_PeakPix2D, ywave_PeakPix2D,zwave_PeakPix2D,nPix_X,nPix_Y) 
     286        Make/O/D/N=(nPix_X,nPix_Y) PeakPix2D_mat                // use the point scaling of the matrix (=pixels) 
     287 
    210288        Duplicate/O $"PeakPix2D_mat",$"PeakPix2D_lin"           //keep a linear-scaled version of the data 
     289 
     290        //draw the model calculation 
     291        Display/W=(left2,top2,right2,bottom2)/HOST=# 
     292        AppendImage PeakPix2D_mat 
     293        ModifyImage PeakPix2D_mat ctab= {*,*,ColdWarm,0} 
     294        Label left "Y pixels" 
     295        Label bottom "X pixels"  
     296        RenameWindow #,ModelData 
     297        SetActiveSubwindow ##    
     298                 
     299        DoUpdate 
    211300         
    212301        return(0) 
     
    236325 
    237326 
    238  
    239  
     327// 
     328// TODO - make a better guess (how?) 
     329// 
    240330Function DetFitGuessButtonProc(ba) : ButtonControl 
    241331        STRUCT WMButtonAction &ba 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Q.ipf

    r955 r963  
    104104Function V_CalculateQFrontPanels() 
    105105 
    106         Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY 
     106        Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,nPix_X,nPix_Y 
    107107        Variable F_LR_sep,F_TB_sep,F_offset,F_sdd_offset 
    108108 
     
    126126 
    127127        SetDataFolder root:Packages:NIST:VSANS:VCALC:Front 
    128         Wave det_FL,det_FR                      // these are (48,256) 
     128        Wave det_FL,det_FR                      // these are (48,128)           (nominal, may change) 
    129129        Wave det_FT,det_FB                      // these are (128,48) 
    130130 
     
    142142//      pixSizeX = 0.8                  // 0.8 cm/pixel along width 
    143143//      pixSizeY = 0.4                  // approx 0.4 cm/pixel along length 
    144          
    145         xCtr = 48+(F_LR_sep/2/pixSizeX)         // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
    146         yCtr = 127       
     144        nPix_X = VCALC_get_nPix_X("FL") 
     145        nPix_Y = VCALC_get_nPix_Y("FL") 
     146         
     147        xCtr = nPix_X+(F_LR_sep/2/pixSizeX)             // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
     148        yCtr = nPix_Y/2  
    147149        V_Detector_2Q(det_FL,qTot_FL,qx_FL,qy_FL,qz_FL,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 
    148150//      Print "xy for FL = ",xCtr,yCtr 
     
    168170        pixSizeX = VCALC_getPixSizeX("FR") 
    169171        pixSizeY = VCALC_getPixSizeY("FR") 
     172        nPix_X = VCALC_get_nPix_X("FR") 
     173        nPix_Y = VCALC_get_nPix_Y("FR") 
    170174         
    171175        xCtr = -(F_LR_sep/2/pixSizeX)-1          
    172         yCtr = 127 
     176        yCtr = nPix_Y/2  
    173177        V_Detector_2Q(det_FR,qTot_FR,qx_FR,qy_FR,qz_FR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 
    174178//      Print "xy for FR = ",xCtr,yCtr 
     
    189193        pixSizeX = VCALC_getPixSizeX("FT") 
    190194        pixSizeY = VCALC_getPixSizeY("FT") 
    191  
    192         xCtr = 64 
     195        nPix_X = VCALC_get_nPix_X("FT") 
     196        nPix_Y = VCALC_get_nPix_Y("FT") 
     197         
     198        xCtr = nPix_X/2 
    193199        yCtr = -(F_TB_sep/2/pixSizeY)-1    
    194200        // global sdd_offset is in (mm), convert to meters here for the Q-calculation 
     
    211217        pixSizeX = VCALC_getPixSizeX("FB") 
    212218        pixSizeY = VCALC_getPixSizeY("FB") 
    213          
    214         xCtr = 64 
    215         yCtr = 48+(F_TB_sep/2/pixSizeY)                 // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
     219        nPix_X = VCALC_get_nPix_X("FB") 
     220        nPix_Y = VCALC_get_nPix_Y("FB") 
     221                 
     222        xCtr = nPix_X/2 
     223        yCtr = nPix_Y+(F_TB_sep/2/pixSizeY)             // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
    216224        // global sdd_offset is in (mm), convert to meters here for the Q-calculation 
    217225        V_Detector_2Q(det_FB,qTot_FB,qx_FB,qy_FB,qz_FB,xCtr,yCtr,sdd+F_sdd_offset/1000,lam,pixSizeX,pixSizeY) 
     
    234242        String folderStr,type 
    235243         
    236         Variable LR_sep,nPix,xCtr,ii,jj,numCol,pixSizeX,pixSizeY 
     244        Variable LR_sep,nPix,xCtr,ii,jj,numCol,pixSizeX,pixSizeY,nPix_X,nPix_Y 
    237245 
    238246/// !! type passed in will be FT, FB, MT, MB, so I can't ask for the panel separation -- or I'll get the TB separation... 
     
    259267        pixSizeY = VCALC_getPixSizeY(type) 
    260268 
     269        nPix_X = VCALC_get_nPix_X(type) 
     270        nPix_Y = VCALC_get_nPix_Y(type) 
     271         
    261272        //TODO -- get this from a global 
    262         xCtr = 64 
     273        xCtr = nPix_X/2 
    263274        nPix = trunc(LR_sep/2/pixSizeX)         // approx # of pixels Left/right of center that are not obscured by L/R panels 
    264275         
     
    442453Function V_CalculateQMiddlePanels() 
    443454 
    444         Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY 
     455        Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,nPix_X,nPix_Y 
    445456        Variable M_LR_sep,M_TB_sep,M_offset, M_sdd_offset 
    446457 
     
    462473 
    463474        SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle 
    464         Wave det_ML,det_MR                      // these are (48,256) 
     475        Wave det_ML,det_MR                      // these are (48,128)           nominal, may change 
    465476        Wave det_MT,det_MB                      // these are (128,48) 
    466477 
     
    476487        pixSizeX = VCALC_getPixSizeX("ML") 
    477488        pixSizeY = VCALC_getPixSizeY("ML") 
    478          
    479         xCtr = 48+(M_LR_sep/2/pixSizeX)         // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
    480         yCtr = 127       
     489        nPix_X = VCALC_get_nPix_X("ML") 
     490        nPix_Y = VCALC_get_nPix_Y("ML") 
     491         
     492        xCtr = nPix_X+(M_LR_sep/2/pixSizeX)             // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
     493        yCtr = nPix_Y/2  
    481494        V_Detector_2Q(det_ML,qTot_ML,qx_ML,qy_ML,qz_ML,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 
    482495//      Print "xy for ML = ",xCtr,yCtr 
     
    503516        pixSizeX = VCALC_getPixSizeX("MR") 
    504517        pixSizeY = VCALC_getPixSizeY("MR") 
     518 
     519        nPix_X = VCALC_get_nPix_X("MR") 
     520        nPix_Y = VCALC_get_nPix_Y("MR") 
    505521         
    506522        xCtr = -(M_LR_sep/2/pixSizeX)-1          
    507         yCtr = 127 
     523        yCtr = nPix_Y/2 
    508524        V_Detector_2Q(det_MR,qTot_MR,qx_MR,qy_MR,qz_MR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 
    509525//      Print "xy for MR = ",xCtr,yCtr 
     
    524540        pixSizeX = VCALC_getPixSizeX("MT") 
    525541        pixSizeY = VCALC_getPixSizeY("MT") 
    526  
    527         xCtr = 64 
     542        nPix_X = VCALC_get_nPix_X("MT") 
     543        nPix_Y = VCALC_get_nPix_Y("MT") 
     544         
     545        xCtr = nPix_X/2 
    528546        yCtr = -(M_TB_sep/2/pixSizeY)-1  
    529547                // global sdd_offset is in (mm), convert to meters here for the Q-calculation   
     
    546564        pixSizeX = VCALC_getPixSizeX("MB") 
    547565        pixSizeY = VCALC_getPixSizeY("MB") 
    548          
    549         xCtr = 64 
    550         yCtr = 48+(M_TB_sep/2/pixSizeY)                 // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
     566        nPix_X = VCALC_get_nPix_X("MB") 
     567        nPix_Y = VCALC_get_nPix_Y("MB") 
     568                 
     569        xCtr = nPix_X/2 
     570        yCtr = nPix_Y+(M_TB_sep/2/pixSizeY)             // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
    551571                // global sdd_offset is in (mm), convert to meters here for the Q-calculation 
    552572        V_Detector_2Q(det_MB,qTot_MB,qx_MB,qy_MB,qz_MB,xCtr,yCtr,sdd+M_sdd_offset/1000,lam,pixSizeX,pixSizeY) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf

    r955 r963  
    271271end 
    272272 
     273 
     274// return the number of pixels in x-dimension 
     275Function VCALC_get_nPix_X(type) 
     276        String type 
     277 
     278        SetDataFolder root:Packages:NIST:VSANS:VCALC 
     279                         
     280        strswitch(type)  
     281                case "FL": 
     282                        NVAR nPix = gFront_L_nPix_X 
     283                        break 
     284                case "FR":               
     285                        NVAR nPix = gFront_R_nPix_X 
     286                        break 
     287                case "FT": 
     288                        NVAR nPix = gFront_T_nPix_X 
     289                        break    
     290                case "FB":               
     291                        NVAR nPix = gFront_B_nPix_X 
     292                        break 
     293                         
     294                case "ML": 
     295                        NVAR nPix = gMiddle_L_nPix_X 
     296                        break 
     297                case "MR":               
     298                        NVAR nPix = gMiddle_R_nPix_X 
     299                        break 
     300                case "MT": 
     301                        NVAR nPix = gMiddle_T_nPix_X 
     302                        break    
     303                case "MB":               
     304                        NVAR nPix = gMiddle_B_nPix_X 
     305                        break 
     306                                                 
     307                case "B":                
     308                        NVAR nPix = gBack_nPix_X 
     309                        break 
     310                         
     311                default:                                                         
     312                        Print "Detector type mismatch in        VCALC_get_nPix_X(type)" 
     313                        return(NaN) 
     314        endswitch 
     315 
     316        setDataFolder root: 
     317                 
     318        return(nPix) 
     319end 
     320 
     321// return the number of pixels in y-dimension 
     322Function VCALC_get_nPix_Y(type) 
     323        String type 
     324 
     325        SetDataFolder root:Packages:NIST:VSANS:VCALC 
     326                         
     327        strswitch(type)  
     328                case "FL": 
     329                        NVAR nPix = gFront_L_nPix_Y 
     330                        break 
     331                case "FR":               
     332                        NVAR nPix = gFront_R_nPix_Y 
     333                        break 
     334                case "FT": 
     335                        NVAR nPix = gFront_T_nPix_Y 
     336                        break    
     337                case "FB":               
     338                        NVAR nPix = gFront_B_nPix_Y 
     339                        break 
     340                         
     341                case "ML": 
     342                        NVAR nPix = gMiddle_L_nPix_Y 
     343                        break 
     344                case "MR":               
     345                        NVAR nPix = gMiddle_R_nPix_Y 
     346                        break 
     347                case "MT": 
     348                        NVAR nPix = gMiddle_T_nPix_Y 
     349                        break    
     350                case "MB":               
     351                        NVAR nPix = gMiddle_B_nPix_Y 
     352                        break 
     353                                                 
     354                case "B":                
     355                        NVAR nPix = gBack_nPix_Y 
     356                        break 
     357                         
     358                default:                                                         
     359                        Print "Detector type mismatch in        VCALC_get_nPix_Y(type)" 
     360                        return(NaN) 
     361        endswitch 
     362 
     363        setDataFolder root: 
     364                 
     365        return(nPix) 
     366end 
     367 
     368 
     369 
    273370// SDD offset of the top/bottom panels 
    274371// value returned is in mm (so beware) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf

    r958 r963  
    647647        SetDataFolder root:Packages:NIST:VSANS:VCALC 
    648648         
    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;" 
    656649 
    657650///// FRONT DETECTOR BANKS 
     
    667660// detector resolution (xy for each bank!) 
    668661        Variable/G gFront_L_pixelX = 0.8                        // (cm)         these tubes are vertical 
    669         Variable/G gFront_L_pixelY = 0.4                        // (cm) 
     662        Variable/G gFront_L_pixelY = 0.8                        // (cm)         //!! now 8 mm, since nPix=128, rather than 256 
    670663        Variable/G gFront_R_pixelX = 0.8                        // (cm) 
    671         Variable/G gFront_R_pixelY = 0.4                        // (cm) 
     664        Variable/G gFront_R_pixelY = 0.8                        // (cm) 
    672665         
    673666        Variable/G gFront_T_pixelX = 0.4                        // (cm)         these tubes are horizontal 
     
    677670         
    678671// 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) 
     672        Variable/G gFront_L_nPix_X = 48         // == number of tubes 
     673        Variable/G gFront_L_nPix_Y = 128                // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     674        Variable/G gFront_R_nPix_X = 48         // == number of tubes 
     675        Variable/G gFront_R_nPix_Y = 128                // == pixels in vertical direction  
     676        Variable/G gFront_T_nPix_X = 128                // == pixels in horizontal direction 
     677        Variable/G gFront_T_nPix_Y = 48         // == number of tubes 
     678        Variable/G gFront_B_nPix_X = 128                // == pixels in horizontal direction 
     679        Variable/G gFront_B_nPix_Y = 48         // == number of tubes 
     680 
     681 
    680682 
    681683 
     
    690692// detector resolution (xy for each bank!) 
    691693        Variable/G gMiddle_L_pixelX = 0.8                       // (cm)         these tubes are vertical 
    692         Variable/G gMiddle_L_pixelY = 0.4                       // (cm) 
     694        Variable/G gMiddle_L_pixelY = 0.8               // (cm) 
    693695        Variable/G gMiddle_R_pixelX = 0.8                       // (cm) 
    694         Variable/G gMiddle_R_pixelY = 0.4                       // (cm) 
     696        Variable/G gMiddle_R_pixelY = 0.8               // (cm) 
    695697         
    696698        Variable/G gMiddle_T_pixelX = 0.4                       // (cm)         these tubes are horizontal 
     
    698700        Variable/G gMiddle_B_pixelX = 0.4                       // (cm) 
    699701        Variable/G gMiddle_B_pixelY = 0.8                       // (cm) 
     702 
     703// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here) 
     704        Variable/G gMiddle_L_nPix_X = 48                // == number of tubes 
     705        Variable/G gMiddle_L_nPix_Y = 128               // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     706        Variable/G gMiddle_R_nPix_X = 48                // == number of tubes 
     707        Variable/G gMiddle_R_nPix_Y = 128               // == pixels in vertical direction  
     708        Variable/G gMiddle_T_nPix_X = 128               // == pixels in horizontal direction 
     709        Variable/G gMiddle_T_nPix_Y = 48                // == number of tubes 
     710        Variable/G gMiddle_B_nPix_X = 128               // == pixels in horizontal direction 
     711        Variable/G gMiddle_B_nPix_Y = 48                // == number of tubes 
     712 
     713 
    700714 
    701715 
     
    706720        Variable/G gBack_pixelX = 0.1           // 1mm resolution (units of cm here) 
    707721        Variable/G gBack_pixelY = 0.1 
     722        Variable/G gBack_nPix_X = 320           // detector pixels in x-direction 
     723        Variable/G gBack_nPix_Y = 320    
    708724 
    709725 
     
    714730        SetDataFolder root:Packages:NIST:VSANS:VCALC:Front 
    715731 
    716         Make/O/D/N=(48,256) det_FL,det_FR 
    717         Make/O/D/N=(128,48) det_FT,det_FB 
     732        Make/O/D/N=(::gFront_L_nPix_X,::gFront_L_nPix_Y) det_FL 
     733        Make/O/D/N=(::gFront_R_nPix_X,::gFront_R_nPix_Y) det_FR 
     734        Make/O/D/N=(::gFront_T_nPix_X,::gFront_T_nPix_Y) det_FT 
     735        Make/O/D/N=(::gFront_B_nPix_X,::gFront_B_nPix_Y) det_FB 
    718736        Duplicate/O det_FL qTot_FL,qx_FL,qy_FL,qz_FL 
    719737        Duplicate/O det_FR qTot_FR,qx_FR,qy_FR,qz_FR 
     
    725743        SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle 
    726744 
    727         Make/O/D/N=(48,256) det_ML,det_MR 
    728         Make/O/D/N=(128,48) det_MT,det_MB 
     745        Make/O/D/N=(::gMiddle_L_nPix_X,::gMiddle_L_nPix_Y) det_ML 
     746        Make/O/D/N=(::gMiddle_R_nPix_X,::gMiddle_R_nPix_Y) det_MR 
     747        Make/O/D/N=(::gMiddle_T_nPix_X,::gMiddle_T_nPix_Y) det_MT 
     748        Make/O/D/N=(::gMiddle_B_nPix_X,::gMiddle_B_nPix_Y) det_MB 
    729749        Duplicate/O det_ML qTot_ML,qx_ML,qy_ML,qz_ML 
    730750        Duplicate/O det_MR qTot_MR,qx_MR,qy_MR,qz_MR 
     
    736756        SetDataFolder root:Packages:NIST:VSANS:VCALC:Back 
    737757         
    738         Make/O/D/N=(320,320) det_B 
     758        Make/O/D/N=(::gBack_nPix_X,::gBack_nPix_Y) det_B 
    739759        Duplicate/O det_B qTot_B,qx_B,qy_B,qz_B 
    740760 
    741761 
     762 
     763 
    742764////////////    FOR THE PANEL 
    743765 
    744766        SetDataFolder root:Packages:NIST:VSANS:VCALC 
     767 
     768        Make/O/D/N=2 fpx1,fpy1,mpx1,mpy1                // for display of the detector panels 
     769        Make/O/D/N=2 fv_degX,fv_degY 
     770 
     771 
     772// to fill in: 
     773// values for always-visible items 
     774        String/G gPresetPopStr = "Low Q;High Q;Converging Pinholes;Narrow Slit Aperture;Converging Slits;White Beam;Polarizer;" 
     775        String/G gBinTypeStr = "One;Two;Four;Slit Mode;" 
     776 
     777 
     778 
    745779 
    746780// popup strings for each tab (then use the string in the panel) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_NexusFromIgor.ipf

    r960 r963  
    1111////////////////////////////// 
    1212////////////////////////////// 
     13 
     14// TODO -- of the many issues (which may all be superceded by the JS file,  
     15// the detector dimensions (nPix) are incorrrect, and are better set as globals. 
    1316 
    1417 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_ReadWrite_HDF5.ipf

    r960 r963  
    77// 
    88// 
     9 
     10 
     11// thought this would be useful, but the file name (folder) is stuck in the middle... 
     12Strconstant ksPathPrefix = "root:(folder):entry:entry1:" 
     13 
    914 
    1015 
Note: See TracChangeset for help on using the changeset viewer.