Ignore:
Timestamp:
Jan 17, 2017 8:37:19 AM (6 years ago)
Author:
srkline
Message:

adding procedures for:

simple save of a DIV file. no functionality to generate a DIV file yet, since I don't know how this will happen.

Simple dump of the file structure in a data "tree"

Verified that the error bars on the I(q) data are correctly calculated as standard error of the mean. There was never an issue with this, or with SANS calculations.

Started filling in "Correct" routines based on the SANS version. Only stubs present currently.

File:
1 edited

Legend:

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

    r1018 r1019  
    150150        NewPanel /W=(533,50,1140,588)/K=2 as "Patch Raw VSANS Data Files" 
    151151        DoWindow/C V_Patch_Panel 
    152         ShowTools/A 
     152//      ShowTools/A 
    153153        SetDataFolder root:Packages:NIST:VSANS:Globals:Patch: 
    154154 
     
    187187        CheckBox check2,pos={138,80},size={40,15},title="SDD",value= 0,mode=1,proc=V_MatchCheckProc 
    188188 
     189        PopupMenu popup_0,pos={450,85},size={109,20},title="Detector Panel",proc=V_PatchPopMenuProc 
     190        PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;ML;MR;MT;MB;B;\"" 
     191 
    189192 
    190193        TabControl PatchTab,pos={20,120},size={570,400} 
     
    201204// put these in a tabbed? section for the 9 different panels 
    202205// will it be able to patch all "FL" with the proper values, then all "FR", etc. to batchwise correct files? 
    203 //      PopupMenu popup_0,pos={30,base-step-10},size={109,20},title="Detector Panel",proc=PatchPopMenuProc 
    204 //      PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;ML;MR;MT;MB;B;\"" 
    205206 
    206207// TODO: add functions for these, make the intent a popup (since it's an enumerated type) 
     
    494495// fill list boxes based on the tab 
    495496// 
     497// TODO -- 
    496498// DETECTORS 
    497499// 
     
    512514        fname = S_path + fname 
    513515 
    514         Variable nRows = 3 
     516        Variable nRows = 12 
    515517        Redimension/N=(nRows,3) ListWave 
    516518        Redimension/N=(nRows,3) selWave 
     
    521523        SelWave[][2] = 2^1              // 3rd column editable 
    522524         
    523          
    524         listWave[0][1] = "count_time" 
    525         listWave[0][2] = num2str(V_getCount_time(fname))         
     525        ControlInfo popup_0                     // which detector panel? 
     526        String detStr = S_value 
     527         
     528        listWave[0][1] = "beam_center_x" 
     529        listWave[0][2] = num2str(V_getDet_Beam_center_x(fname,detStr))   
     530 
     531        listWave[1][1] = "beam_center_y" 
     532        listWave[1][2] = num2str(V_getDet_Beam_center_y(fname,detStr))   
     533 
     534        listWave[2][1] = "distance (nominal)" 
     535        listWave[2][2] = num2str(V_getDet_NominalDistance(fname,detStr))         
     536 
     537        listWave[3][1] = "integrated_count" 
     538        listWave[3][2] = num2str(V_getDet_IntegratedCount(fname,detStr))         
     539 
     540        listWave[4][1] = "pixel_fwhm_x" 
     541        listWave[4][2] = num2str(V_getDet_pixel_fwhm_x(fname,detStr))    
     542 
     543        listWave[5][1] = "pixel_fwhm_y" 
     544        listWave[5][2] = num2str(V_getDet_pixel_fwhm_y(fname,detStr))    
     545 
     546        listWave[6][1] = "pixel_num_x" 
     547        listWave[6][2] = num2str(V_getDet_pixel_num_x(fname,detStr))     
     548 
     549        listWave[7][1] = "pixel_num_y" 
     550        listWave[7][2] = num2str(V_getDet_pixel_num_y(fname,detStr))     
     551 
     552        listWave[8][1] = "setback" 
     553        listWave[8][2] = num2str(V_getDet_TBSetback(fname,detStr))       
     554 
     555        if(cmpstr(detStr,"B") == 0 ||cmpstr(detStr,"FR") == 0 || cmpstr(detStr,"FL") == 0 || cmpstr(detStr,"MR") == 0 || cmpstr(detStr,"ML") == 0) 
     556                listWave[9][1] = "lateral_offset"                       // "B" detector drops here 
     557                listWave[9][2] = num2str(V_getDet_LateralOffset(fname,detStr))   
     558        else     
     559                listWave[9][1] = "vertical_offset"       
     560                listWave[9][2] = num2str(V_getDet_VerticalOffset(fname,detStr))  
     561        endif    
     562 
     563        listWave[10][1] = "x_pixel_size" 
     564        listWave[10][2] = num2str(V_getDet_x_pixel_size(fname,detStr))   
     565 
     566        listWave[11][1] = "y_pixel_size" 
     567        listWave[11][2] = num2str(V_getDet_y_pixel_size(fname,detStr))   
     568 
    526569 
    527570        return(0) 
     
    531574// fill list boxes based on the tab 
    532575// 
     576// TODO -- 
    533577// PolSANS 
    534578// 
     
    12941338End 
    12951339 
    1296 // TODO -- not yet implemented 
     1340// DETECTOR 
    12971341Function V_WriteHeaderForPatch_4(fname) 
    12981342        String fname 
     1343 
     1344        Variable val,err 
     1345        String str 
     1346                 
     1347        Wave/T listWave = root:Packages:NIST:VSANS:Globals:Patch:PP_ListWave 
     1348        Wave selWave = root:Packages:NIST:VSANS:Globals:Patch:PP_selWave 
     1349 
     1350        ControlInfo popup_0 
     1351        String detStr = S_Value 
     1352 
     1353        // test bit 4 to see if the checkbox is selected 
     1354        if ((selWave[0][0] & 2^4) != 0)         // Test if bit 4 is set 
     1355                val = str2num(listWave[0][2])                   // "beam_center_x" 
     1356                err = V_writeDet_beam_center_x(fname,detStr,val)         
     1357        endif 
     1358 
     1359        if ((selWave[1][0] & 2^4) != 0)         // "beam_center_y" 
     1360                val = str2num(listWave[1][2]) 
     1361                err = V_writeDet_beam_center_y(fname,detStr,val) 
     1362        endif    
     1363         
     1364        if ((selWave[2][0] & 2^4) != 0)         //"distance (nominal)" 
     1365                val = str2num(listWave[2][2]) 
     1366                err = V_writeDet_distance(fname,detStr,val) 
     1367        endif    
     1368         
     1369        if ((selWave[3][0] & 2^4) != 0)         //"integrated_count" 
     1370                val = str2num(listWave[3][2]) 
     1371                err = V_writeDet_IntegratedCount(fname,detStr,val) 
     1372        endif    
     1373         
     1374        if ((selWave[4][0] & 2^4) != 0)         //"pixel_fwhm_x" 
     1375                val = str2num(listWave[4][2]) 
     1376                err = V_writeDet_pixel_fwhm_x(fname,detStr,val) 
     1377        endif    
     1378         
     1379        if ((selWave[5][0] & 2^4) != 0)         //"pixel_fwhm_y" 
     1380                val = str2num(listWave[5][2]) 
     1381                err = V_writeDet_pixel_fwhm_y(fname,detStr,val) 
     1382        endif    
     1383 
     1384        if ((selWave[6][0] & 2^4) != 0)         //"pixel_num_x" 
     1385                val = str2num(listWave[6][2]) 
     1386                err = V_writeDet_pixel_num_x(fname,detStr,val) 
     1387        endif    
     1388         
     1389        if ((selWave[7][0] & 2^4) != 0)         //"pixel_num_y" 
     1390                val = str2num(listWave[7][2]) 
     1391                err = V_writeDet_pixel_num_y(fname,detStr,val) 
     1392        endif            
     1393         
     1394        if ((selWave[8][0] & 2^4) != 0)         //"setback" -- only for TB detectors 
     1395                val = str2num(listWave[8][2]) 
     1396                if(cmpstr(detStr,"FT") == 0 || cmpstr(detStr,"FB") == 0 || cmpstr(detStr,"MT") == 0 || cmpstr(detStr,"MB") == 0) 
     1397                        err = V_writeDet_TBSetback(fname,detStr,val) 
     1398                endif 
     1399        endif    
     1400 
     1401        if ((selWave[9][0] & 2^4) != 0)         //"lateral_offset" or "vertical_offset" 
     1402                val = str2num(listWave[9][2]) 
     1403                if(cmpstr(detStr,"B") == 0 ||cmpstr(detStr,"FR") == 0 || cmpstr(detStr,"FL") == 0 || cmpstr(detStr,"MR") == 0 || cmpstr(detStr,"ML") == 0) 
     1404                        err = V_writeDet_LateralOffset(fname,detStr,val) 
     1405                else 
     1406                        err = V_writeDet_VerticalOffset(fname,detStr,val) 
     1407                endif 
     1408        endif    
     1409         
     1410        if ((selWave[10][0] & 2^4) != 0)                //"x_pixel_size" 
     1411                val = str2num(listWave[10][2]) 
     1412                err = V_writeDet_x_pixel_size(fname,detStr,val) 
     1413        endif    
     1414         
     1415        if ((selWave[11][0] & 2^4) != 0)                //"y_pixel_size" 
     1416                val = str2num(listWave[11][2]) 
     1417                err = V_writeDet_y_pixel_size(fname,detStr,val) 
     1418        endif    
     1419         
     1420 
     1421 
    12991422         
    13001423        return(0) 
     
    14631586 
    14641587 
     1588//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     1589//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     1590/////////////// 
     1591// 
     1592// this is a block to patch waves to the file headers, and can patch multiple files 
     1593//  
     1594// uses a simple panel to show what the table of values is. 
     1595// "read" will read only the first run number contents. 
     1596// 
     1597// TODO -- need to clear out the contents from RawVSANS, or else re-reading to check the values 
     1598//        will read locally, and it will look like nothing was written. Executing "save" will also  
     1599//        trigger a cleanout. 
     1600// 
     1601// TODO - link this to a panel somewhere - a button? menu item? will there be a lot more of these little panels? 
     1602// 
     1603Proc V_PatchDetectorDeadtime(firstFile,lastFile,detStr,deadtimeStr) 
     1604        Variable firstFile=1,lastFile=100 
     1605        String detStr = "FL",deadtimeStr="deadTimeWave" 
     1606 
     1607        V_fPatchDetectorDeadtime(firstFile,lastFile,detStr,$deadtimeStr) 
     1608 
     1609End 
     1610 
     1611Proc V_ReadDetectorDeadtime(firstFile,lastFile,detStr) 
     1612        Variable firstFile=1,lastFile=100 
     1613        String detStr = "FL" 
     1614         
     1615        V_fReadDetectorDeadtime(firstFile,lastFile,detStr) 
     1616End 
     1617 
     1618// simple utility to patch the detector deadtime in the file headers 
     1619// pass in the account name as a string 
     1620// lo is the first file number 
     1621// hi is the last file number (inclusive) 
     1622// 
     1623Function V_fPatchDetectorDeadtime(lo,hi,detStr,deadtimeW) 
     1624        Variable lo,hi 
     1625        String detStr 
     1626        Wave deadtimeW 
     1627         
     1628        Variable ii 
     1629        String fname 
     1630         
     1631        //loop over all files 
     1632        for(ii=lo;ii<=hi;ii+=1) 
     1633                fname = V_FindFileFromRunNumber(ii) 
     1634                if(strlen(fname) != 0) 
     1635                        V_writeDetector_deadtime(fname,detStr,deadtimeW)                         
     1636                else 
     1637                        printf "run number %d not found\r",ii 
     1638                endif 
     1639        endfor 
     1640         
     1641        return(0) 
     1642End 
     1643 
     1644// simple utility to read the detector deadtime stored in the file header 
     1645Function V_fReadDetectorDeadtime(lo,hi,detStr) 
     1646        Variable lo,hi 
     1647        String detStr 
     1648         
     1649        String fname 
     1650        Variable ii 
     1651         
     1652        for(ii=lo;ii<=hi;ii+=1) 
     1653                fname = V_FindFileFromRunNumber(ii) 
     1654                if(strlen(fname) != 0) 
     1655                        Wave deadtimeW = V_getDetector_deadtime(fname,detStr) 
     1656                        Duplicate/O deadTimeW root:Packages:NIST:VSANS:Globals:Patch:deadtimeWave 
     1657//                      printf "File %d:  Detector Dead time (s) = %g\r",ii,deadtime 
     1658                else 
     1659                        printf "run number %d not found\r",ii 
     1660                endif 
     1661        endfor 
     1662         
     1663        return(0) 
     1664End 
     1665 
     1666 
     1667 
     1668Macro V_PatchDetectorDeadtimePanel() 
     1669        DoWindow/F Patch_Deadtime 
     1670        if(V_flag==0) 
     1671         
     1672                NewDataFolder/O/S root:Packages:NIST:VSANS:Globals:Patch 
     1673 
     1674                Make/O/D/N=48 deadTimeWave 
     1675                 
     1676                SetDataFolder root: 
     1677                 
     1678                Execute "V_DeadtimePatchPanel()" 
     1679        endif 
     1680End 
     1681 
     1682 
     1683// 
     1684// TODO - needs some minor adjustment to be of practical use, but a proof of concept 
     1685// 
     1686Proc V_DeadtimePatchPanel() : Panel 
     1687        PauseUpdate; Silent 1           // building window... 
     1688 
     1689 
     1690        NewPanel /W=(600,400,1000,1000)/N=DeadtimePanel/K=1 
     1691//      ShowTools/A 
     1692         
     1693        PopupMenu popup_0,pos={20,20},size={109,20},title="Detector Panel" 
     1694        PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;ML;MR;MT;MB;\"" 
     1695         
     1696        Button button0,pos={22.00,62.00},size={50.00,20.00},proc=V_ReadDTButtonProc,title="Read" 
     1697        Button button0_1,pos={95.00,62.00},size={50.00,20.00},proc=V_WriteDTButtonProc,title="Write" 
     1698        SetVariable setvar0,pos={19.00,128.00},size={100.00,14.00},title="first" 
     1699        SetVariable setvar0,value= K0 
     1700        SetVariable setvar1,pos={20.00,154.00},size={100.00,14.00},title="last" 
     1701        SetVariable setvar1,value= K1 
     1702 
     1703         
     1704 
     1705// display the wave      
     1706        Edit/W=(180,40,380,550)/HOST=#  root:Packages:NIST:VSANS:Globals:Patch:deadTimeWave 
     1707        ModifyTable width(Point)=0 
     1708        ModifyTable width(root:Packages:NIST:VSANS:Globals:Patch:deadTimeWave)=120 
     1709        RenameWindow #,T0 
     1710        SetActiveSubwindow ## 
     1711 
     1712         
     1713EndMacro 
     1714 
     1715 
     1716Function V_ReadDTButtonProc(ba) : ButtonControl 
     1717        STRUCT WMButtonAction &ba 
     1718 
     1719        switch( ba.eventCode ) 
     1720                case 2: // mouse up 
     1721                        // click code here 
     1722                         
     1723                        ControlInfo popup_0 
     1724                        String detStr = S_Value 
     1725                        ControlInfo setvar0 
     1726                        Variable lo=V_Value 
     1727                        Variable hi=lo 
     1728                         
     1729                        V_fReadDetectorDeadtime(lo,hi,detStr) 
     1730                         
     1731                        break 
     1732                case -1: // control being killed 
     1733                        break 
     1734        endswitch 
     1735 
     1736        return 0 
     1737End 
     1738 
     1739Function V_WriteDTButtonProc(ba) : ButtonControl 
     1740        STRUCT WMButtonAction &ba 
     1741 
     1742        switch( ba.eventCode ) 
     1743                case 2: // mouse up 
     1744                        // click code here 
     1745                         
     1746                        ControlInfo popup_0 
     1747                        String detStr = S_Value 
     1748                        ControlInfo setvar0 
     1749                        Variable lo=V_Value 
     1750                        ControlInfo setvar1 
     1751                        Variable hi=V_Value 
     1752                        Wave deadTimeW = root:Packages:NIST:VSANS:Globals:Patch:deadTimeWave 
     1753                         
     1754                        V_fPatchDetectorDeadtime(lo,hi,detStr,deadtimeW) 
     1755                         
     1756                        break 
     1757                case -1: // control being killed 
     1758                        break 
     1759        endswitch 
     1760 
     1761        return 0 
     1762End 
     1763 
     1764////////////////////////////////////////////////////////////////////////////////////////////////// 
     1765////////////////////////////////////////////////////////////////////////////////////////////////// 
     1766 
     1767 
     1768//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     1769//////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     1770/////////////// 
     1771// 
     1772// this is a block to patch beam centers to the file headers 
     1773// it will patch the headers for all 9 detectors 
     1774// and can patch multiple files 
     1775//  
     1776// uses a simple panel to show what the table of values is. 
     1777// "read" will read only the first run number contents. this is the "good" set of XY 
     1778//  that you want to write out to other files. 
     1779// 
     1780// TODO -- need to clear out the contents from RawVSANS, or else re-reading to check the values 
     1781//        will read locally, and it will look like nothing was written. Executing "save" will also  
     1782//        trigger a cleanout. 
     1783// 
     1784// TODO - link this to a panel somewhere - a button? menu item? will there be a lot more of these little panels? 
     1785// 
     1786Proc V_PatchDet_xyCenters(firstFile,lastFile) 
     1787        Variable firstFile=1,lastFile=100 
     1788 
     1789        V_fPatchDet_xyCenters(firstFile,lastFile) 
     1790 
     1791End 
     1792 
     1793Proc V_ReadDet_xyCenters(firstFile,lastFile) 
     1794        Variable firstFile=1,lastFile=100 
     1795 
     1796         
     1797        V_fReadDet_xyCenters(firstFile,lastFile) 
     1798End 
     1799 
     1800// simple utility to patch the xy center in the file headers 
     1801// lo is the first file number 
     1802// hi is the last file number (inclusive) 
     1803// 
     1804Function V_fPatchDet_xyCenters(lo,hi) 
     1805        Variable lo,hi 
     1806 
     1807         
     1808        Variable ii,jj 
     1809        String fname,detStr 
     1810         
     1811        Wave xCtr_pix = root:Packages:NIST:VSANS:Globals:Patch:xCtr_pix 
     1812        Wave yCtr_pix = root:Packages:NIST:VSANS:Globals:Patch:yCtr_pix 
     1813        Wave/T panelW = root:Packages:NIST:VSANS:Globals:Patch:panelW 
     1814                 
     1815        //loop over all files 
     1816        for(jj=lo;jj<=hi;jj+=1) 
     1817                fname = V_FindFileFromRunNumber(jj) 
     1818                if(strlen(fname) != 0) 
     1819                 
     1820                        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     1821                                detStr = panelW[ii] 
     1822                                V_writeDet_beam_center_x(fname,detStr,xCtr_pix[ii]) 
     1823                                V_writeDet_beam_center_y(fname,detStr,yCtr_pix[ii])              
     1824                        endfor   
     1825                 
     1826                else 
     1827                        printf "run number %d not found\r",ii 
     1828                endif 
     1829        endfor 
     1830         
     1831        return(0) 
     1832End 
     1833 
     1834// simple utility to read the detector xy centers stored in the file header 
     1835Function V_fReadDet_xyCenters(lo,hi) 
     1836        Variable lo,hi 
     1837 
     1838         
     1839        String fname,detStr 
     1840        Variable ii,jj 
     1841         
     1842        Wave xCtr_pix = root:Packages:NIST:VSANS:Globals:Patch:xCtr_pix 
     1843        Wave yCtr_pix = root:Packages:NIST:VSANS:Globals:Patch:yCtr_pix 
     1844        Wave/T panelW = root:Packages:NIST:VSANS:Globals:Patch:panelW 
     1845         
     1846        for(jj=lo;jj<=hi;jj+=1) 
     1847                fname = V_FindFileFromRunNumber(jj) 
     1848                if(strlen(fname) != 0) 
     1849                 
     1850                        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     1851                                detStr = StringFromList(ii, ksDetectorListAll, ";") 
     1852                                panelW[ii] = detStr 
     1853                                xCtr_pix[ii] = V_getDet_beam_center_x(fname,detStr) 
     1854                                yCtr_pix[ii] = V_getDet_beam_center_y(fname,detStr) 
     1855                        endfor 
     1856                 
     1857                 
     1858                else 
     1859                        printf "run number %d not found\r",jj 
     1860                endif 
     1861                 
     1862        endfor 
     1863 
     1864         
     1865        return(0) 
     1866End 
     1867 
     1868 
     1869 
     1870Macro V_PatchDet_xyCenters_Panel() 
     1871        DoWindow/F Patch_Deadtime 
     1872        if(V_flag==0) 
     1873         
     1874                NewDataFolder/O/S root:Packages:NIST:VSANS:Globals:Patch 
     1875 
     1876                Make/O/D/N=9 xCtr_pix,yCtr_pix 
     1877                Make/O/T/N=9 panelW 
     1878                 
     1879                SetDataFolder root: 
     1880                 
     1881                Execute "V_Patch_xyCtr_Panel()" 
     1882        endif 
     1883End 
     1884 
     1885 
     1886// 
     1887// TODO - document, make setVar controls larger, make cleaner 
     1888// 
     1889// TODO - link to main panel? link to Patch Panel? 
     1890// 
     1891Proc V_Patch_xyCtr_Panel() : Panel 
     1892        PauseUpdate; Silent 1           // building window... 
     1893 
     1894 
     1895        NewPanel /W=(600,400,1150,800)/N=Patch_XY_Panel/K=1 
     1896//      ShowTools/A 
     1897         
     1898//      PopupMenu popup_0,pos={20,20},size={109,20},title="Detector Panel" 
     1899//      PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;ML;MR;MT;MB;B;\"" 
     1900         
     1901        Button button0,pos={22.00,62.00},size={50.00,20.00},proc=V_ReadXYButtonProc,title="Read" 
     1902        Button button0_1,pos={95.00,62.00},size={50.00,20.00},proc=V_WriteXYButtonProc,title="Write" 
     1903        SetVariable setvar0,pos={19.00,128.00},size={100.00,14.00},title="first" 
     1904        SetVariable setvar0,value= K0 
     1905        SetVariable setvar1,pos={20.00,154.00},size={100.00,14.00},title="last" 
     1906        SetVariable setvar1,value= K1 
     1907 
     1908         
     1909        SetDataFolder root:Packages:NIST:VSANS:Globals:Patch 
     1910// display the wave      
     1911        Edit/W=(180,40,480,350)/HOST=#  panelW,xCtr_pix,yCtr_pix 
     1912        ModifyTable width(Point)=0 
     1913        ModifyTable width(panelW)=80 
     1914        ModifyTable width(xCtr_pix)=100 
     1915        ModifyTable width(yCtr_pix)=100 
     1916        RenameWindow #,T0 
     1917        SetActiveSubwindow ## 
     1918 
     1919        SetDataFolder root: 
     1920         
     1921EndMacro 
     1922 
     1923 
     1924Function V_ReadXYButtonProc(ba) : ButtonControl 
     1925        STRUCT WMButtonAction &ba 
     1926 
     1927        switch( ba.eventCode ) 
     1928                case 2: // mouse up 
     1929                        // click code here 
     1930                         
     1931//                      ControlInfo popup_0 
     1932//                      String detStr = S_Value 
     1933                        ControlInfo setvar0 
     1934                        Variable lo=V_Value 
     1935                        Variable hi=lo 
     1936                         
     1937                        V_fReadDet_xyCenters(lo,hi) 
     1938                         
     1939                        break 
     1940                case -1: // control being killed 
     1941                        break 
     1942        endswitch 
     1943 
     1944        return 0 
     1945End 
     1946 
     1947Function V_WriteXYButtonProc(ba) : ButtonControl 
     1948        STRUCT WMButtonAction &ba 
     1949 
     1950        switch( ba.eventCode ) 
     1951                case 2: // mouse up 
     1952                        // click code here 
     1953                         
     1954//                      ControlInfo popup_0 
     1955//                      String detStr = S_Value 
     1956                        ControlInfo setvar0 
     1957                        Variable lo=V_Value 
     1958                        ControlInfo setvar1 
     1959                        Variable hi=V_Value 
     1960//                      Wave deadTimeW = root:Packages:NIST:VSANS:Globals:Patch:deadTimeWave 
     1961                         
     1962                        V_fPatchDet_xyCenters(lo,hi) 
     1963                         
     1964                        break 
     1965                case -1: // control being killed 
     1966                        break 
     1967        endswitch 
     1968 
     1969        return 0 
     1970End 
     1971 
     1972////////////////////////////////////////////////////////////////////////////////////////////////// 
     1973////////////////////////////////////////////////////////////////////////////////////////////////// 
Note: See TracChangeset for help on using the changeset viewer.