Ignore:
Timestamp:
Dec 1, 2017 2:53:00 PM (5 years ago)
Author:
srkline
Message:

changes here are mostly to facilitate the generation and display of DIV files. Set up a simple sequence to normalize DIV data sets and copy the normalized panels to the temporary folder for saving. Made a simple panel to display the 4 panels from a carriage, and to do simple subtract or divide comparison to track changes in DIV over time.

For mask drawing, made the overlay semi-transparent so that the original data can be seen through it - but kept the toggle. log/lin scaling is now based on the VSANS preference.

Adjusted the mouse tracking of the pixel on the RAW data display to properly track the T/B panels with their half-size pixels.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_DetectorBinning_Utils.ipf

    r1070 r1075  
    811811 
    812812        strswitch(type) // string switch 
    813                 case "FL":              // execute if case matches expression 
     813//              case "FL":              // execute if case matches expression 
     814//              case "FR": 
     815//                      detStr = type 
     816//                      if(isVCALC) 
     817//                              WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
     818//                              WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation 
     819//                      else 
     820//                              Wave inten = V_getDetectorDataW(folderStr,detStr) 
     821//                              Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
     822//                              Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     823//                              if(WaveExists(mask) == 1) 
     824//                                      maskMissing = 0 
     825//                              endif 
     826//                               
     827//                      endif 
     828//                      NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
     829//                      Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
     830//                      nSets = 1 
     831//                      break    
     832                                                                 
     833//              case "FT":               
     834//              case "FB": 
     835//                      detStr = type 
     836//                      if(isVCALC) 
     837//                              WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
     838//                              WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
     839//                      else 
     840//                              Wave inten = V_getDetectorDataW(folderStr,detStr) 
     841//                              Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
     842//                              Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     843//                              if(WaveExists(mask) == 1) 
     844//                                      maskMissing = 0 
     845//                              endif 
     846//                      endif 
     847//                      NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
     848//                      Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
     849//                      nSets = 1 
     850//                      break 
     851                         
     852//              case "ML":               
     853//              case "MR": 
     854//                      detStr = type 
     855//                      if(isVCALC) 
     856//                              WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
     857//                              WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
     858//                      else 
     859//                              Wave inten = V_getDetectorDataW(folderStr,detStr) 
     860//                              Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
     861//                              Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     862//                              if(WaveExists(mask) == 1) 
     863//                                      maskMissing = 0 
     864//                              endif 
     865//                      endif    
     866//                      //TODO: 
     867//                      // -- decide on the proper deltaQ for binning. either nominal value for LR, or one  
     868//                      //    determined specifically for that panel (currently using one tube width as deltaQ) 
     869//                      // -- this is repeated multiple times in this switch 
     870//                      NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
     871//                      Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
     872//                      nSets = 1 
     873//                      break    
     874                                         
     875//              case "MT":               
     876//              case "MB": 
     877//                      detStr = type 
     878//                      if(isVCALC) 
     879//                              WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
     880//                              WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
     881//                      else 
     882//                              Wave inten = V_getDetectorDataW(folderStr,detStr) 
     883//                              Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
     884//                              Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     885//                              if(WaveExists(mask) == 1) 
     886//                                      maskMissing = 0 
     887//                              endif 
     888//                      endif    
     889//                      NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
     890//                      Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
     891//                      nSets = 1 
     892//                      break    
     893 
     894// only one panel, simply pick that panel and move on out of the switch 
     895                case "FL": 
    814896                case "FR": 
    815                         detStr = type 
    816                         if(isVCALC) 
    817                                 WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
    818                                 WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation 
    819                         else 
    820                                 Wave inten = V_getDetectorDataW(folderStr,detStr) 
    821                                 Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
    822                                 Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    823                                 if(WaveExists(mask) == 1) 
    824                                         maskMissing = 0 
    825                                 endif 
    826                                  
    827                         endif 
    828                         NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
    829                         Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
    830                         nSets = 1 
    831                         break    
    832                                                                  
    833                 case "FT":               
     897                case "FT": 
    834898                case "FB": 
    835                         detStr = type 
    836                         if(isVCALC) 
    837                                 WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
    838                                 WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
    839                         else 
    840                                 Wave inten = V_getDetectorDataW(folderStr,detStr) 
    841                                 Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
    842                                 Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    843                                 if(WaveExists(mask) == 1) 
    844                                         maskMissing = 0 
    845                                 endif 
    846                         endif 
    847                         NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
    848                         Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
    849                         nSets = 1 
    850                         break 
    851                          
    852                 case "ML":               
     899                case "ML": 
    853900                case "MR": 
    854                         detStr = type 
    855                         if(isVCALC) 
    856                                 WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
    857                                 WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
    858                         else 
    859                                 Wave inten = V_getDetectorDataW(folderStr,detStr) 
    860                                 Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
    861                                 Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    862                                 if(WaveExists(mask) == 1) 
    863                                         maskMissing = 0 
    864                                 endif 
    865                         endif    
    866                         //TODO: 
    867                         // -- decide on the proper deltaQ for binning. either nominal value for LR, or one  
    868                         //    determined specifically for that panel (currently using one tube width as deltaQ) 
    869                         // -- this is repeated multiple times in this switch 
    870                         NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
    871 //                      NVAR delQ = $(folderPath+instPath+"ML"+":gDelQ_ML") 
    872                         Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
    873                         nSets = 1 
    874                         break    
    875                                          
    876                 case "MT":               
    877                 case "MB": 
    878                         detStr = type 
    879                         if(isVCALC) 
    880                                 WAVE inten = $(folderPath+instPath+detStr+":det_"+detStr) 
    881                                 WAVE/Z iErr = $("iErr_"+detStr)                 // 2D errors -- may not exist, especially for simulation                 
    882                         else 
    883                                 Wave inten = V_getDetectorDataW(folderStr,detStr) 
    884                                 Wave iErr = V_getDetectorDataErrW(folderStr,detStr) 
    885                                 Wave/Z mask = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    886                                 if(WaveExists(mask) == 1) 
    887                                         maskMissing = 0 
    888                                 endif 
    889                         endif    
    890                         NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
    891                         Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values 
    892                         nSets = 1 
    893                         break    
    894                                          
     901                case "MT": 
     902                case "MB":                       
    895903                case "B":        
    896904                        detStr = type 
     
    906914                                endif 
    907915                        endif    
    908                         NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_B") 
     916                        NVAR delQ = $(folderPath+instPath+detStr+":gDelQ_"+detStr) 
    909917                        Wave qTotal = $(folderPath+instPath+detStr+":qTot_"+detStr)                     // 2D q-values   
    910918                        nSets = 1 
     
    10891097                                         
    10901098                default: 
    1091                         nSets = 0                                                       // optional default expression executed 
     1099                        nSets = 0                                                        
    10921100                        Print "ERROR   ---- type is not recognized " 
    10931101        endswitch 
     
    11011109 
    11021110 
    1103 //TODO: properly define the 2D errors here - I'll have this if I do the simulation 
    1104 // -- need to propagate the 2D errors up to this point 
    1105 // 
     1111// RAW data is currently read in and the 2D error wave is correctly generated 
     1112// 2D error is propagated through all reduction steps, but I have not  
     1113// verified that it is an exact duplication of the 1D error 
     1114// 
     1115// 
     1116// 
     1117// IF ther is no 2D error wave present for some reason, make a fake one 
    11061118        if(WaveExists(iErr)==0  && WaveExists(inten) != 0) 
    11071119                Duplicate/O inten,iErr 
     
    11771189// TODO: 
    11781190// -- the iErr (=2D) wave and accumulation of error is NOT CALCULATED CORRECTLY YET 
     1191// -- verify the 2D error propagation by reducing it to 1D error 
     1192// 
    11791193// 
    11801194// The 1D error does not use iErr, and IS CALCULATED CORRECTLY 
     
    13021316// just like in CircSectAve.ipf 
    13031317// TODO: 
    1304 // -- 2D Errors were NOT properly acculumated through reduction, so this loop of calculations is NOT MEANINGFUL (yet) 
     1318// -- 2D Errors were (maybe) properly acculumated through reduction, so this loop of calculations is NOT VERIFIED (yet) 
    13051319// x- the error on the 1D intensity, is correctly calculated as the standard error of the mean. 
    13061320        for(ii=0;ii<nq;ii+=1) 
     
    14251439        usingLenses = 0 
    14261440 
    1427  
    1428 Print "Resolution lambda,lambdaWidth,DDet,apOff,S1,S2,L1,L2,BS,del_r,usingLenses" 
    1429 Print lambda,lambdaWidth,DDet,apOff,S1,S2,L1,L2,BS,del_r,usingLenses 
     1441if(cmpstr(detStr,"FL")==0) 
     1442        Print "(FL) Resolution lambda,lambdaWidth,DDet,apOff,S1,S2,L1,L2,BS,del_r,usingLenses" 
     1443        Print lambda,lambdaWidth,DDet,apOff,S1,S2,L1,L2,BS,del_r,usingLenses 
     1444endif 
    14301445 
    14311446        ii=0 
Note: See TracChangeset for help on using the changeset viewer.