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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.