Ignore:
Timestamp:
Jul 20, 2017 3:22:34 PM (5 years ago)
Author:
srkline
Message:

LOTS of changes to accommodate the beam center being reported in cm rather than pixels. Required a lot of changes to VCALC (to fill in simulated data), and in the reading and interpreting of data for display, and most importantly, the calculation of q.

There may still be a few residual bugs with this. I am still re-testing with new sample data sets.

File:
1 edited

Legend:

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

    r1053 r1055  
    1818 
    1919 
    20 // the base data folder path where the raw data is loaded 
    21 Strconstant ksBaseDFPath = "root:Packages:NIST:VSANS:RawVSANS:" 
    22  
    23 // the list of WORK Folders 
    24 // RawVSANS does not behave as a WORK folder, but it is local. so add it in explicitly to the list if needed 
    25 // VCALC behaves *almost* as a WORK folder, but it is local. so add it in explicitly to the list if needed 
    26 //Strconstant ksWorkFolderList = "RAW;SAM;EMP;BGD;COR;DIV;ABS;MSK;CAL;STO;SUB;DRK;ADJ;VCALC;RawVSANS;" 
    27 Strconstant ksWorkFolderListShort = "RAW;SAM;EMP;BGD;COR;DIV;ABS;MSK;CAL;STO;SUB;DRK;ADJ;" 
     20 
    2821 
    2922 
     
    7467        Variable err= V_LoadHDF5_NoAtt(file,folder)     // reads into current folder 
    7568         
    76  
     69        if(err) 
     70                DoAlert 0,"User cancelled or other file read error..." 
     71                return(1) 
     72        endif 
    7773         
    7874        // if RAW data, then generate the errors and linear data copy 
     
    120116                                Wave w_calib = V_getDetTube_spatialCalib(folder,detStr) 
    121117                                Variable tube_width = V_getDet_tubeWidth(folder,detStr) 
    122                                 V_NonLinearCorrection(w,w_calib,tube_width,detStr,destPath) 
     118                                V_NonLinearCorrection(folder,w,w_calib,tube_width,detStr,destPath) 
    123119                                 
    124120                                 
     
    126122                                // TODO -- there needs to be a permanent location for these values?? 
    127123                                // 
    128                                 V_ConvertBeamCtr_to_mm(folder,detStr,destPath) 
     124                                 
     125                                // TODO 
     126                                // -- the beam center value in mm needs to be present - it is used in calculation of Qvalues 
     127                                // -- but having both the same is wrong... 
     128                                // -- the pixel value is needed for display of the panels 
     129                                if(kBCTR_CM) 
     130                                        //V_ConvertBeamCtr_to_mm(folder,detStr,destPath) 
     131                                        // 
     132         
     133                                        Make/O/D/N=1 $(destPath + ":entry:instrument:detector_"+detStr+":beam_center_x_mm") 
     134                                        Make/O/D/N=1 $(destPath + ":entry:instrument:detector_"+detStr+":beam_center_y_mm") 
     135                                        WAVE x_mm = $(destPath + ":entry:instrument:detector_"+detStr+":beam_center_x_mm") 
     136                                        WAVE y_mm = $(destPath + ":entry:instrument:detector_"+detStr+":beam_center_y_mm") 
     137                                        x_mm[0] = V_getDet_beam_center_x(folder,detStr) * 10            // convert cm to mm 
     138                                        y_mm[0] = V_getDet_beam_center_y(folder,detStr) * 10            // convert cm to mm 
     139                                         
     140                                        // TODO::: 
     141                                // now I need to convert the beam center in mm to pixels 
     142                                // and have some rational place to look for it... 
     143                                        V_ConvertBeamCtr_to_pix(folder,detStr,destPath) 
     144                                else 
     145                                        // beam center is in pixels, so use the old routine 
     146                                        V_ConvertBeamCtr_to_mm(folder,detStr,destPath) 
     147                                endif                            
     148                                 
    129149                                 
    130150                                // (2.5) Calculate the q-values 
     
    143163                         
    144164                        //"B" is separate 
    145                         V_NonLinearCorrection_B(folder,"B",destPath) 
     165                        Wave w = V_getDetectorDataW(folder,"B") 
     166                        Wave cal_x = V_getDet_cal_x(folder,"B") 
     167                        Wave cal_y = V_getDet_cal_y(folder,"B") 
     168                         
     169                        V_NonLinearCorrection_B(folder,w,cal_x,cal_y,"B",destPath) 
    146170                        V_ConvertBeamCtr_to_mmB(folder,"B",destPath) 
    147171                        V_Detector_CalcQVals(folder,"B",destPath) 
     
    400424        HDF5OpenFile/R/P=catPathName/Z fileID as fileName 
    401425        if (V_Flag != 0) 
    402                 return 0 
     426                return 1 
    403427        endif 
    404428 
     
    408432        if ( fileID == 0 ) 
    409433                Print fileName + ": could not open as HDF5 file" 
    410                 return (0) 
     434                return (1) 
    411435        endif 
    412436         
     
    507531                Print fileName + ": could not open as HDF5 file" 
    508532                setdatafolder root: 
    509                 return (0) 
     533                return (1) 
    510534        endif 
    511535 
Note: See TracChangeset for help on using the changeset viewer.