Ignore:
Timestamp:
Mar 26, 2019 1:58:56 PM (4 years ago)
Author:
srkline
Message:

more changes to VCALC functionality and bug fixes for VCALC

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  
    165165        nPix_Y = VCALC_get_nPix_Y("FL") 
    166166 
     167        VC_MakeRealDistXYWaves(det_FL,detStr) 
     168 
    167169        //approx beam center in pixels 
    168170        xCtr = nPix_X-(F_L_sep/pixSizeX)                // TODO  -- check -- starting from 47 rather than 48 (but I'm in pixel units for centers)?? 
    169171        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                 
    171178        if(kBCTR_CM)            //convert to cm 
    172179                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    214221        nPix_Y = VCALC_get_nPix_Y("FR") 
    215222 
     223        VC_MakeRealDistXYWaves(det_FR,detStr) 
     224 
    216225// beam center in pixels 
    217226        xCtr = -(F_R_sep/pixSizeX)-1             
    218227        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         
    219234        if(kBCTR_CM) 
    220235                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX")           //in mm 
     
    260275        nPix_Y = VCALC_get_nPix_Y("FT") 
    261276 
     277        VC_MakeRealDistXYWaves(det_FT,detStr) 
     278 
    262279// beam center in pixels 
    263280        xCtr = nPix_X/2 
    264281        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                         
    266288        if(kBCTR_CM) 
    267289                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    307329        nPix_Y = VCALC_get_nPix_Y("FB") 
    308330 
     331        VC_MakeRealDistXYWaves(det_FB,detStr) 
     332 
    309333// beam center in pixels 
    310334        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                 
    313342        if(kBCTR_CM) 
    314343                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    634663        qy_ML = 0 
    635664        qz_ML = 0        
    636          
     665 
    637666// TODO - these are to be set from globals, not hard-wired. N and pixelSixze will be known (or pre-measured) 
    638667// pixel sizes are in cm 
     
    642671        nPix_Y = VCALC_get_nPix_Y("ML") 
    643672 
    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)?? 
    645676        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) 
    646682                 
    647683        if(kBCTR_CM) 
     
    694730        nPix_Y = VCALC_get_nPix_Y("MR") 
    695731 
     732        VC_MakeRealDistXYWaves(det_MR,detStr) 
     733 
     734// beam center in pixels 
    696735        xCtr = -(M_R_sep/pixSizeX)-1             
    697736        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         
    699743        if(kBCTR_CM) 
    700744                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    740784        nPix_Y = VCALC_get_nPix_Y("MT") 
    741785 
     786        VC_MakeRealDistXYWaves(det_MT,detStr) 
     787 
     788// beam center in pixels 
    742789        xCtr = nPix_X/2 
    743790        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                         
    745797        if(kBCTR_CM) 
    746798                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    787839        nPix_Y = VCALC_get_nPix_Y("MB") 
    788840 
     841        VC_MakeRealDistXYWaves(det_MB,detStr) 
     842 
     843// beam center in pixels 
    789844        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                 
    792852        if(kBCTR_CM) 
    793853                Wave data_realDistX = $(folderPath+instPath+detStr+":data_realDistX") 
     
    11941254        yCtr = V_getDet_beam_center_y("VCALC","B") 
    11951255 
     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         
    11961262//      Print "Xctr B = ",xctr,yctr 
    11971263 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Utils.ipf

    r1133 r1134  
    240240        // TODO -- this may not be the best location? 
    241241 
    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 
    244244        String orientation 
    245245        Variable dimX,dimY 
     
    252252        endif 
    253253         
    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 
    289255        Wave/Z data_realDistX = $(destPath + ":entry:instrument:detector_"+detStr+":data_realDistX") 
    290256        Wave/Z data_realDistY = $(destPath + ":entry:instrument:detector_"+detStr+":data_realDistY") 
     
    366332        return(0) 
    367333End 
     334 
     335 
     336 
     337// make the data_realDistX,Y Waves that are needed for the calculation of q 
     338Function 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) 
     394End 
     395 
    368396 
    369397 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf

    r1133 r1134  
    2121 
    2222 
    23 // returns the panel separation [cm] 
     23// returns the panel translation [cm] 
    2424Function VCALC_getPanelTranslation(type) 
    2525        String type 
     
    199199 
    200200 
    201  
     201Function VC_getNumGuides() 
     202 
     203        Variable ng 
     204        ControlInfo/W=VCALC VCALCCtrl_0a 
     205        ng = V_Value 
     206        return(ng) 
     207End 
    202208////////////////////////////////// 
    203209// 
     
    737743        return(sdd) 
    738744end 
    739          
     745 
     746 
     747 
     748Function V_sampleToGateValve() 
     749        // VCALCCtrl_1e is Sample Pos to Gate Valve (cm) 
     750        ControlInfo/W=VCALC VCALCCtrl_1e 
     751        return(V_Value)  
     752end 
     753 
     754 
     755Function V_sampleApertureToGateValve() 
     756        // VCALCCtrl_1d is Sample Aperture to Gate Valve (cm) 
     757        ControlInfo/W=VCALC VCALCCtrl_1d 
     758        return(V_Value)  
     759end 
     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 
     769Function 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) 
     799end      
    740800 
    741801// TODO 
     
    19522012end 
    19532013 
    1954  
     2014Function/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                     
     2103End 
     2104 
     2105//Write String representing NICE VSANS configuration 
     2106Function/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 
     2376end 
     2377 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf

    r1133 r1134  
    3636                 
    3737                // a front view of the panels 
    38                 FrontView_1x() 
     38//              FrontView_1x() 
    3939                 
    4040                // pop one of the presets to get everything to update 
    4141                VC_Preset_WhiteBeam() 
    4242                 
    43                 // update the views 
    44                 VC_UpdateViews() 
    45                  
    4643                // a recalculation is needed after the change 
    4744                // this re-bins the I(q) data too 
    4845                Recalculate_AllDetectors() 
    49                  
     46 
     47                // update the views 
     48                VC_UpdateViews() 
     49                                 
    5050        endif 
    5151End 
     
    7979        TabControl Vtab,tabLabel(4)="Back Det",tabLabel(5)="Simul",value= 0,proc=VCALCTabProc 
    8080        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 
    8385 
    8486 
     
    295297 
    296298 
     299Function 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 
     314End 
     315 
     316 
     317Function 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) 
     326end 
     327 
     328 
     329//Export NICE VSANS configurations to a plain text noteboox that can be saved as a text file. 
     330Function 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 
     346end 
     347 
     348Function 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 
     364End 
    297365 
    298366Function V_VCALCRecalcButtonProc(ba) : ButtonControl 
     
    449517         
    450518        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 
    456520                //change the sourceAp popup, SDD range, etc 
    457521                switch(sliderValue) 
    458522                        case 0: 
    459 //                              ControlInfo/W=SASCALC popup0 
    460 //                              mode=V_value 
    461523                                apStr = "0.75 cm;1.5 cm;3.0 cm;" 
    462524                                break 
     
    465527                endswitch 
    466528                ControlUpdate/W=VCALC VCALCCtrl_0f 
    467 //              UpdateControls()                                // the Ng global is actually set inside this function 
    468                 Recalculate_AllDetectors() 
     529 
     530//              Recalculate_AllDetectors() 
     531 
    469532        endif 
    470533        return 0 
     
    547610                         
    548611                        // a recalculation is needed after the change 
    549                         Recalculate_AllDetectors() 
     612//                      Recalculate_AllDetectors() 
    550613                                                                         
    551614                        break 
     
    603666 
    604667                        // a recalculation is needed after the change 
    605                         Recalculate_AllDetectors() 
     668//                      Recalculate_AllDetectors() 
    606669                                                                 
    607670                        break 
     
    669732                        Recalculate_AllDetectors() 
    670733                         
    671                         // re-bin the data? 
    672 //                      VC_RebinIQ_PopProc("",0,binStr) 
    673                                          
     734 
    674735                        break 
    675736                case -1: // control being killed 
     
    692753        String popStr           // contents of current popup item as string 
    693754 
    694         Recalculate_AllDetectors() 
     755//      Recalculate_AllDetectors() 
    695756         
    696757        return(0)        
     
    727788        Execute ("V_Front_IQ_Graph"+str) 
    728789 
    729 // OLD - do not use 
    730 //      // 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()" 
    741790//       
    742791        return(0)        
     
    810859//                      // don't need to recalculate the views, but need to recalculate the detectors 
    811860 
    812                         Recalculate_AllDetectors()               
     861//                      Recalculate_AllDetectors()               
    813862                                 
    814863                        break 
     
    833882                        String sval = sva.sval 
    834883 
    835                         Recalculate_AllDetectors()               
     884//                      Recalculate_AllDetectors()               
    836885                                 
    837886                        break 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Write.ipf

    r1114 r1134  
    41674167End 
    41684168 
    4169 Function V_writeDet_beam_center_y(fname,detStr,val) 
     4169// fname is a local WORK folder 
     4170Function V_putDet_beam_center_x_pix(fname,detStr,val) 
    41704171        String fname,detStr 
    41714172        Variable val 
    41724173 
    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 
    42014175        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" 
    42034177         
    42044178        Wave/Z w = $path 
     
    42124186End 
    42134187 
     4188Function 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) 
     4211End 
     4212 
     4213 
     4214// fname is a local WORK folder 
     4215Function 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 
     4231End 
     4232 
     4233// fname is a local WORK folder 
     4234Function 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 
     4250End 
    42144251 
    42154252// TODO -- write this function to return a WAVE with the data 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MaskUtils.ipf

    r1133 r1134  
    12241224Function V_UpdateFourPanelDisp() 
    12251225 
    1226         ControlInfo popup0 
     1226        ControlInfo/W=VSANS_Det_Panels popup0 
    12271227        String carrStr = S_value 
    12281228 
    1229         if(cmpstr("B",carrStr)==0) 
    1230                 DoAlert 0, "Detector B plotting not supported yet" 
    1231                 return(0) 
    1232         endif 
    1233          
    1234         ControlInfo popup1 
     1229//      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 
    12351235        String folder = S_Value 
    12361236 
     
    12791279 
    12801280        // 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         
    12811307//      RemoveImage/Z/W=VSANS_Det_Panels#Panel_L data 
    12821308        if(isVCALC) 
     
    13721398        SetActiveSubwindow ## 
    13731399 
    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) 
     1401End 
     1402 
     1403 
    13951404 
    13961405 
     
    14501459End 
    14511460 
    1452  
    1453  
     1461// 
     1462// toggle the mask overlay(s) on/off of the detector panels. 
     1463// 
    14541464Function V_ToggleFourMaskButtonProc(ba) : ButtonControl 
    14551465        STRUCT WMButtonAction &ba 
     
    14581468                case 2: // mouse up 
    14591469                        // click code here 
     1470 
     1471                        String detStr 
     1472                        Variable state,isVCALC 
    14601473                         
    14611474                        ControlInfo/W=VSANS_Det_Panels popup1 
    14621475                        String folderStr = S_Value 
    1463                         Variable state = 1 
    1464  
     1476                         
    14651477                        ControlInfo/W=VSANS_Det_Panels popup0 
    14661478                        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                  
    14681539// test the L image to see if I need to remove the mask 
    1469                         String detStr 
    14701540                        if(cmpstr(carrStr,"F")==0) 
    14711541                                detStr = "FL" 
     
    14761546                        wave/Z overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":overlay_"+detStr) 
    14771547                        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 
    14791549                                state = 0 
    14801550                        else 
     
    15171587                        ControlInfo/W=VSANS_Det_Panels popup0 
    15181588                        String detGroup = S_Value 
     1589                         
     1590                        Variable isVCALC 
     1591                        if(cmpstr(folderStr,"VCALC")==0) 
     1592                                isVCALC = 1 
     1593                        else 
     1594                                isVCALC = 0 
     1595                        endif 
    15191596                         
    15201597                        // calculate the "mask" to add 
     
    15451622                                        // calculate phi matrix 
    15461623                                        // fill in the mask 
    1547                                         for(ii=0;ii<ItemsInList(ksDetectorListNoB);ii+=1) 
    1548                                                 detStr = StringFromList(ii, ksDetectorListNoB, ";") 
     1624                                        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     1625                                                detStr = StringFromList(ii, ksDetectorListAll, ";") 
    15491626                                                Wave qTotal = $(str1+str2+detStr+":qTot_"+detStr) 
    15501627                                                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 
    15521633                                                Duplicate/O w $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 
    15531634                                                Wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 
     
    15681649                                        // loop over all of the panels 
    15691650                                        // fill in the mask 
    1570                                         for(ii=0;ii<ItemsInList(ksDetectorListNoB);ii+=1) 
    1571                                                 detStr = StringFromList(ii, ksDetectorListNoB, ";") 
     1651                                        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     1652                                                detStr = StringFromList(ii, ksDetectorListAll, ";") 
    15721653                                                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 
    15741659                                                Duplicate/O w $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 
    15751660                                                Wave overlay = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":AvgOverlay_"+detStr) 
     
    15951680                                        ControlInfo/W=VSANS_Det_Panels popup0 
    15961681                                        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" 
    15971698                                         
    15981699                // test the L image to see if I need to remove the mask 
     
    18941995        Variable state 
    18951996 
    1896  
     1997//      Variable isVCALC=0 
     1998//      if(cmpstr("VCALC",folderStr)==0) 
     1999//              isVCALC=1 
     2000//      endif 
     2001         
    18972002        String maskPath = "root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data" 
    18982003        if(WaveExists($maskPath) == 1) 
     
    19052010//                      wave data = $("root:Packages:NIST:VSANS:"+folderStr+":entry:instrument:detector_"+detStr+":data")        
    19062011//                      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 
    19082018//                      overlay = maskW         //this copies the data into the properly scaled wave 
    19092019                         
     
    19112021                                case "ML": 
    19122022                                case "FL": 
     2023                                case "B": 
    19132024//                                      Print ImageNameList("VSANS_Det_Panels#Panel_L", ";" ) 
    19142025                                        CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 
     
    19582069                                case "ML": 
    19592070                                case "FL": 
     2071                                case "B": 
    19602072                                        CheckDisplayed/W=VSANS_Det_Panels#Panel_L overlay 
    19612073                                        if(V_Flag == 1)         //overlay is present 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_VSANS_Preferences.ipf

    r1117 r1134  
    107107                // yes 
    108108                Variable/G root:Packages:NIST:VSANS:Globals:gIgnoreDetB = 0 
    109                 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 
     109//              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 
    114114        endif 
    115115         
Note: See TracChangeset for help on using the changeset viewer.