Changeset 1128 for sans/Dev/trunk/NCNR_User_Procedures/Reduction
- Timestamp:
- Feb 25, 2019 3:17:03 PM (4 years ago)
- Location:
- sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Q.ipf
r1114 r1128 154 154 F_B_sep = VCALC_getPanelTranslation("FB") 155 155 156 SDD = VCALC_getSDD("FL") //nominal SDD [cm] - need offset for TB 156 157 157 lam = VCALC_getWavelength() 158 158 … … 165 165 // TODO (make the N along the tube length a variable, since this can be reset @ acquisition) 166 166 167 F_sdd_setback = VCALC_getTopBottomSDDSetback("FT") //T/B are 41 cm farther back //TODO: make all detector parameters global, not hard-wired 167 // F_sdd_setback = VCALC_getTopBottomSDDSetback("FT") //T/B are 41 cm farther back //TODO: make all detector parameters global, not hard-wired 168 F_sdd_setback = 0 // this setback is included in the SDD value 168 169 169 170 // detector data to bin … … 206 207 V_putDet_beam_center_x("VCALC","FL",xCtr) 207 208 V_putDet_beam_center_y("VCALC","FL",yCtr) 208 209 210 SDD = VC_getSDD("FL") // SDD [cm] - INCLUDES offset for TB 211 209 212 // VC_Detector_2Q(det_FL,qTot_FL,qx_FL,qy_FL,qz_FL,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 210 213 VC_Detector_2Q_NonLin(det_FL,qTot_FL,qx_FL,qy_FL,qz_FL,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,"FL") … … 250 253 V_putDet_beam_center_x("VCALC","FR",xCtr) 251 254 V_putDet_beam_center_y("VCALC","FR",yCtr) 255 256 SDD = VC_getSDD("FR") // SDD [cm] - INCLUDES offset for TB 257 252 258 // VC_Detector_2Q(det_FR,qTot_FR,qx_FR,qy_FR,qz_FR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) 253 259 VC_Detector_2Q_NonLin(det_FR,qTot_FR,qx_FR,qy_FR,qz_FR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,"FR") … … 289 295 V_putDet_beam_center_x("VCALC","FT",xCtr) 290 296 V_putDet_beam_center_y("VCALC","FT",yCtr) 291 297 298 SDD = VC_getSDD("FT") // SDD [cm] - INCLUDES offset for TB 299 292 300 // global sdd_offset is in (mm), convert to meters here for the Q-calculation 293 301 // VC_Detector_2Q(det_FT,qTot_FT,qx_FT,qy_FT,qz_FT,xCtr,yCtr,sdd+F_sdd_offset/1000,lam,pixSizeX,pixSizeY) 294 VC_Detector_2Q_NonLin(det_FT,qTot_FT,qx_FT,qy_FT,qz_FT,xCtr,yCtr,sdd +F_sdd_setback,lam,pixSizeX,pixSizeY,"FT")302 VC_Detector_2Q_NonLin(det_FT,qTot_FT,qx_FT,qy_FT,qz_FT,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,"FT") 295 303 296 304 // Print "xy for FT = ",xCtr,yCtr … … 330 338 V_putDet_beam_center_x("VCALC","FB",xCtr) 331 339 V_putDet_beam_center_y("VCALC","FB",yCtr) 332 340 341 SDD = VC_getSDD("FB") // SDD [cm] - INCLUDES offset for TB 342 333 343 // global sdd_offset is in (mm), convert to meters here for the Q-calculation 334 344 // VC_Detector_2Q(det_FB,qTot_FB,qx_FB,qy_FB,qz_FB,xCtr,yCtr,sdd+F_sdd_offset/1000,lam,pixSizeX,pixSizeY) 335 VC_Detector_2Q_NonLin(det_FB,qTot_FB,qx_FB,qy_FB,qz_FB,xCtr,yCtr,sdd +F_sdd_setback,lam,pixSizeX,pixSizeY,"FB")345 VC_Detector_2Q_NonLin(det_FB,qTot_FB,qx_FB,qy_FB,qz_FB,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY,"FB") 336 346 337 347 // Print "xy for FB = ",xCtr,yCtr … … 689 699 M_B_sep = VCALC_getPanelTranslation("MB") 690 700 691 SDD = VCALC_getSDD("ML") //nominal SDD [cm] - need offset for TB692 701 lam = VCALC_getWavelength() 693 702 … … 699 708 700 709 // TODO (make the N along the tube length a variable, since this can be reset @ acquisition) 701 M_sdd_setback = VCALC_getTopBottomSDDSetback("MT") //T/B are 41 cm farther back //TODO: make all detector parameters global, not hard-wired702 710 // M_sdd_setback = VCALC_getTopBottomSDDSetback("MT") //T/B are 41 cm farther back //TODO: make all detector parameters global, not hard-wired 711 M_sdd_setback = 0 703 712 704 713 // SetDataFolder root:Packages:NIST:VSANS:VCALC:Middle … … 739 748 V_putDet_beam_center_x("VCALC","ML",xCtr) 740 749 V_putDet_beam_center_y("VCALC","ML",yCtr) 750 751 SDD = VC_getSDD("ML") //SDD [cm] - INCLUDES offset for TB 741 752 742 753 // VC_Detector_2Q(det_ML,qTot_ML,qx_ML,qy_ML,qz_ML,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) … … 787 798 V_putDet_beam_center_x("VCALC","MR",xCtr) 788 799 V_putDet_beam_center_y("VCALC","MR",yCtr) 800 801 SDD = VC_getSDD("MR") //SDD [cm] - INCLUDES offset for TB 789 802 790 803 // VC_Detector_2Q(det_MR,qTot_MR,qx_MR,qy_MR,qz_MR,xCtr,yCtr,sdd,lam,pixSizeX,pixSizeY) … … 828 841 V_putDet_beam_center_x("VCALC","MT",xCtr) 829 842 V_putDet_beam_center_y("VCALC","MT",yCtr) 843 844 SDD = VC_getSDD("MT") //SDD [cm] - INCLUDES offset for TB 830 845 831 846 // global sdd_offset is in (mm), convert to meters here for the Q-calculation … … 869 884 V_putDet_beam_center_x("VCALC","MB",xCtr) 870 885 V_putDet_beam_center_y("VCALC","MB",yCtr) 886 887 SDD = VC_getSDD("MB") //SDD [cm] - INCLUDES offset for TB 871 888 872 889 // global sdd_offset is in (mm), convert to meters here for the Q-calculation … … 1257 1274 B_offset = V_Value 1258 1275 1259 SDD = VC ALC_getSDD("B") //nominal SDD - need offset for TB1276 SDD = VC_getSDD("B") // SDD 1260 1277 lam = VCALC_getWavelength() 1261 1278 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Utils.ipf
r1119 r1128 37 37 // need pixel dimensions 38 38 // nominal sdd in cm, offset in cm, want result in cm ! 39 sdd = VCALC_getSDD(type) + VCALC_getTopBottomSDDSetback(type) // result is sdd in [cm] 39 40 sdd = VC_getSDD(type) // setback is already included VCALC_getTopBottomSDDSetback(type) // result is sdd in [cm] 40 41 41 42 pixSizeX = VCALC_getPixSizeX(type) // cm -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_SideView.ipf
r1093 r1128 453 453 Label/W=VCALC#TopView left "\\Z10Horizontal position (cm)" 454 454 Label/W=VCALC#TopView bottom "\\Z10SDD (cm)" 455 SetAxis/W=VCALC#TopView left -80.0,80.0455 SetAxis/W=VCALC#TopView left 80.0,-80.0 456 456 SetAxis/W=VCALC#TopView bottom 0,2500 457 457 TextBox/W=VCALC#TopView/C/N=text0/A=MC/X=41.61/Y=43.62 "\\JCTOP VIEW\r= Left/Right panels" -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf
r1109 r1128 19 19 20 20 21 // returns the nominal SDD from the panel -- value is [cm] 22 // Does NOT include the setback of the T/B panels. This is a separate value 23 Function VCALC_getSDD(type) 24 String type 25 26 Variable sdd 27 28 strswitch(type) 29 case "FL": 30 case "FR": 31 ControlInfo/W=VCALC VCALCCtrl_2d 32 SDD = V_Value 33 break 34 case "FT": 35 case "FB": 36 ControlInfo/W=VCALC VCALCCtrl_2d 37 SDD = V_Value 38 break 39 40 case "ML": 41 case "MR": 42 ControlInfo/W=VCALC VCALCCtrl_3d 43 SDD = V_Value 44 break 45 case "MT": 46 case "MB": 47 ControlInfo/W=VCALC VCALCCtrl_3d 48 SDD = V_Value 49 break 50 51 case "B": 52 ControlInfo/W=VCALC VCALCCtrl_4b 53 SDD = V_Value 54 break 55 56 default: 57 Print "Error -- type not found in V_getSDD(type)" 58 sdd = NaN //no match for type 59 endswitch 60 61 return(sdd) 62 end 21 63 22 64 23 // returns the panel separation [cm] … … 125 84 end 126 85 86 // returns the wavelength spread from the panel -- value is fraction 87 Function VCALC_getWavelengthSpread() 88 89 ControlInfo/W=VCALC VCALCCtrl_0d 90 91 return(V_Value) 92 end 93 127 94 // returns the number of neutrons on the sample 128 95 Function VCALC_getImon() … … 153 120 Variable pixSizeX = V_getDet_x_pixel_size("VCALC",type) 154 121 155 // SetDataFolder root:Packages:NIST:VSANS:VCALC156 //157 // strswitch(type)158 // case "FL":159 // NVAR pixSizeX = gFront_L_pixelX160 // break161 // case "FR":162 // NVAR pixSizeX = gFront_R_pixelX163 // break164 // case "FT":165 // NVAR pixSizeX = gFront_T_pixelX166 // break167 // case "FB":168 // NVAR pixSizeX = gFront_B_pixelX169 // break170 //171 // case "ML":172 // NVAR pixSizeX = gMiddle_L_pixelX173 // break174 // case "MR":175 // NVAR pixSizeX = gMiddle_R_pixelX176 // break177 // case "MT":178 // NVAR pixSizeX = gMiddle_T_pixelX179 // break180 // case "MB":181 // NVAR pixSizeX = gMiddle_B_pixelX182 // break183 //184 // case "B":185 // NVAR pixSizeX = gBack_pixelX186 // break187 //188 // default:189 // Print "Detector type mismatch in V_getPixSizeX(type)"190 // setDataFolder root:191 // return(NaN)192 // endswitch193 //194 // setDataFolder root:195 196 122 return(pixSizeX) 197 123 end … … 203 129 Variable pixSizeY = V_getDet_y_pixel_size("VCALC",type) 204 130 205 // SetDataFolder root:Packages:NIST:VSANS:VCALC206 //207 // strswitch(type)208 // case "FL":209 // NVAR pixSizeY = gFront_L_pixelY210 // break211 // case "FR":212 // NVAR pixSizeY = gFront_R_pixelY213 // break214 // case "FT":215 // NVAR pixSizeY = gFront_T_pixelY216 // break217 // case "FB":218 // NVAR pixSizeY = gFront_B_pixelY219 // break220 //221 // case "ML":222 // NVAR pixSizeY = gMiddle_L_pixelY223 // break224 // case "MR":225 // NVAR pixSizeY = gMiddle_R_pixelY226 // break227 // case "MT":228 // NVAR pixSizeY = gMiddle_T_pixelY229 // break230 // case "MB":231 // NVAR pixSizeY = gMiddle_B_pixelY232 // break233 //234 // case "B":235 // NVAR pixSizeY = gBack_pixelY236 // break237 //238 // default:239 // Print "Detector type mismatch in V_getPixSizeY(type)"240 // SetDataFolder root:241 // return(NaN)242 // endswitch243 //244 // setDatafolder root:245 246 131 return(pixSizeY) 247 132 end … … 254 139 Variable nPix = V_getDet_pixel_num_x("VCALC",type) 255 140 256 // SetDataFolder root:Packages:NIST:VSANS:VCALC257 //258 // strswitch(type)259 // case "FL":260 // NVAR nPix = gFront_L_nPix_X261 // break262 // case "FR":263 // NVAR nPix = gFront_R_nPix_X264 // break265 // case "FT":266 // NVAR nPix = gFront_T_nPix_X267 // break268 // case "FB":269 // NVAR nPix = gFront_B_nPix_X270 // break271 //272 // case "ML":273 // NVAR nPix = gMiddle_L_nPix_X274 // break275 // case "MR":276 // NVAR nPix = gMiddle_R_nPix_X277 // break278 // case "MT":279 // NVAR nPix = gMiddle_T_nPix_X280 // break281 // case "MB":282 // NVAR nPix = gMiddle_B_nPix_X283 // break284 //285 // case "B":286 // NVAR nPix = gBack_nPix_X287 // break288 //289 // default:290 // Print "Detector type mismatch in VCALC_get_nPix_X(type)"291 // SetDataFolder root:292 // return(NaN)293 // endswitch294 //295 // setDataFolder root:296 297 141 return(nPix) 298 142 end … … 304 148 Variable nPix = V_getDet_pixel_num_y("VCALC",type) 305 149 306 // SetDataFolder root:Packages:NIST:VSANS:VCALC307 //308 // strswitch(type)309 // case "FL":310 // NVAR nPix = gFront_L_nPix_Y311 // break312 // case "FR":313 // NVAR nPix = gFront_R_nPix_Y314 // break315 // case "FT":316 // NVAR nPix = gFront_T_nPix_Y317 // break318 // case "FB":319 // NVAR nPix = gFront_B_nPix_Y320 // break321 //322 // case "ML":323 // NVAR nPix = gMiddle_L_nPix_Y324 // break325 // case "MR":326 // NVAR nPix = gMiddle_R_nPix_Y327 // break328 // case "MT":329 // NVAR nPix = gMiddle_T_nPix_Y330 // break331 // case "MB":332 // NVAR nPix = gMiddle_B_nPix_Y333 // break334 //335 // case "B":336 // NVAR nPix = gBack_nPix_Y337 // break338 //339 // default:340 // Print "Detector type mismatch in VCALC_get_nPix_Y(type)"341 // SetDataFolder root:342 // return(NaN)343 // endswitch344 //345 // SetDataFolder root:346 347 150 return(nPix) 348 151 end … … 380 183 381 184 case "B": 185 case "B ": 382 186 SetDataFolder root: 383 187 return(0) … … 402 206 ////////////////////////////////// 403 207 404 // read the number of guides from the slider 405 // return the Source to Sample Distance in [cm] 208 // get the sourceAperture_to_GateValve distance from the table 209 // 210 // correct for the sampleAperture_to_GateValve distance 211 // 212 // return the SourceAp to SampleAp Distance in [cm] 406 213 Function VC_calcSSD() 407 214 408 Variable ng,ssd 409 ControlInfo VCALCCtrl_0a215 Variable ng,ssd,samAp_to_GV 216 ControlInfo/W=VCALC VCALCCtrl_0a 410 217 ng = V_Value 411 412 ssd = 2388 - ng*200 413 print "SSD (cm) = ",ssd 218 219 ControlInfo/W=VCALC VCALCCtrl_1d 220 samAp_to_GV = V_Value // [cm] 221 222 switch(ng) 223 case 0: 224 ssd = 2441 225 break 226 case 1: 227 ssd = 2157 228 break 229 case 2: 230 ssd = 1976 231 break 232 case 3: 233 ssd = 1782 234 break 235 case 4: 236 ssd = 1582 237 break 238 case 5: 239 ssd = 1381 240 break 241 case 6: 242 ssd = 1181 243 break 244 case 7: 245 ssd = 980 246 break 247 case 8: 248 ssd = 780 249 break 250 case 9: 251 ssd = 579 252 break 253 default: 254 Print "Error - using default SSD value" 255 ssd = 2441 256 endswitch 257 ssd -= samAp_to_GV 258 259 // print "SSD (cm) = ",ssd 414 260 return(ssd) 415 261 End … … 422 268 423 269 Variable ng,a1 424 ControlInfo VCALCCtrl_0a270 ControlInfo/W=VCALC VCALCCtrl_0a 425 271 ng = V_Value 426 427 a1 = 6 // 60 mm diameter 428 429 Print "Source Ap diam (cm) = ",a1 272 273 ControlInfo/W=VCALC VCALCCtrl_0f 274 String apStr = S_Value 275 276 277 if(ng > 0) 278 a1 = 6 // 60 mm diameter 279 else 280 sscanf apStr, "%g cm", a1 281 endif 282 283 // Print "Source Ap diam (cm) = ",a1 430 284 return(a1) 431 285 End 432 286 433 434 287 // reports tha value in [cm] 288 Function VC_sampleApertureDiam() 289 290 ControlInfo/W=VCALC VCALCCtrl_1c 291 Variable val = str2num(S_Value) 292 293 return(val) 294 End 435 295 /////////////////// 436 296 // … … 468 328 469 329 // middle carriage 470 SetVariable VCALCCtrl_3a,value=_NUM: 0 //Left offset471 SetVariable VCALCCtrl_3aa,value=_NUM: 0 //Right offset330 SetVariable VCALCCtrl_3a,value=_NUM:-10 //Left offset 331 SetVariable VCALCCtrl_3aa,value=_NUM:-10 //Right offset 472 332 SetVariable VCALCCtrl_3b,value=_NUM:4 //Top offset (doesn't matter) 473 333 SetVariable VCALCCtrl_3bb,value=_NUM:-4 //Bottom offset (doesn't matter) … … 570 430 end 571 431 432 // calculates L2, the sample aperture to detector distance 433 Function VC_calc_L2(detStr) 434 String detStr 435 436 Variable a2_to_GV,sam_to_GV,sdd,l2 437 sdd = VC_getSDD(detStr) //sample pos to detector 438 ControlInfo VCALCCtrl_1d 439 a2_to_GV = V_Value 440 ControlInfo VCALCCtrl_1e 441 sam_to_GV = V_Value 442 l2 = sdd - sam_to_GV + a2_to_GV 443 444 return(l2) 445 End 572 446 573 447 // … … 578 452 // 579 453 // returns a value in [cm] 580 Function VC_beamDiameter(direction, carrNum)454 Function VC_beamDiameter(direction,detStr) 581 455 String direction 582 Variable carrNum456 String detStr 583 457 584 458 // NVAR lens = root:Packages:NIST:SAS:gUsingLenses … … 591 465 Variable lambda,lambda_width,bs_factor 592 466 593 // NVAR L2diff = root:Packages:NIST:SAS:L2diff 594 595 // TODO: proper value for l2Diff, bs_factor 596 l2Diff = 0 467 // TODO: proper value for bs_factor 597 468 bs_factor = 1.05 598 469 599 470 l1 = VC_calcSSD() 600 471 lambda = VCALC_getWavelength() 601 ControlInfo VCALCCtrl_0d 602 lambda_width = str2num(S_Value) 603 604 605 l2 = VC_getSDD(carrNum) + L2diff 606 472 lambda_width = VCALC_getWavelengthSpread() 473 474 475 Variable a2_to_GV,sam_to_GV,sdd 476 sdd = VC_getSDD(detStr) //sample pos to detector 477 ControlInfo VCALCCtrl_1d 478 a2_to_GV = V_Value 479 ControlInfo VCALCCtrl_1e 480 sam_to_GV = V_Value 481 l2 = sdd - sam_to_GV + a2_to_GV 482 483 607 484 // TODO verify that these values are in cm 608 485 a1 = VC_sourceApertureDiam() … … 642 519 // 3=back 643 520 // return value is in cm 644 Function VC_getSDD(carrNum) 645 Variable carrNum 646 647 if(carrNum == 1) 648 ControlInfo VCALCCtrl_2d 649 endif 650 if(carrNum == 2) 651 ControlInfo VCALCCtrl_3d 652 endif 653 if(carrNum == 3) 654 ControlInfo VCALCCtrl_4b 655 endif 656 657 return(V_Value) 658 end 659 660 661 // these are numbers from NG3, when it was a SANS instrument 662 // 663 // updated with new flux numbers from John Barker 664 // NG3 - Feb 2009 665 // NG7 - July 2009 666 // 667 // guide loss has been changed to 0.95 rather than the old value of 0.95 668 // 669 // other values are changed in the initialization routines 521 // actual Sample position to detector distance is reported 522 // Top/Bottom setback is included 523 Function VC_getSDD(detStr) 524 String detStr 525 526 Variable sdd 527 528 strswitch(detstr) 529 case "B": 530 case "B ": 531 ControlInfo VCALCCtrl_4b 532 break 533 case "ML": 534 case "MR": 535 case "MT": 536 case "MB": 537 ControlInfo VCALCCtrl_3d 538 break 539 case "FL": 540 case "FR": 541 case "FT": 542 case "FB": 543 ControlInfo VCALCCtrl_2d 544 break 545 default: 546 Print "no case matched in VC_getSDD()" 547 endswitch 548 549 // this is gate valve to detector distance 550 sdd = V_Value 551 552 sdd += VCALC_getTopBottomSDDSetback(detStr) 553 554 // VCALCCtrl_1e is Sample Pos to Gate Valve (cm) 555 ControlInfo VCALCCtrl_1e 556 sdd += V_Value 557 558 return(sdd) 559 end 560 561 562 // TODO 563 // -- verify all of the numbers, constants, and "empirical" transmission corrections 564 // -- 670 565 // 671 566 Function V_beamIntensity() 672 567 673 Variable a lpha,f,t,t4,t5,t6,as,solid_angle,l1,d2_phi568 Variable as,solid_angle,l1,d2_phi 674 569 Variable a1,a2,retVal 675 Variable l_gap,guide_width,ng676 Variable lambda_t ,b,c677 Variable lambda, t1,t2,t3,phi_0570 Variable ng 571 Variable lambda_t 572 Variable lambda,phi_0 678 573 Variable lambda_width 679 Variable guide_loss 574 Variable guide_loss,t_guide,t_filter,t_total,t_special 680 575 681 576 NVAR gBeamInten = root:Packages:NIST:VSANS:VCALC:gBeamIntensity 682 683 577 684 578 // TODO 685 // these are numbers from NG3, when it was a SANS instrument 686 687 lambda_t = 5.50 688 689 t1 = 0.63 690 t2 = 1.0 691 t3 = 0.75 692 l_gap = 100.0 693 guide_width = 6.0 694 695 //new values, from 11/2009 --- BeamFluxReport_2009.ifn 696 phi_0 = 2.42e13 697 b = 0.0 698 c = -0.0243 699 guide_loss = 0.924 700 701 702 579 // -- verify these numbers 580 lambda_t = 6.20 581 phi_0 = 1.82e13 582 guide_loss = 0.97 583 t_special = 1 584 703 585 ControlInfo VCALCCtrl_0a 704 586 ng = V_Value 705 587 706 588 lambda = VCALC_getWavelength() 707 ControlInfo VCALCCtrl_0d 708 lambda_width = str2num(S_Value) 709 710 589 lambda_width = VCALC_getWavelengthSpread() 711 590 l1 = VC_calcSSD() 712 591 … … 718 597 a2 = V_Value 719 598 720 721 alpha = (a1+a2)/(2*l1) //angular divergence of beam 722 f = l_gap*alpha/(2*guide_width) 723 t4 = (1-f)*(1-f) 724 t5 = exp(ng*ln(guide_loss)) // trans losses of guides in pre-sample flight 725 t6 = 1 - lambda*(b-(ng/8)*(b-c)) //experimental correction factor 726 t = t1*t2*t3*t4*t5*t6 599 // alpha = (a1+a2)/(2*l1) //angular divergence of beam 600 // f = l_gap*alpha/(2*guide_width) 601 // t4 = (1-f)*(1-f) 602 // t6 = 1 - lambda*(b-(ng/8)*(b-c)) //experimental correction factor 603 604 t_guide = exp(ng*ln(guide_loss)) // trans losses of guides in pre-sample flight 605 t_filter = exp(-0.371 - 0.0305*lambda - 0.00352*lambda*lambda) 606 t_total = t_special*t_guide*t_filter 607 727 608 728 609 as = pi/4*a2*a2 //area of sample in the beam … … 733 614 solid_angle = pi/4* (a1/l1)*(a1/l1) 734 615 735 retVal = as * d2_phi * lambda_width * solid_angle * t 616 retVal = as * d2_phi * lambda_width * solid_angle * t_total 736 617 737 618 // set the global for display 738 619 gBeamInten = retVal 620 739 621 return (retVal) 740 622 end … … 750 632 751 633 // return a beamstop diameter (cm) larger than maximum beam dimension 752 Function VC_beamstopDiam( carrNum)753 Variable carrNum634 Function VC_beamstopDiam(detStr) 635 String detStr 754 636 755 637 Variable bm=0 … … 761 643 bs = 1 //force the diameter to 1" 762 644 else 763 bm = VC_beamDiameter("maximum", carrNum)645 bm = VC_beamDiameter("maximum",detStr) 764 646 do 765 647 bs += 1 … … 770 652 End 771 653 772 654 // multiply the appropriate IQ data by the beamstop shadow factor for display 655 // 656 Function V_IQ_BeamstopShadow() 657 658 String popStr 659 Variable binType 660 661 ControlInfo/W=VCALC popup_b 662 popStr = S_Value 663 664 binType = V_BinTypeStr2Num(popStr) 665 666 String folderStr = "root:Packages:NIST:VSANS:VCALC:" 667 668 669 String extStr ="" 670 671 switch(binType) 672 case 1: 673 extStr = ksBinType1 674 675 break 676 case 2: 677 extStr = ksBinType2 678 679 break 680 case 3: 681 extStr = ksBinType3 682 683 break 684 case 4: /// this is for a tall, narrow slit mode 685 extStr = ksBinType4 686 687 break 688 case 5: 689 extStr = ksBinType5 690 691 break 692 case 6: 693 extStr = ksBinType6 694 695 break 696 case 7: 697 extStr = ksBinType7 698 699 break 700 701 default: 702 Abort "Binning mode not found in V_IQ_BeamstopShadow"// when no case matches 703 endswitch 704 705 706 // root:Packages:NIST:VSANS:VCALC:fSubS_qxqy_MLR 707 // root:Packages:NIST:VSANS:VCALC:iBin_qxqy_MLR 708 709 Variable ii 710 String ext 711 // loop over all of the types of data 712 for(ii=0;ii<ItemsInList(extStr);ii+=1) 713 ext = StringFromList(ii, extStr, ";") 714 Wave iq = $(folderStr+"iBin_qxqy_"+ext) 715 Wave fs = $(folderStr+"fSubS_qxqy_"+ext) 716 iq = (fs < 0.1) ? iq*0.1 : iq*fs 717 // iq *= fs 718 endfor 719 720 return(0) 721 end -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf
r1117 r1128 63 63 // always visible stuff, not on any tab 64 64 65 GroupBox group0,pos={10,10},size={44 4,180},title="Setup"66 TabControl Vtab,labelBack=(45000,61000,58000),pos={14, 215},size={430,426},tabLabel(0)="Collim"65 GroupBox group0,pos={10,10},size={440,125},title="Setup" 66 TabControl Vtab,labelBack=(45000,61000,58000),pos={14,150},size={430,200},tabLabel(0)="Collim" 67 67 TabControl Vtab,tabLabel(1)="Sample",tabLabel(2)="Front Det",tabLabel(3)="Mid Det" 68 68 TabControl Vtab,tabLabel(4)="Back Det",tabLabel(5)="Simul",value= 0,proc=VCALCTabProc … … 82 82 SetVariable setVar_a,limits={0.3,30,0.2},value=_NUM:20 83 83 84 ValDisplay valDisp_a,pos={50,100},size={150,15},title="Beam Intensity",value=root:Packages:NIST:VSANS:VCALC:gBeamIntensity 84 ValDisplay valDisp_a,pos={50,380},size={150,15},title="Beam Intensity",value=root:Packages:NIST:VSANS:VCALC:gBeamIntensity 85 86 ValDisplay valDisp_b,pos={50,410},size={150,15},title="Q min (Front) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_F 87 ValDisplay valDisp_c,pos={250,410},size={150,15},title="Q max (Front) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_F 88 ValDisplay valDisp_d,pos={50,440},size={150,15},title="Q min (Mid) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_M 89 ValDisplay valDisp_e,pos={250,440},size={150,15},title="Q max (Mid) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_M 90 ValDisplay valDisp_f,pos={50,470},size={150,15},title="Q min (Back) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_B 91 ValDisplay valDisp_g,pos={250,470},size={150,15},title="Q max (Back) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_B 92 ValDisplay valDisp_h,pos={50,500},size={200,15},title="Beam Diam (middle) (cm)",value=root:Packages:NIST:VSANS:VCALC:gBeamDiam 93 ValDisplay valDisp_i,pos={50,530},size={200,15},title="Beam Stop Diam (middle) (in)",value=root:Packages:NIST:VSANS:VCALC:gBeamStopDiam 94 ValDisplay valDisp_j,pos={50,560},size={200,15},title="Real Q min (1/A)",value=root:Packages:NIST:VSANS:VCALC:gRealQMin 85 95 86 96 … … 149 159 150 160 // tab(0), collimation - initially visible 151 Slider VCALCCtrl_0a,pos={223,324 },size={200,45},limits={0,10,1},value= 1,vert= 0152 SetVariable VCALCCtrl_0b,pos={25,294 },size={120,15},title="wavelength"161 Slider VCALCCtrl_0a,pos={223,324-50},size={200,45},limits={0,9,1},value= 1,vert= 0,proc=V_GuideSliderProc 162 SetVariable VCALCCtrl_0b,pos={25,294-50},size={120,15},title="wavelength" 153 163 SetVariable VCALCCtrl_0b,limits={4,20,1},value=_NUM:8,proc=VC_Lambda_SetVarProc 154 PopupMenu VCALCCtrl_0c,pos={26,257 },size={150,20},title="monochromator"164 PopupMenu VCALCCtrl_0c,pos={26,257-50},size={150,20},title="monochromator" 155 165 PopupMenu VCALCCtrl_0c,mode=1,popvalue="Velocity Selector",value= root:Packages:NIST:VSANS:VCALC:gMonochromatorType 156 166 PopupMenu VCALCCtrl_0c,proc=VC_MonochromSelectPopup 157 PopupMenu VCALCCtrl_0d,pos={26,321 },size={115,20},title="delta lambda"158 PopupMenu VCALCCtrl_0d,mode=1,popvalue="0.1 0",value= root:Packages:NIST:VSANS:VCALC:gDeltaLambda167 PopupMenu VCALCCtrl_0d,pos={26,321-50},size={115,20},title="delta lambda" 168 PopupMenu VCALCCtrl_0d,mode=1,popvalue="0.12",value= root:Packages:NIST:VSANS:VCALC:gDeltaLambda 159 169 PopupMenu VCALCCtrl_0d,proc=VC_DeltaLamSelectPopup 160 PopupMenu VCALCCtrl_0e,pos={291,262 },size={132,20},title="source shape"170 PopupMenu VCALCCtrl_0e,pos={291,262-50},size={132,20},title="source shape" 161 171 PopupMenu VCALCCtrl_0e,mode=1,popvalue="circular",value= root:Packages:NIST:VSANS:VCALC:gSourceShape 162 172 PopupMenu VCALCCtrl_0e,proc=VC_SourceApShapeSelectPopup 163 PopupMenu VCALCCtrl_0f,pos={283,293 },size={141,20},title="source aperture"164 PopupMenu VCALCCtrl_0f,mode=1,popvalue=" 1.0 cm",value= root:Packages:NIST:VSANS:VCALC:gSourceDiam173 PopupMenu VCALCCtrl_0f,pos={283,293-50},size={141,20},title="source aperture" 174 PopupMenu VCALCCtrl_0f,mode=1,popvalue="6.0 cm",value= root:Packages:NIST:VSANS:VCALC:gSourceDiam 165 175 PopupMenu VCALCCtrl_0f,proc=VC_SourceAperDiamSelectPopup 166 176 167 177 168 178 // tab(1) - Sample conditions, initially not visible 169 PopupMenu VCALCCtrl_1a,pos={38,2 70},size={142,20},title="table location",disable=1179 PopupMenu VCALCCtrl_1a,pos={38,250-50},size={142,20},title="table location",disable=1 170 180 PopupMenu VCALCCtrl_1a,mode=1,popvalue="Changer",value= root:Packages:NIST:VSANS:VCALC:gTableLocation 171 PopupMenu VCALCCtrl_1b,pos={270,2 70},size={115,20},title="Aperture Shape",disable=1181 PopupMenu VCALCCtrl_1b,pos={270,250-50},size={115,20},title="Aperture Shape",disable=1 172 182 PopupMenu VCALCCtrl_1b,mode=1,popvalue="circular",value= root:Packages:NIST:VSANS:VCALC:gSampleApertureShape 173 PopupMenu VCALCCtrl_1c,pos={270,330},size={132,20},title="Aperture Size (cm)",disable=1 174 PopupMenu VCALCCtrl_1c,mode=1,popvalue="0.5",value= root:Packages:NIST:VSANS:VCALC:gSampleApertureDiam 175 183 PopupMenu VCALCCtrl_1c,pos={270,310-50},size={132,20},title="Aperture Diam (cm)",disable=1 184 PopupMenu VCALCCtrl_1c,mode=1,popvalue="1.27",value= root:Packages:NIST:VSANS:VCALC:gSampleApertureDiam 185 SetVariable VCALCCtrl_1d,pos={25,280-50},size={200,15},title="Sample Aperture to Gate Valve (cm)" 186 SetVariable VCALCCtrl_1d,limits={4,40,0.1},value=_NUM:22,proc=VC_A2_to_GV_SetVarProc,disable=1 187 SetVariable VCALCCtrl_1e,pos={25,310-50},size={200,15},title="Sample Pos to Gate Valve (cm)" 188 SetVariable VCALCCtrl_1e,limits={4,40,0.1},value=_NUM:11,proc=VC_Sam_to_GV_SetVarProc,disable=1 176 189 177 190 // tab(2) - Front detector panels, initially not visible 178 SetVariable VCALCCtrl_2a,pos={30,260 },size={150,15},title="LEFT Offset (cm)",proc=VC_FDet_LR_SetVarProc191 SetVariable VCALCCtrl_2a,pos={30,260-50},size={150,15},title="LEFT Offset (cm)",proc=VC_FDet_LR_SetVarProc 179 192 SetVariable VCALCCtrl_2a,limits={-20,19,0.1},disable=1,value=_NUM:-10 180 SetVariable VCALCCtrl_2aa,pos={30,290 },size={150,15},title="RIGHT Offset (cm)",proc=VC_FDet_LR_SetVarProc193 SetVariable VCALCCtrl_2aa,pos={30,290-50},size={150,15},title="RIGHT Offset (cm)",proc=VC_FDet_LR_SetVarProc 181 194 SetVariable VCALCCtrl_2aa,limits={-19,20,0.1},disable=1,value=_NUM:10 182 195 183 SetVariable VCALCCtrl_2b,pos={30,330 },size={150,15},title="TOP Offset (cm)",proc=VC_FDet_LR_SetVarProc196 SetVariable VCALCCtrl_2b,pos={30,330-50},size={150,15},title="TOP Offset (cm)",proc=VC_FDet_LR_SetVarProc 184 197 SetVariable VCALCCtrl_2b,limits={0,18,0.1},disable=1,value=_NUM:10 185 SetVariable VCALCCtrl_2bb,pos={30,360 },size={150,15},title="BOTTOM Offset (cm)",proc=VC_FDet_LR_SetVarProc198 SetVariable VCALCCtrl_2bb,pos={30,360-50},size={150,15},title="BOTTOM Offset (cm)",proc=VC_FDet_LR_SetVarProc 186 199 SetVariable VCALCCtrl_2bb,limits={-18,0,0.1},disable=1,value=_NUM:-10 187 200 188 SetVariable VCALCCtrl_2d,pos={205,260 },size={230,15},title="Sample to Detector Distance (cm)",proc=VC_FDet_SDD_SetVarProc201 SetVariable VCALCCtrl_2d,pos={205,260-50},size={230,15},title="Gate Valve to Detector Distance (cm)",proc=VC_FDet_SDD_SetVarProc 189 202 SetVariable VCALCCtrl_2d,limits={100,800,1},disable=1 ,value=_NUM:150 190 203 191 204 192 205 // tab(3) - Middle detector panels, initially not visible 193 SetVariable VCALCCtrl_3a,pos={30,260 },size={150,15},title="LEFT Offset (cm)",proc=VC_MDet_LR_SetVarProc206 SetVariable VCALCCtrl_3a,pos={30,260-50},size={150,15},title="LEFT Offset (cm)",proc=VC_MDet_LR_SetVarProc 194 207 SetVariable VCALCCtrl_3a,limits={-20,19,0.1},disable=1,value=_NUM:-7 195 SetVariable VCALCCtrl_3aa,pos={30,290 },size={150,15},title="RIGHT Offset (cm)",proc=VC_MDet_LR_SetVarProc208 SetVariable VCALCCtrl_3aa,pos={30,290-50},size={150,15},title="RIGHT Offset (cm)",proc=VC_MDet_LR_SetVarProc 196 209 SetVariable VCALCCtrl_3aa,limits={-19,20,0.1},disable=1,value=_NUM:7 197 210 198 SetVariable VCALCCtrl_3b,pos={30,330 },size={150,15},title="TOP Offset (cm)",proc=VC_MDet_LR_SetVarProc211 SetVariable VCALCCtrl_3b,pos={30,330-50},size={150,15},title="TOP Offset (cm)",proc=VC_MDet_LR_SetVarProc 199 212 SetVariable VCALCCtrl_3b,limits={0,18,0.1},disable=1,value=_NUM:14 200 SetVariable VCALCCtrl_3bb,pos={30,360 },size={150,15},title="BOTTOM Offset (cm)",proc=VC_MDet_LR_SetVarProc213 SetVariable VCALCCtrl_3bb,pos={30,360-50},size={150,15},title="BOTTOM Offset (cm)",proc=VC_MDet_LR_SetVarProc 201 214 SetVariable VCALCCtrl_3bb,limits={-18,0,0.1},disable=1,value=_NUM:-14 202 215 203 SetVariable VCALCCtrl_3d,pos={205,260 },size={230,15},title="Sample to Detector Distance (cm)",proc=VC_MDet_SDD_SetVarProc216 SetVariable VCALCCtrl_3d,pos={205,260-50},size={230,15},title="Gate Valve to Detector Distance (cm)",proc=VC_MDet_SDD_SetVarProc 204 217 SetVariable VCALCCtrl_3d,limits={800,2000,1},disable=1,value=_NUM:1000 205 218 206 219 207 220 // tab(4) - Back detector panel 208 SetVariable VCALCCtrl_4a,pos={188,290 },size={150,15},title="Lateral Offset (cm)"221 SetVariable VCALCCtrl_4a,pos={188,290-50},size={150,15},title="Lateral Offset (cm)" 209 222 SetVariable VCALCCtrl_4a,limits={0,20,0.1},disable=1,value=_NUM:0 210 SetVariable VCALCCtrl_4b,pos={188,260 },size={230,15},title="Sample to Detector Distance (cm)",proc=VC_BDet_SDD_SetVarProc223 SetVariable VCALCCtrl_4b,pos={188,260-50},size={230,15},title="Gate Valve to Detector Distance (cm)",proc=VC_BDet_SDD_SetVarProc 211 224 SetVariable VCALCCtrl_4b,limits={2000,2500,1},disable=1,value=_NUM:2200 212 225 // PopupMenu VCALCCtrl_4c,pos={40,260},size={180,20},title="Detector type",disable=1 … … 214 227 215 228 // tab(5) - Simulation setup 216 SetVariable VCALCCtrl_5a,pos={40,290 },size={200,15},title="Neutrons on Sample (imon)"229 SetVariable VCALCCtrl_5a,pos={40,290-50},size={200,15},title="Neutrons on Sample (imon)" 217 230 SetVariable VCALCCtrl_5a,limits={1e7,1e15,1e7},disable=1,value=_NUM:1e11,proc=VC_SimImon_SetVarProc 218 PopupMenu VCALCCtrl_5b,pos={40,260 },size={180,20},title="Model Function",disable=1231 PopupMenu VCALCCtrl_5b,pos={40,260-50},size={180,20},title="Model Function",disable=1 219 232 PopupMenu VCALCCtrl_5b,mode=1,popvalue="Debye",value= root:Packages:NIST:VSANS:VCALC:gModelFunctionType,proc=VC_SimModelFunc_PopProc 220 233 … … 232 245 V_beamIntensity() 233 246 247 // Print "Beam diam (middle) = ",VC_beamDiameter("horizontal",2) //middle carriage 248 249 // fill in the Qmin and Qmax values 250 V_QMinMax_Back() 251 V_QMinMax_Middle() 252 V_QMinMax_Front() 253 254 //calculate beam diameter and beamstop size 255 V_BeamDiamDisplay("maximum", "MR") //TODO -- hard-wired here for the Middle carriage (and in the SetVar label) 256 V_BeamStopDiamDisplay("MR") 257 258 //calculate the "real" QMin with the beamstop 259 V_QMin_withBeamStop("MR") //TODO -- hard-wired here as the middle carriage and MR panel 260 261 262 // 263 // Print "Still need to truncate the plotted data for Low Q that is behind the beam stop" 264 // multiply the averaged data by the shadow factor to simulate a beamstop 265 V_IQ_BeamstopShadow() 266 234 267 return(0) 235 268 End 269 270 236 271 237 272 // function to control the drawing of controls in the TabControl on the main panel … … 291 326 endfor 292 327 293 294 295 328 return(0) 296 329 End 330 331 332 333 // TODO 334 //changing the number of guides changes the SSD 335 // the source aperture popup may need to be updated 336 // 337 Function V_GuideSliderProc(ctrlName,sliderValue,event) 338 String ctrlName 339 Variable sliderValue 340 Variable event // bit field: bit 0: value set, 1: mouse down, 2: mouse up, 3: mouse moved 341 342 Variable recalc=0 343 SVAR apStr = root:Packages:NIST:VSANS:VCALC:gSourceDiam 344 345 if(event %& 0x1) // bit 0, value set 346 if(cmpstr(ctrlName,"") != 0) //here by direct action, so do LensCheck and recalculate 347 // recalc=1 348 // LensCheckProc("",2) //make sure lenses are deselected 349 endif 350 // sourceToSampleDist() //updates the SSD global and wave 351 //change the sourceAp popup, SDD range, etc 352 switch(sliderValue) 353 case 0: 354 // ControlInfo/W=SASCALC popup0 355 // mode=V_value 356 apStr = "0.75 cm;1.5 cm;3.0 cm;" 357 break 358 default: 359 apStr = "6 cm;" 360 endswitch 361 ControlUpdate/W=VCALC VCALCCtrl_0f 362 // UpdateControls() // the Ng global is actually set inside this function 363 Recalculate_AllDetectors() 364 endif 365 return 0 366 End 367 368 369 370 297 371 298 372 Function Front2DQ_Log_CheckProc(cba) : CheckBoxControl … … 314 388 return 0 315 389 End 316 317 318 319 320 321 390 322 391 … … 565 634 566 635 567 568 569 570 // 571 // setVar for the wavelength 572 // 573 Function VC_Lambda_SetVarProc(sva) : SetVariableControl 636 // 637 // setVar for the distance from Sample Position to Gave Valve 638 // 639 Function VC_Sam_to_GV_SetVarProc(sva) : SetVariableControl 574 640 STRUCT WMSetVariableAction &sva 575 641 … … 582 648 583 649 // // don't need to recalculate the views, but need to recalculate the detectors 584 // fPlotBackPanels() 585 // fPlotMiddlePanels() 586 // fPlotFrontPanels() 650 651 Recalculate_AllDetectors() 652 653 break 654 case -1: // control being killed 655 break 656 endswitch 657 658 return 0 659 End 660 661 662 // 663 // setVar for the distance from Sample Aperture to Gave Valve 664 // 665 Function VC_A2_to_GV_SetVarProc(sva) : SetVariableControl 666 STRUCT WMSetVariableAction &sva 667 668 switch( sva.eventCode ) 669 case 1: // mouse up 670 case 2: // Enter key 671 case 3: // Live update 672 Variable dval = sva.dval 673 String sval = sva.sval 674 675 // // don't need to recalculate the views, but need to recalculate the detectors 676 677 Recalculate_AllDetectors() 678 679 break 680 case -1: // control being killed 681 break 682 endswitch 683 684 return 0 685 End 686 687 // 688 // setVar for the wavelength 689 // 690 Function VC_Lambda_SetVarProc(sva) : SetVariableControl 691 STRUCT WMSetVariableAction &sva 692 693 switch( sva.eventCode ) 694 case 1: // mouse up 695 case 2: // Enter key 696 case 3: // Live update 697 Variable dval = sva.dval 698 String sval = sva.sval 699 700 // // don't need to recalculate the views, but need to recalculate the detectors 587 701 588 702 Recalculate_AllDetectors() … … 1106 1220 Variable/G gBeamIntensity= 0 1107 1221 1108 1222 Variable/G gQmin_F,gQmax_F,gQmin_M,gQmax_M,gQmin_B,gQmax_B 1223 Variable/G gBeamDiam,gBeamStopDiam 1224 Variable/G gRealQMin 1109 1225 1110 1226 // popup strings for each tab (then use the string in the panel) … … 1112 1228 String/G gMonochromatorType = "Velocity Selector;Graphite;White Beam;" 1113 1229 String/G gSourceShape = "circular;rectangular;converging pinholes;" 1114 String/G gSourceDiam = " 1.0 cm;2.0 cm;5.0 cm;"1230 String/G gSourceDiam = "6.0 cm;" 1115 1231 String/G gSourceDiam_0g = "0.75 cm;1.5 cm;3.0 cm;" // values from John Mar 2018 1116 String/G gDeltaLambda = "0. 01;0.10;0.20;0.30;0.40;"1232 String/G gDeltaLambda = "0.12;" 1117 1233 1118 1234 // tab 1 - sample conditions 1119 1235 String/G gTableLocation = "Changer;Stage;" 1120 1236 String/G gSampleApertureShape = "circular;rectangular;converging pinholes;" 1121 String/G gSampleApertureDiam = " 0.5;1.0;1.5;2.0;"1237 String/G gSampleApertureDiam = "1.27;1.59;1.0;2.0;" 1122 1238 1123 1239 // tab 2 … … 1144 1260 // Variable/G gOffset=0 1145 1261 Variable/G gSamAp=1.27 //samAp diameter in cm 1146 String/G gSourceApString = "1.43 cm;2.54 cm;3.81 cm;"1262 // String/G gSourceApString = "1.43 cm;2.54 cm;3.81 cm;" 1147 1263 String/G gApPopStr = "1/16\";1/8\";3/16\";1/4\";5/16\";3/8\";7/16\";1/2\";9/16\";5/8\";11/16\";3/4\";other;" 1148 1264 Variable/G gSamApOther = 10 //non-standard aperture diameter, in mm … … 1241 1357 SetDataFolder root: 1242 1358 end 1359 1360 // set the global values for display 1361 Function V_QMinMax_Back() 1362 1363 NVAR min_b = root:Packages:NIST:VSANS:VCALC:gQmin_B 1364 NVAR max_b = root:Packages:NIST:VSANS:VCALC:gQmax_B 1365 1366 String folderStr = "VCALC" 1367 String detStr = "" 1368 1369 String folderPath = "root:Packages:NIST:VSANS:"+folderStr 1370 String instPath = ":entry:instrument:detector_" 1371 1372 detStr = "B" 1373 WAVE qTot_B = $(folderPath+instPath+detStr+":qTot_"+detStr) 1374 1375 min_b = WaveMin(qTot_B) 1376 max_b = WaveMax(qTot_B) 1377 1378 1379 return(0) 1380 end 1381 1382 // set the global values for display 1383 Function V_QMinMax_Middle() 1384 1385 NVAR min_m = root:Packages:NIST:VSANS:VCALC:gQmin_M 1386 NVAR max_m = root:Packages:NIST:VSANS:VCALC:gQmax_M 1387 1388 String folderStr = "VCALC" 1389 String detStr = "" 1390 1391 String folderPath = "root:Packages:NIST:VSANS:"+folderStr 1392 String instPath = ":entry:instrument:detector_" 1393 1394 detStr = "ML" 1395 WAVE qTot_ML = $(folderPath+instPath+detStr+":qTot_"+detStr) 1396 1397 detStr = "MR" 1398 WAVE qTot_MR = $(folderPath+instPath+detStr+":qTot_"+detStr) 1399 1400 detStr = "MT" 1401 WAVE qTot_MT = $(folderPath+instPath+detStr+":qTot_"+detStr) 1402 1403 detStr = "MB" 1404 WAVE qTot_MB = $(folderPath+instPath+detStr+":qTot_"+detStr) 1405 1406 min_m = min(WaveMin(qTot_ML),WaveMin(qTot_MT),WaveMin(qTot_MR),WaveMin(qTot_MB)) 1407 max_m = max(WaveMax(qTot_ML),WaveMax(qTot_MT),WaveMax(qTot_MR),WaveMax(qTot_MB)) 1408 1409 1410 return(0) 1411 end 1412 1413 // set the global values for display 1414 Function V_QMinMax_Front() 1415 1416 NVAR min_f = root:Packages:NIST:VSANS:VCALC:gQmin_F 1417 NVAR max_f = root:Packages:NIST:VSANS:VCALC:gQmax_F 1418 1419 String folderStr = "VCALC" 1420 String detStr = "" 1421 1422 String folderPath = "root:Packages:NIST:VSANS:"+folderStr 1423 String instPath = ":entry:instrument:detector_" 1424 1425 detStr = "FL" 1426 WAVE qTot_FL = $(folderPath+instPath+detStr+":qTot_"+detStr) 1427 1428 detStr = "FR" 1429 WAVE qTot_FR = $(folderPath+instPath+detStr+":qTot_"+detStr) 1430 1431 detStr = "FT" 1432 WAVE qTot_FT = $(folderPath+instPath+detStr+":qTot_"+detStr) 1433 1434 detStr = "FB" 1435 WAVE qTot_FB = $(folderPath+instPath+detStr+":qTot_"+detStr) 1436 1437 min_f = min(WaveMin(qTot_FL),WaveMin(qTot_FT),WaveMin(qTot_FR),WaveMin(qTot_FB)) 1438 max_f = max(WaveMax(qTot_FL),WaveMax(qTot_FT),WaveMax(qTot_FR),WaveMax(qTot_FB)) 1439 1440 1441 return(0) 1442 end 1443 1444 Function V_QMin_withBeamStop(detStr) 1445 String detStr 1446 1447 NVAR val = root:Packages:NIST:VSANS:VCALC:gRealQMin 1448 1449 Variable BSDiam,SDD,two_theta,lambda,qMin 1450 1451 BSDiam = VC_beamstopDiam(detStr) 1452 SDD = VC_getSDD(detStr) 1453 lambda = VCALC_getWavelength() 1454 1455 two_theta = atan(BSDiam/2/SDD) 1456 qMin = 4*pi/lambda*sin(two_theta/2) 1457 1458 val = qMin 1459 1460 return(0) 1461 End 1462 1463 1464 Function V_BeamDiamDisplay(direction, detStr) 1465 String direction 1466 String detStr 1467 1468 NVAR val = root:Packages:NIST:VSANS:VCALC:gBeamDiam 1469 1470 val = VC_beamDiameter(direction, detStr) //middle carriage, maximum extent, includes gravity 1471 1472 return(0) 1473 End 1474 1475 1476 // carrNum 1=front, 2=middle, 3=back 1477 Function V_BeamStopDiamDisplay(detStr) 1478 String detStr 1479 1480 NVAR val = root:Packages:NIST:VSANS:VCALC:gBeamStopDiam 1481 1482 val = VC_beamstopDiam(detStr)/2.54 //return the value in inches 1483 1484 return(0) 1485 End 1486 1487 1488 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_RW_Utils.ipf
r1117 r1128 291 291 // det_B += 2 292 292 Wave distance=distance 293 distance = VC ALC_getSDD("B")*100 // to convert m to cm293 distance = VC_getSDD("B")*100 // to convert m to cm 294 294 295 295 … … 307 307 // det_MT += 2 308 308 Wave distance=distance 309 distance = VC ALC_getSDD("MT")*100 // to convert m to cm309 distance = VC_getSDD("MT")*100 // to convert m to cm 310 310 311 311 … … 322 322 // det_MB += 2 323 323 Wave distance=distance 324 distance = VC ALC_getSDD("MB")*100 // to convert m to cm324 distance = VC_getSDD("MB")*100 // to convert m to cm 325 325 326 326 … … 338 338 // det_ML += 2 339 339 Wave distance=distance 340 distance = VC ALC_getSDD("ML")*100 // to convert m to cm340 distance = VC_getSDD("ML")*100 // to convert m to cm 341 341 342 342 … … 352 352 // det_MR += 2 353 353 Wave distance=distance 354 distance = VC ALC_getSDD("MR")*100 // to convert m to cm354 distance = VC_getSDD("MR")*100 // to convert m to cm 355 355 356 356 … … 365 365 // det_FT=tmpw 366 366 Wave distance=distance 367 distance = VC ALC_getSDD("FT")*100 // to convert m to cm367 distance = VC_getSDD("FT")*100 // to convert m to cm 368 368 369 369 … … 377 377 // det_FB=tmpw 378 378 Wave distance=distance 379 distance = VC ALC_getSDD("FB")*100 // to convert m to cm379 distance = VC_getSDD("FB")*100 // to convert m to cm 380 380 381 381 … … 389 389 // det_FL=tmpw 390 390 Wave distance=distance 391 distance = VC ALC_getSDD("FL")*100 // to convert m to cm391 distance = VC_getSDD("FL")*100 // to convert m to cm 392 392 393 393 … … 401 401 // det_FR=tmpw 402 402 Wave distance=distance 403 distance = VC ALC_getSDD("FR")*100 // to convert m to cm403 distance = VC_getSDD("FR")*100 // to convert m to cm 404 404 405 405 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Instrument_Resolution.ipf
r1120 r1128 92 92 Variable &SigmaQ, &QBar, &fSubS //these are the output quantities at the input Q value 93 93 94 Variable isVCALC 95 if(cmpstr(folderStr,"VCALC") == 0) 96 isVCALC = 1 97 endif 94 98 95 99 Variable lambda,lambdaWidth,DDet,apOff,S1,S2,L1,L2,BS,del_r,usingLenses … … 106 110 // TODO: check the units of all of the inputs 107 111 // lambda = wavelength [A] 108 lambda = V_getWavelength(folderStr) 112 if(isVCALC) 113 lambda = VCALC_getWavelength() 114 else 115 lambda = V_getWavelength(folderStr) 116 endif 109 117 110 118 // lambdaWidth = [dimensionless] 111 lambdaWidth = V_getWavelength_spread(folderStr) 119 if(isVCALC) 120 lambdaWidth = VCALC_getWavelengthSpread() 121 else 122 lambdaWidth = V_getWavelength_spread(folderStr) 123 endif 112 124 113 125 // DDet = detector pixel resolution [cm] **assumes square pixel … … 116 128 // DDet = 0.8 // TODO -- this is hard-wired 117 129 118 if(strlen(type) == 1) 119 // it's "B" 120 DDet = V_getDet_pixel_fwhm_x(folderStr,type) // value is already in cm 121 else 122 DDet = V_getDet_pixel_fwhm_x(folderStr,type[0,1]) // value is already in cm 123 endif 124 130 if(isVCALC) 131 if(strlen(type) == 1) 132 // it's "B" 133 DDet = VCALC_getPixSizeX(type) // value is already in cm 134 else 135 DDet = VCALC_getPixSizeX(type[0,1]) // value is already in cm 136 endif 137 else 138 if(strlen(type) == 1) 139 // it's "B" 140 DDet = V_getDet_pixel_fwhm_x(folderStr,type) // value is already in cm 141 else 142 DDet = V_getDet_pixel_fwhm_x(folderStr,type[0,1]) // value is already in cm 143 endif 144 endif 125 145 // apOff = sample aperture to sample distance [cm] 126 146 apOff = 10 // TODO -- this is hard-wired 127 147 128 148 129 130 149 // S1 = source aperture diameter [mm] 131 150 // may be either circle or rectangle … … 133 152 Variable width,height,equiv_S1,equiv_bs 134 153 135 136 s1_shape = V_getSourceAp_shape(folderStr) 137 if(cmpstr(s1_shape,"CIRCLE") == 0) 138 S1 = str2num(V_getSourceAp_size(folderStr)) 139 else 140 S1 = V_getSourceAp_height(folderStr) // TODO: need the width or at least an equivalent diameter 141 endif 142 154 if(isVCALC) 155 S1 = VC_sourceApertureDiam()*10 //VCALC is in cm, conver to [mm] 156 else 157 s1_shape = V_getSourceAp_shape(folderStr) 158 if(cmpstr(s1_shape,"CIRCLE") == 0) 159 S1 = str2num(V_getSourceAp_size(folderStr)) 160 else 161 S1 = V_getSourceAp_height(folderStr) // TODO: need the width or at least an equivalent diameter 162 endif 163 endif 143 164 144 165 // S2 = sample aperture diameter [cm] … … 148 169 // sample aperture 2(external) reports the number typed in... 149 170 // 150 // so I'm trusting [cm] is in the file 151 S2 = V_getSampleAp2_size(folderStr)*10 // sample ap 1 or 2? 2 = the "external", convert to [mm] 152 153 // L1 = source to sample distance [m] 154 L1 = V_getSourceAp_distance(folderStr)/100 155 156 // L2 = sample to detector distance [m] 171 if(isVCALC) 172 S2 = VC_sampleApertureDiam()*10 // convert cm to mm 173 else 174 // I'm trusting [cm] is in the RAW data file 175 S2 = V_getSampleAp2_size(folderStr)*10 // sample ap 1 or 2? 2 = the "external", convert to [mm] 176 endif 177 178 // L1 = source Ap to sample Ap distance [m] 179 if(isVCALC) 180 L1 = VC_calcSSD()/100 //convert cm to m 181 else 182 L1 = V_getSourceAp_distance(folderStr)/100 183 endif 184 185 // L2 = sample aperture to detector distance [m] 157 186 // take the first two characters of the "type" to get the correct distance. 158 187 // if the type is say, MLRTB, then the implicit assumption in combining all four panels is that the resolution 159 188 // is not an issue for the slightly different distances. 160 if(strlen(type) == 1) 189 if(isVCALC) 190 if(strlen(type) == 1) 191 // it's "B" 192 L2 = VC_calc_L2(type)/100 //convert cm to m 193 else 194 L2 = VC_calc_L2(type[0,1])/100 //convert cm to m 195 endif 196 else 197 if(strlen(type) == 1) 161 198 // it's "B" 162 L2 = V_getDet_ActualDistance(folderStr,type)/100 //convert cm to m 163 else 164 L2 = V_getDet_ActualDistance(folderStr,type[0,1])/100 //convert cm to m 165 endif 199 L2 = V_getDet_ActualDistance(folderStr,type)/100 //convert cm to m 200 else 201 L2 = V_getDet_ActualDistance(folderStr,type[0,1])/100 //convert cm to m 202 endif 203 endif 204 166 205 167 206 // BS = beam stop diameter [mm] … … 169 208 // -- need to check the detector, num_beamstops field, then description, then shape/size or shape/height and shape/width 170 209 // 171 // TODO: the values in the file are incorrect!!! BS = 1000 mm diameter!!! 172 BS = V_DeduceBeamstopDiameter(folderStr,type) //returns diameter in [mm] 210 211 if(isVCALC) 212 BS = VC_beamstopDiam(type[0,1])*10 // convert cm to mm 213 else 214 BS = V_DeduceBeamstopDiameter(folderStr,type) //returns diameter in [mm] 215 endif 173 216 // BS = V_getBeamStopC2_size(folderStr) // Units are [mm] 174 217 // BS = 25.4 //TODO hard-wired value -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Testing_Data_Procs.ipf
r1117 r1128 51 51 V_writeDetectorData(fileName,detStr,tmpData) 52 52 53 val = VCALC_getSDD(detStr) // make sure value is in cm 53 54 val = VC_getSDD(detStr) // make sure value is in cm 54 55 print val 55 56 V_writeDet_distance(fileName,detStr,val) -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Write_VSANS_QIS.ipf
r1126 r1128 594 594 fprintf refnum,"\r\n" 595 595 // wfprintf refNum,"%8g\t%8g\t%8g\t%8g\t%8g\r\n",qx_val_s,qy_val_s,qz_val_s,z_val_s,sw_s 596 wfprintf refNum,"%8g\t%8g\t%8g\t%8g\t%8g\t%8g\t%8g\t%8g\r\n",qx_val ,qy_val,z_val,sw,qz_val,SigmaQx,SigmaQy,fSubS596 wfprintf refNum,"%8g\t%8g\t%8g\t%8g\t%8g\t%8g\t%8g\t%8g\r\n",qx_val_s,qy_val_s,z_val_s,sw_s,qz_val_s,SigmaQx_s,SigmaQy_s,fSubS_s 597 597 Close refNum 598 598 #endif
Note: See TracChangeset
for help on using the changeset viewer.