Changeset 1134 for sans/Dev/trunk/NCNR_User_Procedures/Reduction
- Timestamp:
- Mar 26, 2019 1:58:56 PM (4 years ago)
- Location:
- sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Q.ipf
r1133 r1134 165 165 nPix_Y = VCALC_get_nPix_Y("FL") 166 166 167 VC_MakeRealDistXYWaves(det_FL,detStr) 168 167 169 //approx beam center in pixels 168 170 xCtr = nPix_X-(F_L_sep/pixSizeX) // TODO -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 169 171 yCtr = nPix_Y/2 170 172 // put these values into the local folder for later use (in masking) 173 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 174 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 175 V_putDet_beam_center_x_pix("VCALC","FL",xCtr) 176 V_putDet_beam_center_y_pix("VCALC","FL",yCtr) 177 171 178 if(kBCTR_CM) //convert to cm 172 179 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 214 221 nPix_Y = VCALC_get_nPix_Y("FR") 215 222 223 VC_MakeRealDistXYWaves(det_FR,detStr) 224 216 225 // beam center in pixels 217 226 xCtr = -(F_R_sep/pixSizeX)-1 218 227 yCtr = nPix_Y/2 228 // put these values into the local folder for later use (in masking) 229 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 230 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 231 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 232 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 233 219 234 if(kBCTR_CM) 220 235 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") //in mm … … 260 275 nPix_Y = VCALC_get_nPix_Y("FT") 261 276 277 VC_MakeRealDistXYWaves(det_FT,detStr) 278 262 279 // beam center in pixels 263 280 xCtr = nPix_X/2 264 281 yCtr = -(F_T_sep/2/pixSizeY)-1 265 282 // put these values into the local folder for later use (in masking) 283 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 284 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 285 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 286 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 287 266 288 if(kBCTR_CM) 267 289 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 307 329 nPix_Y = VCALC_get_nPix_Y("FB") 308 330 331 VC_MakeRealDistXYWaves(det_FB,detStr) 332 309 333 // beam center in pixels 310 334 xCtr = nPix_X/2 311 yCtr = nPix_Y+(F_B_sep/2/pixSizeY) 312 335 yCtr = nPix_Y-(F_B_sep/2/pixSizeY) 336 // put these values into the local folder for later use (in masking) 337 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 338 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 339 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 340 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 341 313 342 if(kBCTR_CM) 314 343 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 634 663 qy_ML = 0 635 664 qz_ML = 0 636 665 637 666 // TODO - these are to be set from globals, not hard-wired. N and pixelSixze will be known (or pre-measured) 638 667 // pixel sizes are in cm … … 642 671 nPix_Y = VCALC_get_nPix_Y("ML") 643 672 644 xCtr = nPix_X+(M_L_sep/pixSizeX) // TODO -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 673 VC_MakeRealDistXYWaves(det_ML,detStr) 674 675 xCtr = nPix_X-(M_L_sep/pixSizeX) // TODO -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 645 676 yCtr = nPix_Y/2 677 // put these values into the local folder for later use (in masking) 678 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 679 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 680 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 681 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 646 682 647 683 if(kBCTR_CM) … … 694 730 nPix_Y = VCALC_get_nPix_Y("MR") 695 731 732 VC_MakeRealDistXYWaves(det_MR,detStr) 733 734 // beam center in pixels 696 735 xCtr = -(M_R_sep/pixSizeX)-1 697 736 yCtr = nPix_Y/2 698 737 // put these values into the local folder for later use (in masking) 738 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 739 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 740 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 741 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 742 699 743 if(kBCTR_CM) 700 744 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 740 784 nPix_Y = VCALC_get_nPix_Y("MT") 741 785 786 VC_MakeRealDistXYWaves(det_MT,detStr) 787 788 // beam center in pixels 742 789 xCtr = nPix_X/2 743 790 yCtr = -(M_T_sep/pixSizeY)-1 744 791 // put these values into the local folder for later use (in masking) 792 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 793 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 794 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 795 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 796 745 797 if(kBCTR_CM) 746 798 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 787 839 nPix_Y = VCALC_get_nPix_Y("MB") 788 840 841 VC_MakeRealDistXYWaves(det_MB,detStr) 842 843 // beam center in pixels 789 844 xCtr = nPix_X/2 790 yCtr = nPix_Y+(M_B_sep/pixSizeY) 791 845 yCtr = nPix_Y-(M_B_sep/pixSizeY) 846 // put these values into the local folder for later use (in masking) 847 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 848 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 849 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 850 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 851 792 852 if(kBCTR_CM) 793 853 Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") … … 1194 1254 yCtr = V_getDet_beam_center_y("VCALC","B") 1195 1255 1256 // put these values into the local folder for later use (in masking) 1257 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_x_pix") 1258 Make/O/D/N=1 $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":beam_center_y_pix") 1259 V_putDet_beam_center_x_pix("VCALC",detStr,xCtr) 1260 V_putDet_beam_center_y_pix("VCALC",detStr,yCtr) 1261 1196 1262 // Print "Xctr B = ",xctr,yctr 1197 1263 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Utils.ipf
r1133 r1134 240 240 // TODO -- this may not be the best location? 241 241 242 // calibration waves do not exist yet, so make some fake ones ' 243 // do I count on the orientation as an input, or do I just figure it out on my own? 242 Variable tube_width = 8.4 // TODO: UNITS!!! Hard-wired value in [mm] 243 244 244 String orientation 245 245 Variable dimX,dimY … … 252 252 endif 253 253 254 if(cmpstr(orientation,"vertical")==0) 255 Make/O/D/N=(3,48) tmpCalib 256 // for the "tall" L/R banks 257 tmpCalib[0][] = -512 258 tmpCalib[1][] = 8 259 tmpCalib[2][] = 0 260 else 261 Make/O/D/N=(3,48) tmpCalib 262 // for the "short" T/B banks 263 tmpCalib[0][] = -256 264 tmpCalib[1][] = 4 265 tmpCalib[2][] = 0 266 endif 267 // override if back panel 268 if(cmpstr(detStr,"B") == 0) 269 // and for the back detector "B" 270 Make/O/D/N=3 tmpCalibX,tmpCalibY 271 tmpCalibX[0] = VCALC_getPixSizeX(detStr) // pixel size in [cm] VCALC_getPixSizeX(detStr) is [cm] 272 tmpCalibX[1] = 1 273 tmpcalibX[2] = 10000 274 tmpCalibY[0] = VCALC_getPixSizeY(detStr) // pixel size in [cm] VCALC_getPixSizeX(detStr) is [cm] 275 tmpCalibY[1] = 1 276 tmpcalibY[2] = 10000 277 endif 278 279 // Wave w_calib = V_getDetTube_spatialCalib("VCALC",detStr) 280 Variable tube_width = 8.4 // TODO: UNITS!!! Hard-wired value in [mm] 281 if(cmpstr(detStr,"B") == 0) 282 V_NonLinearCorrection_B("VCALC",data,tmpCalibX,tmpCalibY,detStr,destPath) 283 // beam center is in pixels, so use the old routine 284 V_ConvertBeamCtrPix_to_mmB("VCALC","B",destPath) 285 else 286 V_NonLinearCorrection("VCALC",data,tmpCalib,tube_width,detStr,destPath) 287 endif 288 254 289 255 Wave/Z data_realDistX = $(destPath + ":entry:instrument:detector_"+detStr+":data_realDistX") 290 256 Wave/Z data_realDistY = $(destPath + ":entry:instrument:detector_"+detStr+":data_realDistY") … … 366 332 return(0) 367 333 End 334 335 336 337 // make the data_realDistX,Y Waves that are needed for the calculation of q 338 Function VC_MakeRealDistXYWaves(data,detStr) 339 Wave data 340 String detStr 341 342 String destPath = "root:Packages:NIST:VSANS:VCALC" 343 344 // calibration waves do not exist yet, so make some fake ones ' 345 // do I count on the orientation as an input, or do I just figure it out on my own? 346 String orientation 347 Variable dimX,dimY 348 dimX = DimSize(data,0) 349 dimY = DimSize(data,1) 350 if(dimX > dimY) 351 orientation = "horizontal" 352 else 353 orientation = "vertical" 354 endif 355 356 if(cmpstr(orientation,"vertical")==0) 357 Make/O/D/N=(3,48) tmpCalib 358 // for the "tall" L/R banks 359 tmpCalib[0][] = -512 360 tmpCalib[1][] = 8 361 tmpCalib[2][] = 0 362 else 363 Make/O/D/N=(3,48) tmpCalib 364 // for the "short" T/B banks 365 tmpCalib[0][] = -256 366 tmpCalib[1][] = 4 367 tmpCalib[2][] = 0 368 endif 369 // override if back panel 370 if(cmpstr(detStr,"B") == 0) 371 // and for the back detector "B" 372 Make/O/D/N=3 tmpCalibX,tmpCalibY 373 tmpCalibX[0] = VCALC_getPixSizeX(detStr) // pixel size in [cm] VCALC_getPixSizeX(detStr) is [cm] 374 tmpCalibX[1] = 1 375 tmpcalibX[2] = 10000 376 tmpCalibY[0] = VCALC_getPixSizeY(detStr) // pixel size in [cm] VCALC_getPixSizeX(detStr) is [cm] 377 tmpCalibY[1] = 1 378 tmpcalibY[2] = 10000 379 endif 380 381 382 // Wave w_calib = V_getDetTube_spatialCalib("VCALC",detStr) 383 Variable tube_width = 8.4 // TODO: UNITS!!! Hard-wired value in [mm] 384 if(cmpstr(detStr,"B") == 0) 385 V_NonLinearCorrection_B("VCALC",data,tmpCalibX,tmpCalibY,detStr,destPath) 386 // beam center is in pixels, so use the old routine 387 V_ConvertBeamCtrPix_to_mmB("VCALC","B",destPath) 388 else 389 V_NonLinearCorrection("VCALC",data,tmpCalib,tube_width,detStr,destPath) 390 endif 391 392 393 return(0) 394 End 395 368 396 369 397 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf
r1133 r1134 21 21 22 22 23 // returns the panel separation [cm]23 // returns the panel translation [cm] 24 24 Function VCALC_getPanelTranslation(type) 25 25 String type … … 199 199 200 200 201 201 Function VC_getNumGuides() 202 203 Variable ng 204 ControlInfo/W=VCALC VCALCCtrl_0a 205 ng = V_Value 206 return(ng) 207 End 202 208 ////////////////////////////////// 203 209 // … … 737 743 return(sdd) 738 744 end 739 745 746 747 748 Function V_sampleToGateValve() 749 // VCALCCtrl_1e is Sample Pos to Gate Valve (cm) 750 ControlInfo/W=VCALC VCALCCtrl_1e 751 return(V_Value) 752 end 753 754 755 Function V_sampleApertureToGateValve() 756 // VCALCCtrl_1d is Sample Aperture to Gate Valve (cm) 757 ControlInfo/W=VCALC VCALCCtrl_1d 758 return(V_Value) 759 end 760 761 762 763 // 1=front 764 // 2=middle 765 // 3=back 766 // return value is in cm 767 // gate valve to detector (= nominal distance) is reported 768 // Top/Bottom setback is NOT included 769 Function VC_getGateValveToDetDist(detStr) 770 String detStr 771 772 Variable sdd 773 774 strswitch(detstr) 775 case "B": 776 case "B ": 777 ControlInfo/W=VCALC VCALCCtrl_4b 778 break 779 case "ML": 780 case "MR": 781 case "MT": 782 case "MB": 783 ControlInfo/W=VCALC VCALCCtrl_3d 784 break 785 case "FL": 786 case "FR": 787 case "FT": 788 case "FB": 789 ControlInfo/W=VCALC VCALCCtrl_2d 790 break 791 default: 792 Print "no case matched in VC_getSDD()" 793 endswitch 794 795 // this is gate valve to detector distance 796 sdd = V_Value 797 798 return(sdd) 799 end 740 800 741 801 // TODO … … 1952 2012 end 1953 2013 1954 2014 Function/S V_SetConfigurationText() 2015 2016 String str="",temp 2017 2018 // SetDataFolder root:Packages:NIST:SAS 2019 // 2020 // NVAR numberOfGuides=gNg 2021 // NVAR gTable=gTable //2=chamber, 1=table 2022 // NVAR wavelength=gLambda 2023 // NVAR lambdaWidth=gDeltaLambda 2024 //// NVAR instrument = instrument 2025 // NVAR L2diff = L2diff 2026 // NVAR lens = root:Packages:NIST:SAS:gUsingLenses 2027 // SVAR/Z aStr = root:Packages:NIST:gAngstStr 2028 // SVAR selInstr = root:Packages:NIST:SAS:gInstStr 2029 2030 NVAR min_f = root:Packages:NIST:VSANS:VCALC:gQmin_F 2031 NVAR max_f = root:Packages:NIST:VSANS:VCALC:gQmax_F 2032 NVAR min_m = root:Packages:NIST:VSANS:VCALC:gQmin_M 2033 NVAR max_m = root:Packages:NIST:VSANS:VCALC:gQmax_M 2034 NVAR min_b = root:Packages:NIST:VSANS:VCALC:gQmin_B 2035 NVAR max_b = root:Packages:NIST:VSANS:VCALC:gQmax_B 2036 2037 String aStr = "A" 2038 2039 sprintf temp,"Source Aperture Diameter =\t\t%6.2f cm\r",VC_sourceApertureDiam() 2040 str += temp 2041 sprintf temp,"Source to Sample =\t\t\t\t%6.0f cm\r",VC_calcSSD() 2042 str += temp 2043 // sprintf temp,"Sample Position to Detector =\t%6.0f cm\r",VC_getSDD("ML") 2044 // str += temp 2045 sprintf temp,"Beam diameter (Mid) =\t\t\t%6.2f cm\r",VC_beamDiameter("maximum","ML") 2046 str += temp 2047 sprintf temp,"Beamstop diameter =\t\t\t\t%6.2f inches\r",VC_beamstopDiam("ML")/2.54 2048 str += temp 2049 sprintf temp,"Back: Min -> Max Q-value =\t\t\t%6.4f -> %6.4f 1/%s \r",min_b,max_b,aStr 2050 str += temp 2051 sprintf temp,"Middle: Min -> Max Q-value =\t\t%6.4f -> %6.4f 1/%s \r",min_m,max_m,aStr 2052 str += temp 2053 sprintf temp,"Front: Min -> Max Q-value =\t\t%6.4f -> %6.4f 1/%s \r",min_f,max_f,aStr 2054 str += temp 2055 sprintf temp,"Beam Intensity =\t\t\t\t%.0f counts/s\r",V_beamIntensity() 2056 str += temp 2057 sprintf temp,"Figure of Merit =\t\t\t\t%3.3g %s^2/s\r",VC_figureOfMerit(),aStr 2058 str += temp 2059 // sprintf temp,"Attenuator transmission =\t\t%3.3g = Atten # %d\r"//,attenuatorTransmission(),attenuatorNumber() 2060 // str += temp 2061 //// 2062 // // add text of the user-edited values 2063 // // 2064 sprintf temp,"***************** %s *** %s *****************\r","VSANS","VSANS" 2065 str += temp 2066 sprintf temp,"Sample Aperture Diameter =\t\t\t\t%.2f cm\r",VC_sampleApertureDiam() 2067 str += temp 2068 sprintf temp,"Number of Guides =\t\t\t\t\t\t%d \r", VC_getNumGuides() 2069 str += temp 2070 sprintf temp,"Back: Sample Position to Detector =\t\t\t%.1f cm\r", VC_getSDD("B") 2071 str += temp 2072 sprintf temp,"Middle: Sample Position to Detector =\t\t%.1f cm\r", VC_getSDD("ML") 2073 str += temp 2074 sprintf temp,"\tOffsets (L,R) (T,B) = (%.2f, %.2f) (%.2f, %.2f) cm\r", VCALC_getPanelTranslation("ML"),VCALC_getPanelTranslation("MR"),VCALC_getPanelTranslation("MT"),VCALC_getPanelTranslation("MB") 2075 str += temp 2076 sprintf temp,"Front: Sample Position to Detector =\t\t\t%.1f cm\r", VC_getSDD("FL") 2077 str += temp 2078 sprintf temp,"\tOffsets (L,R) (T,B) = (%.2f, %.2f) (%.2f, %.2f) cm\r", VCALC_getPanelTranslation("FL"),VCALC_getPanelTranslation("FR"),VCALC_getPanelTranslation("FT"),VCALC_getPanelTranslation("FB") 2079 str += temp 2080 // if(gTable==1) 2081 // sprintf temp,"Sample Position is \t\t\t\t\t\tHuber\r" 2082 // else 2083 // sprintf temp,"Sample Position is \t\t\t\t\t\tChamber\r" 2084 // endif 2085 // str += temp 2086 // sprintf temp,"Detector Offset =\t\t\t\t\t\t%.1f cm\r", detectorOffset() 2087 // str += temp 2088 sprintf temp,"Neutron Wavelength =\t\t\t\t\t%.2f %s\r", VCALC_getWavelength(),aStr 2089 str += temp 2090 sprintf temp,"Wavelength Spread, FWHM =\t\t\t\t%.3f\r", VCALC_getWavelengthSpread() 2091 str += temp 2092 // sprintf temp,"Sample Aperture to Sample Position =\t%.2f cm\r", L2Diff 2093 // str += temp 2094 // if(lens==1) 2095 // sprintf temp,"Lenses are IN\r" 2096 // else 2097 // sprintf temp,"Lenses are OUT\r" 2098 // endif 2099 // str += temp 2100 2101 setDataFolder root: 2102 return str 2103 End 2104 2105 //Write String representing NICE VSANS configuration 2106 Function/S V_SetNICEConfigText() 2107 2108 string temp_s 2109 2110 String titleStr 2111 String keyStr,keyStrEnd 2112 String valueStr,valueStrEnd 2113 String closingStr 2114 String nameStr,valStr,str 2115 2116 keyStr = " {\r \"key\": {\r \"class\": \"java.lang.String\",\r \"value\": \"" 2117 keyStrEnd = "\"\r },\r" 2118 2119 valueStr = " \"value\": {\r \"class\": \"java.lang.String\",\r \"value\": \"" 2120 valueStrEnd = "\"\r }\r },\r" 2121 2122 closingStr = "\"\r }\r }\r ]\r }\r }\r]\r" 2123 2124 str = "Dummy filler" 2125 2126 titleStr = "VCALC Configuration" 2127 2128 temp_s = "" 2129 2130 temp_s = "[\r {\r \"key\": {\r \"class\": \"java.lang.String\",\r" 2131 temp_s += " \"value\": \""+titleStr+"\"\r },\r" 2132 temp_s += " \"value\": {\r \"class\": \"java.util.HashMap\",\r \"value\": [\r" 2133 2134 //front 2135 nameStr = "frontTrans.primaryNode" 2136 valStr = num2Str(VC_getGateValveToDetDist("FL")) + "cm" //nominal distance, any panel will do 2137 temp_s += keyStr + nameStr + keyStrEnd 2138 temp_s += valueStr + valStr + valueStrEnd 2139 2140 nameStr = "carriage.frontRight" 2141 valStr = num2Str(VCALC_getPanelTranslation("FR")) + "cm" //no space before unit 2142 temp_s += keyStr + nameStr + keyStrEnd 2143 temp_s += valueStr + valStr + valueStrEnd 2144 2145 nameStr = "carriage.frontLeft" 2146 valStr = num2Str(VCALC_getPanelTranslation("FL")) + "cm" //no space before unit 2147 temp_s += keyStr + nameStr + keyStrEnd 2148 temp_s += valueStr + valStr + valueStrEnd 2149 2150 nameStr = "carriage.frontTop" 2151 valStr = num2Str(VCALC_getPanelTranslation("FT")) + "cm" //no space before unit 2152 temp_s += keyStr + nameStr + keyStrEnd 2153 temp_s += valueStr + valStr + valueStrEnd 2154 2155 nameStr = "carriage.frontBottom" 2156 valStr = num2Str(VCALC_getPanelTranslation("FB")) + "cm" //no space before unit 2157 temp_s += keyStr + nameStr + keyStrEnd 2158 temp_s += valueStr + valStr + valueStrEnd 2159 2160 nameStr = "frontRightAreaDetector.beamCenterX" 2161 valStr = num2Str(V_getDet_beam_center_x("VCALC","FR")) + "cm" 2162 temp_s += keyStr + nameStr + keyStrEnd 2163 temp_s += valueStr + valStr + valueStrEnd 2164 2165 nameStr = "frontRightAreaDetector.beamCenterY" 2166 valStr = num2Str(V_getDet_beam_center_y("VCALC","FR")) + "cm" 2167 temp_s += keyStr + nameStr + keyStrEnd 2168 temp_s += valueStr + valStr + valueStrEnd 2169 2170 nameStr = "frontLeftAreaDetector.beamCenterX" 2171 valStr = num2Str(V_getDet_beam_center_x("VCALC","FL")) + "cm" 2172 temp_s += keyStr + nameStr + keyStrEnd 2173 temp_s += valueStr + valStr + valueStrEnd 2174 2175 nameStr = "frontLeftAreaDetector.beamCenterY" 2176 valStr = num2Str(V_getDet_beam_center_y("VCALC","FL")) + "cm" 2177 temp_s += keyStr + nameStr + keyStrEnd 2178 temp_s += valueStr + valStr + valueStrEnd 2179 2180 nameStr = "frontTopAreaDetector.beamCenterX" 2181 valStr = num2Str(V_getDet_beam_center_x("VCALC","FT")) + "cm" 2182 temp_s += keyStr + nameStr + keyStrEnd 2183 temp_s += valueStr + valStr + valueStrEnd 2184 2185 nameStr = "frontTopAreaDetector.beamCenterY" 2186 valStr = num2Str(V_getDet_beam_center_y("VCALC","FT")) + "cm" 2187 temp_s += keyStr + nameStr + keyStrEnd 2188 temp_s += valueStr + valStr + valueStrEnd 2189 2190 nameStr = "frontBottomAreaDetector.beamCenterX" 2191 valStr = num2Str(V_getDet_beam_center_x("VCALC","FB")) + "cm" 2192 temp_s += keyStr + nameStr + keyStrEnd 2193 temp_s += valueStr + valStr + valueStrEnd 2194 2195 nameStr = "frontBottomAreaDetector.beamCenterY" 2196 valStr = num2Str(V_getDet_beam_center_y("VCALC","FB")) + "cm" 2197 temp_s += keyStr + nameStr + keyStrEnd 2198 temp_s += valueStr + valStr + valueStrEnd 2199 2200 2201 2202 // middle 2203 nameStr = "middleTrans.primaryNode" 2204 valStr = num2Str(VC_getGateValveToDetDist("ML")) + "cm" //nominal distance, any panel will do 2205 temp_s += keyStr + nameStr + keyStrEnd 2206 temp_s += valueStr + valStr + valueStrEnd 2207 2208 nameStr = "carriage.middleRight" 2209 valStr = num2Str(VCALC_getPanelTranslation("MR")) + "cm" //no space before unit 2210 temp_s += keyStr + nameStr + keyStrEnd 2211 temp_s += valueStr + valStr + valueStrEnd 2212 2213 nameStr = "carriage.middleLeft" 2214 valStr = num2Str(VCALC_getPanelTranslation("ML")) + "cm" //no space before unit 2215 temp_s += keyStr + nameStr + keyStrEnd 2216 temp_s += valueStr + valStr + valueStrEnd 2217 2218 nameStr = "carriage.middleTop" 2219 valStr = num2Str(VCALC_getPanelTranslation("MT")) + "cm" //no space before unit 2220 temp_s += keyStr + nameStr + keyStrEnd 2221 temp_s += valueStr + valStr + valueStrEnd 2222 2223 nameStr = "carriage.middleBottom" 2224 valStr = num2Str(VCALC_getPanelTranslation("MB")) + "cm" //no space before unit 2225 temp_s += keyStr + nameStr + keyStrEnd 2226 temp_s += valueStr + valStr + valueStrEnd 2227 2228 nameStr = "middleRightAreaDetector.beamCenterX" 2229 valStr = num2Str(V_getDet_beam_center_x("VCALC","MR")) + "cm" 2230 temp_s += keyStr + nameStr + keyStrEnd 2231 temp_s += valueStr + valStr + valueStrEnd 2232 2233 nameStr = "middleRightAreaDetector.beamCenterY" 2234 valStr = num2Str(V_getDet_beam_center_y("VCALC","MR")) + "cm" 2235 temp_s += keyStr + nameStr + keyStrEnd 2236 temp_s += valueStr + valStr + valueStrEnd 2237 2238 nameStr = "middleLeftAreaDetector.beamCenterX" 2239 valStr = num2Str(V_getDet_beam_center_x("VCALC","ML")) + "cm" 2240 temp_s += keyStr + nameStr + keyStrEnd 2241 temp_s += valueStr + valStr + valueStrEnd 2242 2243 nameStr = "middleLeftAreaDetector.beamCenterY" 2244 valStr = num2Str(V_getDet_beam_center_y("VCALC","ML")) + "cm" 2245 temp_s += keyStr + nameStr + keyStrEnd 2246 temp_s += valueStr + valStr + valueStrEnd 2247 2248 nameStr = "middleTopAreaDetector.beamCenterX" 2249 valStr = num2Str(V_getDet_beam_center_x("VCALC","MT")) + "cm" 2250 temp_s += keyStr + nameStr + keyStrEnd 2251 temp_s += valueStr + valStr + valueStrEnd 2252 2253 nameStr = "middleTopAreaDetector.beamCenterY" 2254 valStr = num2Str(V_getDet_beam_center_y("VCALC","MT")) + "cm" 2255 temp_s += keyStr + nameStr + keyStrEnd 2256 temp_s += valueStr + valStr + valueStrEnd 2257 2258 nameStr = "middleBottomAreaDetector.beamCenterX" 2259 valStr = num2Str(V_getDet_beam_center_x("VCALC","MB")) + "cm" 2260 temp_s += keyStr + nameStr + keyStrEnd 2261 temp_s += valueStr + valStr + valueStrEnd 2262 2263 nameStr = "middleBottomAreaDetector.beamCenterY" 2264 valStr = num2Str(V_getDet_beam_center_y("VCALC","MB")) + "cm" 2265 temp_s += keyStr + nameStr + keyStrEnd 2266 temp_s += valueStr + valStr + valueStrEnd 2267 2268 nameStr = "C2BeamStop.beamStop" 2269 valStr = num2Str(1) 2270 temp_s += keyStr + nameStr + keyStrEnd 2271 temp_s += valueStr + valStr + valueStrEnd 2272 2273 nameStr = "C2BeamStopY.softPosition" 2274 valStr = num2Str(0) + "cm" //no space before unit 2275 temp_s += keyStr + nameStr + keyStrEnd 2276 temp_s += valueStr + valStr + valueStrEnd 2277 2278 nameStr = "C2BeamStopX.X" 2279 valStr = num2Str(0) + "cm" //no space before unit 2280 temp_s += keyStr + nameStr + keyStrEnd 2281 temp_s += valueStr + valStr + valueStrEnd 2282 2283 2284 // back 2285 nameStr = "rearTrans.primaryNode" 2286 valStr = num2Str(VC_getGateValveToDetDist("B")) + "cm" //nominal distance, any panel will do 2287 temp_s += keyStr + nameStr + keyStrEnd 2288 temp_s += valueStr + valStr + valueStrEnd 2289 2290 nameStr = "C3DetectorOffset.softPosition" 2291 valStr = num2Str(0) + "cm" //no space before unit 2292 temp_s += keyStr + nameStr + keyStrEnd 2293 temp_s += valueStr + valStr + valueStrEnd 2294 2295 nameStr = "rearAreaDetector.beamCenterX" 2296 valStr = num2Str(V_getDet_beam_center_x_pix("VCALC","B")) 2297 temp_s += keyStr + nameStr + keyStrEnd 2298 temp_s += valueStr + valStr + valueStrEnd 2299 2300 nameStr = "rearAreaDetector.beamCenterY" 2301 valStr = num2Str(V_getDet_beam_center_y_pix("VCALC","B")) 2302 temp_s += keyStr + nameStr + keyStrEnd 2303 temp_s += valueStr + valStr + valueStrEnd 2304 2305 nameStr = "C3BeamStop.beamStop" 2306 valStr = num2Str(0) 2307 temp_s += keyStr + nameStr + keyStrEnd 2308 temp_s += valueStr + valStr + valueStrEnd 2309 2310 nameStr = "C3BeamStopY.softPosition" 2311 valStr = num2Str(0) + "cm" //no space before unit 2312 temp_s += keyStr + nameStr + keyStrEnd 2313 temp_s += valueStr + valStr + valueStrEnd 2314 2315 nameStr = "C3BeamStopX.X" 2316 valStr = num2Str(0) + "cm" //no space before unit 2317 temp_s += keyStr + nameStr + keyStrEnd 2318 temp_s += valueStr + valStr + valueStrEnd 2319 2320 2321 2322 //geometry, guides, beam... 2323 2324 nameStr = "guide.guide" 2325 valStr = num2Str(VC_getNumGuides()) 2326 temp_s += keyStr + nameStr + keyStrEnd 2327 temp_s += valueStr + valStr + valueStrEnd 2328 2329 nameStr = "guide.sampleAperture" 2330 valStr = num2Str(VC_sampleApertureDiam()) + "cm" //no space before unit 2331 temp_s += keyStr + nameStr + keyStrEnd 2332 temp_s += valueStr + valStr + valueStrEnd 2333 2334 nameStr = "guide.sourceAperture" 2335 valStr = num2Str(VC_sourceApertureDiam()) + "cm" //no space before unit 2336 temp_s += keyStr + nameStr + keyStrEnd 2337 temp_s += valueStr + valStr + valueStrEnd 2338 2339 nameStr = "geometry.externalSampleApertureShape" 2340 valStr = "CIRCLE" 2341 temp_s += keyStr + nameStr + keyStrEnd 2342 temp_s += valueStr + valStr + valueStrEnd 2343 2344 nameStr = "geometry.externalSampleAperture" 2345 valStr = num2Str(VC_sampleApertureDiam()) + "cm" //no space before unit 2346 temp_s += keyStr + nameStr + keyStrEnd 2347 temp_s += valueStr + valStr + valueStrEnd 2348 2349 nameStr = "geometry.samplePositionOffset" 2350 valStr = num2Str(V_sampleToGateValve()) + "cm" //no space before unit 2351 temp_s += keyStr + nameStr + keyStrEnd 2352 temp_s += valueStr + valStr + valueStrEnd 2353 2354 nameStr = "geometry.sampleApertureOffset" 2355 valStr = num2Str(V_sampleApertureToGateValve()) + "cm" //no space before unit 2356 temp_s += keyStr + nameStr + keyStrEnd 2357 temp_s += valueStr + valStr + valueStrEnd 2358 2359 nameStr = "attenuator.attenuator" 2360 valStr = num2Str(0) 2361 temp_s += keyStr + nameStr + keyStrEnd 2362 temp_s += valueStr + valStr + valueStrEnd 2363 2364 nameStr = "wavelength.wavelength" 2365 valStr = num2Str(VCALC_getWavelength()) + "A" //no space before unit 2366 temp_s += keyStr + nameStr + keyStrEnd 2367 temp_s += valueStr + valStr + valueStrEnd 2368 2369 nameStr = "wavelengthSpread.wavelengthSpread" 2370 valStr = num2Str(VCALC_getWavelengthSpread()) 2371 // last one has a different ending sequence 2372 temp_s += keyStr + nameStr + keyStrEnd 2373 temp_s += valueStr + valStr + closingStr 2374 2375 return temp_s 2376 end 2377 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf
r1133 r1134 36 36 37 37 // a front view of the panels 38 FrontView_1x()38 // FrontView_1x() 39 39 40 40 // pop one of the presets to get everything to update 41 41 VC_Preset_WhiteBeam() 42 42 43 // update the views44 VC_UpdateViews()45 46 43 // a recalculation is needed after the change 47 44 // this re-bins the I(q) data too 48 45 Recalculate_AllDetectors() 49 46 47 // update the views 48 VC_UpdateViews() 49 50 50 endif 51 51 End … … 79 79 TabControl Vtab,tabLabel(4)="Back Det",tabLabel(5)="Simul",value= 0,proc=VCALCTabProc 80 80 GroupBox group1,pos={460,10},size={762,635},title="Detector Panel Positions + Data" 81 Button button_a,pos={250,70},size={100,20},title="Show Mask",proc=V_VCALCShowMaskButtonProc 82 Button button_b,pos={250,100},size={100,20},title="Recalculate",proc=V_VCALCRecalcButtonProc 81 Button button_a,pos={210,70},size={100,20},title="Show Mask",proc=V_VCALCShowMaskButtonProc 82 Button button_b,pos={210,100},size={100,20},title="Recalculate",proc=V_VCALCRecalcButtonProc 83 Button button_c,pos={330,70},size={100,20},title="Save Config",proc=V_VCALCSaveConfiguration 84 Button button_d,pos={330,100},size={100,20},title="Save NICE",proc=V_VCALCSaveNICEConfiguration 83 85 84 86 … … 295 297 296 298 299 Function V_VCALCSaveConfiguration(ba) : ButtonControl 300 STRUCT WMButtonAction &ba 301 302 switch( ba.eventCode ) 303 case 2: // mouse up 304 // click code here 305 306 V_DisplayConfigurationText() 307 308 break 309 case -1: // control being killed 310 break 311 endswitch 312 313 return 0 314 End 315 316 317 Function V_DisplayConfigurationText() 318 319 if(WinType("Trial_Configuration")==0) 320 NewNotebook/F=0/K=1/N=Trial_Configuration /W=(480,44,880,369) 321 endif 322 //replace the text 323 Notebook Trial_Configuration selection={startOfFile, endOfFile} 324 Notebook Trial_Configuration font="Monaco",fSize=10,text=V_SetConfigurationText() 325 return(0) 326 end 327 328 329 //Export NICE VSANS configurations to a plain text noteboox that can be saved as a text file. 330 Function V_SaveNICEConfigs() 331 332 String str="" 333 334 if(WinType("NICE_Configuration")==0) 335 NewNotebook/F=0/K=1/N=NICE_Configuration /W=(480,44,880,369) 336 endif 337 //replace the text 338 Notebook NICE_Configuration selection={startOfFile, endOfFile} 339 Notebook NICE_Configuration font="Monaco",fSize=10,text=V_SetNICEConfigText() 340 341 // SaveNotebook/S=6/I NICE_Configuration as "NICE_Configs.txt" 342 // KillWindow NICE_Configuration 343 344 return (0) 345 346 end 347 348 Function V_VCALCSaveNICEConfiguration(ba) : ButtonControl 349 STRUCT WMButtonAction &ba 350 351 switch( ba.eventCode ) 352 case 2: // mouse up 353 // click code here 354 355 // Recalculate_AllDetectors() 356 V_SaveNICEConfigs() 357 358 break 359 case -1: // control being killed 360 break 361 endswitch 362 363 return 0 364 End 297 365 298 366 Function V_VCALCRecalcButtonProc(ba) : ButtonControl … … 449 517 450 518 if(event %& 0x1) // bit 0, value set 451 if(cmpstr(ctrlName,"") != 0) //here by direct action, so do LensCheck and recalculate 452 // recalc=1 453 // LensCheckProc("",2) //make sure lenses are deselected 454 endif 455 // sourceToSampleDist() //updates the SSD global and wave 519 456 520 //change the sourceAp popup, SDD range, etc 457 521 switch(sliderValue) 458 522 case 0: 459 // ControlInfo/W=SASCALC popup0460 // mode=V_value461 523 apStr = "0.75 cm;1.5 cm;3.0 cm;" 462 524 break … … 465 527 endswitch 466 528 ControlUpdate/W=VCALC VCALCCtrl_0f 467 // UpdateControls() // the Ng global is actually set inside this function 468 Recalculate_AllDetectors() 529 530 // Recalculate_AllDetectors() 531 469 532 endif 470 533 return 0 … … 547 610 548 611 // a recalculation is needed after the change 549 Recalculate_AllDetectors()612 // Recalculate_AllDetectors() 550 613 551 614 break … … 603 666 604 667 // a recalculation is needed after the change 605 Recalculate_AllDetectors()668 // Recalculate_AllDetectors() 606 669 607 670 break … … 669 732 Recalculate_AllDetectors() 670 733 671 // re-bin the data? 672 // VC_RebinIQ_PopProc("",0,binStr) 673 734 674 735 break 675 736 case -1: // control being killed … … 692 753 String popStr // contents of current popup item as string 693 754 694 Recalculate_AllDetectors()755 // Recalculate_AllDetectors() 695 756 696 757 return(0) … … 727 788 Execute ("V_Front_IQ_Graph"+str) 728 789 729 // OLD - do not use730 // // do the q-binning for front panels to get I(Q)731 // Execute "BinAllFrontPanels()"732 // Execute "Front_IQ_Graph()"733 //734 // // do the q-binning for middle panels to get I(Q)735 // Execute "BinAllMiddlePanels()"736 // Execute "Middle_IQ_Graph()"737 //738 // // do the q-binning for the back panel to get I(Q)739 // Execute "BinAllBackPanels()"740 // Execute "Back_IQ_Graph()"741 790 // 742 791 return(0) … … 810 859 // // don't need to recalculate the views, but need to recalculate the detectors 811 860 812 Recalculate_AllDetectors()861 // Recalculate_AllDetectors() 813 862 814 863 break … … 833 882 String sval = sva.sval 834 883 835 Recalculate_AllDetectors()884 // Recalculate_AllDetectors() 836 885 837 886 break -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Write.ipf
r1114 r1134 4167 4167 End 4168 4168 4169 Function V_writeDet_beam_center_y(fname,detStr,val) 4169 // fname is a local WORK folder 4170 Function V_putDet_beam_center_x_pix(fname,detStr,val) 4170 4171 String fname,detStr 4171 4172 Variable val 4172 4173 4173 // String path = "entry:instrument:detector_"+detStr+":beam_center_y" 4174 4175 Make/O/D/N=1 wTmpWrite 4176 // Make/O/R/N=1 wTmpWrite 4177 String groupName = "/entry/instrument/detector_"+detStr 4178 String varName = "beam_center_y" 4179 wTmpWrite[0] = val 4180 4181 variable err 4182 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4183 if(err) 4184 Print "HDF write err = ",err 4185 endif 4186 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4187 // err = V_KillNamedDataFolder(fname) 4188 // if(err) 4189 // Print "DataFolder kill err = ",err 4190 // endif 4191 return(err) 4192 End 4193 4194 4195 // fname is a local WORK folder 4196 Function V_putDet_beam_center_y(fname,detStr,val) 4197 String fname,detStr 4198 Variable val 4199 4200 //root:Packages:NIST:VSANS:RAW:entry:instrument:detector_FB:beam_center_y 4174 //root:Packages:NIST:VSANS:RAW:entry:instrument:detector_FB:beam_center_x_pix 4201 4175 String path = "root:Packages:NIST:VSANS:"+fname+":" 4202 path += "entry:instrument:detector_"+detStr+":beam_center_ y"4176 path += "entry:instrument:detector_"+detStr+":beam_center_x_pix" 4203 4177 4204 4178 Wave/Z w = $path … … 4212 4186 End 4213 4187 4188 Function V_writeDet_beam_center_y(fname,detStr,val) 4189 String fname,detStr 4190 Variable val 4191 4192 // String path = "entry:instrument:detector_"+detStr+":beam_center_y" 4193 4194 Make/O/D/N=1 wTmpWrite 4195 // Make/O/R/N=1 wTmpWrite 4196 String groupName = "/entry/instrument/detector_"+detStr 4197 String varName = "beam_center_y" 4198 wTmpWrite[0] = val 4199 4200 variable err 4201 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4202 if(err) 4203 Print "HDF write err = ",err 4204 endif 4205 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4206 // err = V_KillNamedDataFolder(fname) 4207 // if(err) 4208 // Print "DataFolder kill err = ",err 4209 // endif 4210 return(err) 4211 End 4212 4213 4214 // fname is a local WORK folder 4215 Function V_putDet_beam_center_y(fname,detStr,val) 4216 String fname,detStr 4217 Variable val 4218 4219 //root:Packages:NIST:VSANS:RAW:entry:instrument:detector_FB:beam_center_y 4220 String path = "root:Packages:NIST:VSANS:"+fname+":" 4221 path += "entry:instrument:detector_"+detStr+":beam_center_y" 4222 4223 Wave/Z w = $path 4224 if(waveExists(w) == 0) 4225 return(1) 4226 else 4227 w[0] = val 4228 return(0) 4229 endif 4230 4231 End 4232 4233 // fname is a local WORK folder 4234 Function V_putDet_beam_center_y_pix(fname,detStr,val) 4235 String fname,detStr 4236 Variable val 4237 4238 //root:Packages:NIST:VSANS:RAW:entry:instrument:detector_FB:beam_center_y_pix 4239 String path = "root:Packages:NIST:VSANS:"+fname+":" 4240 path += "entry:instrument:detector_"+detStr+":beam_center_y_pix" 4241 4242 Wave/Z w = $path 4243 if(waveExists(w) == 0) 4244 return(1) 4245 else 4246 w[0] = val 4247 return(0) 4248 endif 4249 4250 End 4214 4251 4215 4252 // TODO -- write this function to return a WAVE with the data -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MaskUtils.ipf
r1133 r1134 1224 1224 Function V_UpdateFourPanelDisp() 1225 1225 1226 ControlInfo popup01226 ControlInfo/W=VSANS_Det_Panels popup0 1227 1227 String carrStr = S_value 1228 1228 1229 if(cmpstr("B",carrStr)==0)1230 DoAlert 0, "Detector B plotting not supported yet"1231 return(0)1232 endif1233 1234 ControlInfo popup11229 // if(cmpstr("B",carrStr)==0) 1230 // DoAlert 0, "Detector B plotting not supported yet" 1231 // return(0) 1232 // endif 1233 1234 ControlInfo/W=VSANS_Det_Panels popup1 1235 1235 String folder = S_Value 1236 1236 … … 1279 1279 1280 1280 // append the new image 1281 // if back, put this in the "left" postion, and nothing else 1282 if(cmpstr("B",carrStr)==0) 1283 if(isVCALC) 1284 AppendImage/T/G=1/W=VSANS_Det_Panels#Panel_L $("root:Packages:NIST:VSANS:"+folder+":entry:instrument:detector_"+carrStr+":det_"+carrStr) 1285 SetActiveSubwindow VSANS_Det_Panels#Panel_L 1286 ModifyImage ''#0 ctab= {*,*,ColdWarm,0} 1287 ModifyImage ''#0 ctabAutoscale=3 1288 else 1289 AppendImage/T/G=1/W=VSANS_Det_Panels#Panel_L $("root:Packages:NIST:VSANS:"+folder+":entry:instrument:detector_"+carrStr+":data") 1290 SetActiveSubwindow VSANS_Det_Panels#Panel_L 1291 ModifyImage data ctab= {*,*,ColdWarm,0} 1292 ModifyImage data ctabAutoscale=3 1293 endif 1294 ModifyGraph margin(left)=14,margin(bottom)=14,margin(top)=14,margin(right)=14 1295 ModifyGraph mirror=2 1296 ModifyGraph nticks=4 1297 ModifyGraph minor=1 1298 ModifyGraph fSize=9 1299 ModifyGraph standoff=0 1300 ModifyGraph tkLblRot(left)=90 1301 ModifyGraph btLen=3 1302 ModifyGraph tlOffset=-2 1303 SetActiveSubwindow ## 1304 return(0) 1305 endif 1306 1281 1307 // RemoveImage/Z/W=VSANS_Det_Panels#Panel_L data 1282 1308 if(isVCALC) … … 1372 1398 SetActiveSubwindow ## 1373 1399 1374 End 1375 1376 1377 // 1378 //Function V_DummyPopMenuProc(pa) : PopupMenuControl 1379 // STRUCT WMPopupAction &pa 1380 // 1381 // switch( pa.eventCode ) 1382 // case 2: // mouse up 1383 // Variable popNum = pa.popNum 1384 // String popStr = pa.popStr 1385 // 1386 // DoAlert 0,"Fill in the dummy procedure" 1387 // 1388 // break 1389 // case -1: // control being killed 1390 // break 1391 // endswitch 1392 // 1393 // return 0 1394 //End 1400 return(0) 1401 End 1402 1403 1395 1404 1396 1405 … … 1450 1459 End 1451 1460 1452 1453 1461 // 1462 // toggle the mask overlay(s) on/off of the detector panels. 1463 // 1454 1464 Function V_ToggleFourMaskButtonProc(ba) : ButtonControl 1455 1465 STRUCT WMButtonAction &ba … … 1458 1468 case 2: // mouse up 1459 1469 // click code here 1470 1471 String detStr 1472 Variable state,isVCALC 1460 1473 1461 1474 ControlInfo/W=VSANS_Det_Panels popup1 1462 1475 String folderStr = S_Value 1463 Variable state = 1 1464 1476 1465 1477 ControlInfo/W=VSANS_Det_Panels popup0 1466 1478 String carrStr = S_Value 1467 1479 1480 if(cmpstr(folderStr,"VCALC") == 0) 1481 isVCALC = 1 1482 else 1483 isVCALC = 0 1484 endif 1485 1486 // handle "B" separately 1487 if(cmpstr(carrStr,"B") == 0) 1488 detStr = carrStr 1489 // is the mask already there? 1490 wave/Z overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1491 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1492 if(V_Flag == 1) //overlay is present, set state = 0 to remove overlay 1493 state = 0 1494 else 1495 state = 1 1496 endif 1497 1498 if(state == 1) 1499 //duplicate the mask, which is named "data" 1500 wave maskW = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 1501 // for the wave scaling 1502 if(isVCALC) 1503 wave data = $("root:Packages:NIST:VSANS:"+folderStr+":entry:instrument:detector_"+detStr+":det_"+detStr) 1504 else 1505 wave data = $("root:Packages:NIST:VSANS:"+folderStr+":entry:instrument:detector_"+detStr+":data") 1506 endif 1507 Duplicate/O data $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1508 wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1509 overlay = maskW //this copies the data into the properly scaled wave 1510 1511 //"B" uses the L side display 1512 // Print ImageNameList("VSANS_Det_Panels#Panel_L", ";" ) 1513 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1514 if(V_flag==0) //so the overlay doesn't get appended more than once 1515 AppendImage/T/W=VSANS_Det_Panels#Panel_L overlay 1516 // ModifyImage/W=VSANS_Det_Panels#Panel_L overlay ctab= {0.9,0.95,BlueRedGreen,0} ,minRGB=NaN,maxRGB=(0,65000,0,35000) 1517 ModifyImage/W=VSANS_Det_Panels#Panel_L ''#1 ctab= {0.9,0.95,BlueRedGreen,0} ,minRGB=NaN,maxRGB=(0,65000,0,35000) 1518 endif 1519 1520 endif //state == 1 1521 1522 if(state == 0) 1523 wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1524 1525 //"B" uses the L side display 1526 1527 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1528 if(V_Flag == 1) //overlay is present 1529 // RemoveImage/W=VSANS_Det_Panels#Panel_L overlay 1530 RemoveImage/W=VSANS_Det_Panels#Panel_L ''#1 1531 endif 1532 endif //state == 0 1533 1534 return(0) 1535 endif //handle carriage B 1536 1537 1538 // now toggle the mask for the F or M carriages 1468 1539 // test the L image to see if I need to remove the mask 1469 String detStr1470 1540 if(cmpstr(carrStr,"F")==0) 1471 1541 detStr = "FL" … … 1476 1546 wave/Z overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1477 1547 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1478 if(V_Flag == 1) //overlay is present 1548 if(V_Flag == 1) //overlay is present, set state = 0 to remove overlay 1479 1549 state = 0 1480 1550 else … … 1517 1587 ControlInfo/W=VSANS_Det_Panels popup0 1518 1588 String detGroup = S_Value 1589 1590 Variable isVCALC 1591 if(cmpstr(folderStr,"VCALC")==0) 1592 isVCALC = 1 1593 else 1594 isVCALC = 0 1595 endif 1519 1596 1520 1597 // calculate the "mask" to add … … 1545 1622 // calculate phi matrix 1546 1623 // fill in the mask 1547 for(ii=0;ii<ItemsInList(ksDetectorList NoB);ii+=1)1548 detStr = StringFromList(ii, ksDetectorList NoB, ";")1624 for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 1625 detStr = StringFromList(ii, ksDetectorListAll, ";") 1549 1626 Wave qTotal = $(str1+str2+detStr+":qTot_"+detStr) 1550 1627 Wave phi = V_MakePhiMatrix(qTotal,folderStr,detStr,str1+str2+detStr) 1551 Wave w = V_getDetectorDataW(folderStr,detStr) //this is simply to get the correct wave scaling on the overlay 1628 if(isVCALC) 1629 Wave w = $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":det_"+detStr) 1630 else 1631 Wave w = V_getDetectorDataW(folderStr,detStr) //this is simply to get the correct wave scaling on the overlay 1632 endif 1552 1633 Duplicate/O w $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 1553 1634 Wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) … … 1568 1649 // loop over all of the panels 1569 1650 // fill in the mask 1570 for(ii=0;ii<ItemsInList(ksDetectorList NoB);ii+=1)1571 detStr = StringFromList(ii, ksDetectorList NoB, ";")1651 for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 1652 detStr = StringFromList(ii, ksDetectorListAll, ";") 1572 1653 Wave qTotal = $(str1+str2+detStr+":qTot_"+detStr) 1573 Wave w = V_getDetectorDataW(folderStr,detStr) //this is simply to get the correct wave scaling on the overlay 1654 if(isVCALC) 1655 Wave w = $("root:Packages:NIST:VSANS:VCALC:entry:instrument:detector_"+detStr+":det_"+detStr) 1656 else 1657 Wave w = V_getDetectorDataW(folderStr,detStr) //this is simply to get the correct wave scaling on the overlay 1658 endif 1574 1659 Duplicate/O w $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 1575 1660 Wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) … … 1595 1680 ControlInfo/W=VSANS_Det_Panels popup0 1596 1681 String carrStr = S_Value 1682 1683 // handle "B" separately 1684 if(cmpstr(carrStr,"B") == 0) 1685 detStr = carrStr 1686 // is the mask already there? 1687 wave/Z overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 1688 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1689 if(V_Flag == 1) //overlay is present, set state = 0 to remove overlay 1690 state = 0 1691 else 1692 state = 1 1693 endif 1694 1695 V_OverlayFourAvgMask(folderStr,"B",state) 1696 return(0) 1697 endif //carriage "B" 1597 1698 1598 1699 // test the L image to see if I need to remove the mask … … 1894 1995 Variable state 1895 1996 1896 1997 // Variable isVCALC=0 1998 // if(cmpstr("VCALC",folderStr)==0) 1999 // isVCALC=1 2000 // endif 2001 1897 2002 String maskPath = "root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data" 1898 2003 if(WaveExists($maskPath) == 1) … … 1905 2010 // wave data = $("root:Packages:NIST:VSANS:"+folderStr+":entry:instrument:detector_"+detStr+":data") 1906 2011 // Duplicate/O data $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 1907 wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 2012 2013 // if(isVCALC) 2014 // wave overlay = $("root:Packages:NIST:VSANS:"+folderStr+":entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 2015 // else 2016 wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 2017 // endif 1908 2018 // overlay = maskW //this copies the data into the properly scaled wave 1909 2019 … … 1911 2021 case "ML": 1912 2022 case "FL": 2023 case "B": 1913 2024 // Print ImageNameList("VSANS_Det_Panels#Panel_L", ";" ) 1914 2025 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay … … 1958 2069 case "ML": 1959 2070 case "FL": 2071 case "B": 1960 2072 CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 1961 2073 if(V_Flag == 1) //overlay is present -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_VSANS_Preferences.ipf
r1117 r1134 107 107 // yes 108 108 Variable/G root:Packages:NIST:VSANS:Globals:gIgnoreDetB = 0 109 DoAlert 1,"Are you using 1x1 binning?"110 if(V_flag == 1)111 // yes112 Variable/G root:Packages:NIST:VSANS:Globals:gHighResBinning = 1113 endif109 // DoAlert 1,"Are you using 1x1 binning?" 110 // if(V_flag == 1) 111 // // yes 112 // Variable/G root:Packages:NIST:VSANS:Globals:gHighResBinning = 1 113 // endif 114 114 endif 115 115
Note: See TracChangeset
for help on using the changeset viewer.