Changeset 963
- Timestamp:
- Sep 23, 2015 8:24:30 AM (7 years ago)
- 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 28 28 // 29 29 Proc PlotBroadPeak_Pix2D(xDim,yDim) 30 Variable xDim=48, yDim= 25630 Variable xDim=48, yDim=128 31 31 Prompt xDim "Enter X dimension: " 32 32 Prompt yDim "Enter Y dimension: " -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/Nexus_VSANS_Write.ipf
r961 r963 214 214 // always be the case. A bit of math may prove this. or not. Plus, the situation for VSANS may be different. 215 215 // 216 // 217 // 218 // TODO -- make the number of pixels GLOBAL 219 // 216 220 Proc H_Setup_VSANS_DIV_Structure() 217 221 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_BeamCenter.ipf
r958 r963 6 6 // -- multiple fit options with different things held 7 7 // 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 panels8 // -- figure out how to re-plot the images when swapping between LR and TB panels 9 9 // 10 10 … … 14 14 // ModifyGraph width={Plan,1,bottom,left} 15 15 // 16 WindowDetectorPanelFit() : Panel16 Macro DetectorPanelFit() : Panel 17 17 PauseUpdate; Silent 1 // building window... 18 18 … … 22 22 endif 23 23 24 NewPanel /W=(662,418,1586, 1108)/N=PanelFit/K=124 NewPanel /W=(662,418,1586,960)/N=PanelFit/K=1 25 25 // ShowTools/A 26 26 … … 38 38 SetScale/P x 0,1, curDispPanel 39 39 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 60 69 61 70 // edit the fit coefficients … … 67 76 SetActiveSubwindow ## 68 77 69 70 78 71 79 EndMacro … … 81 89 Variable popNum = pa.popNum 82 90 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 84 108 DrawDetPanel(popStr) 85 109 … … 93 117 94 118 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 100 121 Function DrawDetPanel(str) 101 122 String str … … 106 127 107 128 Variable xDim,yDim 129 Variable left,top,right,bottom 130 Variable height, width 131 Variable left2,top2,right2,bottom2 108 132 Wave dispW=root:curDispPanel 109 133 Wave cw = root:coef_PeakPix2D 110 134 111 cw[7] = 4112 cw[8] = 8113 114 135 Wave xwave_PeakPix2D=root:xwave_PeakPix2D 115 136 Wave ywave_PeakPix2D=root:ywave_PeakPix2D 116 137 Wave zwave_PeakPix2D=root:zwave_PeakPix2D 117 138 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 119 148 strswitch(str) 120 149 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) 128 155 break 129 156 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 138 178 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) 146 184 break 147 185 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) 173 191 break 174 192 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) 182 198 break 183 199 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 192 207 case "B": 193 194 208 return(0) //just exit 195 209 break … … 197 211 return(0) //just exit 198 212 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 204 282 205 206 283 // 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 210 288 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 211 300 212 301 return(0) … … 236 325 237 326 238 239 327 // 328 // TODO - make a better guess (how?) 329 // 240 330 Function DetFitGuessButtonProc(ba) : ButtonControl 241 331 STRUCT WMButtonAction &ba -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Q.ipf
r955 r963 104 104 Function V_CalculateQFrontPanels() 105 105 106 Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY 106 Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,nPix_X,nPix_Y 107 107 Variable F_LR_sep,F_TB_sep,F_offset,F_sdd_offset 108 108 … … 126 126 127 127 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) 129 129 Wave det_FT,det_FB // these are (128,48) 130 130 … … 142 142 // pixSizeX = 0.8 // 0.8 cm/pixel along width 143 143 // 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 147 149 V_Detector_2Q(det_FL,qTot_FL,qx_FL,qy_FL,qz_FL,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 148 150 // Print "xy for FL = ",xCtr,yCtr … … 168 170 pixSizeX = VCALC_getPixSizeX("FR") 169 171 pixSizeY = VCALC_getPixSizeY("FR") 172 nPix_X = VCALC_get_nPix_X("FR") 173 nPix_Y = VCALC_get_nPix_Y("FR") 170 174 171 175 xCtr = -(F_LR_sep/2/pixSizeX)-1 172 yCtr = 127176 yCtr = nPix_Y/2 173 177 V_Detector_2Q(det_FR,qTot_FR,qx_FR,qy_FR,qz_FR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 174 178 // Print "xy for FR = ",xCtr,yCtr … … 189 193 pixSizeX = VCALC_getPixSizeX("FT") 190 194 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 193 199 yCtr = -(F_TB_sep/2/pixSizeY)-1 194 200 // global sdd_offset is in (mm), convert to meters here for the Q-calculation … … 211 217 pixSizeX = VCALC_getPixSizeX("FB") 212 218 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)?? 216 224 // global sdd_offset is in (mm), convert to meters here for the Q-calculation 217 225 V_Detector_2Q(det_FB,qTot_FB,qx_FB,qy_FB,qz_FB,xCtr,yCtr,sdd+F_sdd_offset/1000,lam,pixSizeX,pixSizeY) … … 234 242 String folderStr,type 235 243 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 237 245 238 246 /// !! 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... … … 259 267 pixSizeY = VCALC_getPixSizeY(type) 260 268 269 nPix_X = VCALC_get_nPix_X(type) 270 nPix_Y = VCALC_get_nPix_Y(type) 271 261 272 //TODO -- get this from a global 262 xCtr = 64273 xCtr = nPix_X/2 263 274 nPix = trunc(LR_sep/2/pixSizeX) // approx # of pixels Left/right of center that are not obscured by L/R panels 264 275 … … 442 453 Function V_CalculateQMiddlePanels() 443 454 444 Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY 455 Variable xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,nPix_X,nPix_Y 445 456 Variable M_LR_sep,M_TB_sep,M_offset, M_sdd_offset 446 457 … … 462 473 463 474 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 465 476 Wave det_MT,det_MB // these are (128,48) 466 477 … … 476 487 pixSizeX = VCALC_getPixSizeX("ML") 477 488 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 481 494 V_Detector_2Q(det_ML,qTot_ML,qx_ML,qy_ML,qz_ML,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 482 495 // Print "xy for ML = ",xCtr,yCtr … … 503 516 pixSizeX = VCALC_getPixSizeX("MR") 504 517 pixSizeY = VCALC_getPixSizeY("MR") 518 519 nPix_X = VCALC_get_nPix_X("MR") 520 nPix_Y = VCALC_get_nPix_Y("MR") 505 521 506 522 xCtr = -(M_LR_sep/2/pixSizeX)-1 507 yCtr = 127523 yCtr = nPix_Y/2 508 524 V_Detector_2Q(det_MR,qTot_MR,qx_MR,qy_MR,qz_MR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 509 525 // Print "xy for MR = ",xCtr,yCtr … … 524 540 pixSizeX = VCALC_getPixSizeX("MT") 525 541 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 528 546 yCtr = -(M_TB_sep/2/pixSizeY)-1 529 547 // global sdd_offset is in (mm), convert to meters here for the Q-calculation … … 546 564 pixSizeX = VCALC_getPixSizeX("MB") 547 565 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)?? 551 571 // global sdd_offset is in (mm), convert to meters here for the Q-calculation 552 572 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 271 271 end 272 272 273 274 // return the number of pixels in x-dimension 275 Function 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) 319 end 320 321 // return the number of pixels in y-dimension 322 Function 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) 366 end 367 368 369 273 370 // SDD offset of the top/bottom panels 274 371 // value returned is in mm (so beware) -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf
r958 r963 647 647 SetDataFolder root:Packages:NIST:VSANS:VCALC 648 648 649 Make/O/D/N=2 fpx1,fpy1,mpx1,mpy1 // for display of the detector panels650 Make/O/D/N=2 fv_degX,fv_degY651 652 // to fill in:653 // values for always-visible items654 String/G gPresetPopStr = "Low Q;High Q;Converging Pinholes;Narrow Slit Aperture;Converging Slits;White Beam;Polarizer;"655 String/G gBinTypeStr = "One;Two;Four;Slit Mode;"656 649 657 650 ///// FRONT DETECTOR BANKS … … 667 660 // detector resolution (xy for each bank!) 668 661 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 670 663 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) 672 665 673 666 Variable/G gFront_T_pixelX = 0.4 // (cm) these tubes are horizontal … … 677 670 678 671 // 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 680 682 681 683 … … 690 692 // detector resolution (xy for each bank!) 691 693 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) 693 695 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) 695 697 696 698 Variable/G gMiddle_T_pixelX = 0.4 // (cm) these tubes are horizontal … … 698 700 Variable/G gMiddle_B_pixelX = 0.4 // (cm) 699 701 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 700 714 701 715 … … 706 720 Variable/G gBack_pixelX = 0.1 // 1mm resolution (units of cm here) 707 721 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 708 724 709 725 … … 714 730 SetDataFolder root:Packages:NIST:VSANS:VCALC:Front 715 731 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 718 736 Duplicate/O det_FL qTot_FL,qx_FL,qy_FL,qz_FL 719 737 Duplicate/O det_FR qTot_FR,qx_FR,qy_FR,qz_FR … … 725 743 SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle 726 744 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 729 749 Duplicate/O det_ML qTot_ML,qx_ML,qy_ML,qz_ML 730 750 Duplicate/O det_MR qTot_MR,qx_MR,qy_MR,qz_MR … … 736 756 SetDataFolder root:Packages:NIST:VSANS:VCALC:Back 737 757 738 Make/O/D/N=( 320,320) det_B758 Make/O/D/N=(::gBack_nPix_X,::gBack_nPix_Y) det_B 739 759 Duplicate/O det_B qTot_B,qx_B,qy_B,qz_B 740 760 741 761 762 763 742 764 //////////// FOR THE PANEL 743 765 744 766 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 745 779 746 780 // 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 11 11 ////////////////////////////// 12 12 ////////////////////////////// 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. 13 16 14 17 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_ReadWrite_HDF5.ipf
r960 r963 7 7 // 8 8 // 9 10 11 // thought this would be useful, but the file name (folder) is stuck in the middle... 12 Strconstant ksPathPrefix = "root:(folder):entry:entry1:" 13 9 14 10 15
Note: See TracChangeset
for help on using the changeset viewer.