Ignore:
Timestamp:
Jul 9, 2013 10:52:52 AM (10 years ago)
Author:
srkline
Message:

Updates to the Event Mode handling to better deal with big files - splitting, modifying, and re-loading.

Updated the help file for Event Mode to reflect the new panel and button options.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/EventModeProcessing.ipf

    r917 r918  
    1414// -- examples? 
    1515// 
     16// -- ?? need way to get correspondence between .hst files and VAX files? Names are all different. See 
     17//    DateAndTime2HSTName() functions and similar @ bottom of this file 
     18// 
    1619// x- add the XOP to the distribution package 
    1720// 
    18 // -- Need to make sure that the rescaledTime and the differentiated time graphs are 
     21// x- Need to make sure that the rescaledTime and the differentiated time graphs are 
    1922//     being properly updated when the data is processed, modified, etc. 
    2023// 
     
    3235// -- Add a switch to allow Sorting of the Stream data to remove the "time-reversed" data 
    3336//     points. Maybe not kosher, but would clean things up. 
     37// 
     38// 
     39///////////////   SWITCHES     ///////////////// 
     40// 
     41// for the "File Too Big" limit: 
     42//      Variable/G root:Packages:NIST:Event:gEventFileTooLarge = 150            // 150 MB considered too large 
     43// 
     44// for the tolerance of "step" detection 
     45//      Variable/G root:Packages:NIST:Event:gStepTolerance = 5          // 5 = # of standard deviations from mean. See PutCursorsAtStep() 
    3446// 
    3547// 
     
    120132 
    121133Function Init_Event() 
    122         String/G        root:Packages:NIST:gEvent_logfile 
    123         String/G        root:Packages:NIST:gEventDisplayString="Details of the file load" 
    124          
    125         Variable/G      root:Packages:NIST:AIMTYPE_XY=0 // XY Event 
    126         Variable/G      root:Packages:NIST:AIMTYPE_XYM=2 // XY Minor event 
    127         Variable/G      root:Packages:NIST:AIMTYPE_MIR=1 // Minor rollover event 
    128         Variable/G      root:Packages:NIST:AIMTYPE_MAR=3 // Major rollover event 
    129  
    130         Variable/G root:Packages:NIST:gEvent_time_msw = 0 
    131         Variable/G root:Packages:NIST:gEvent_time_lsw = 0 
    132         Variable/G root:Packages:NIST:gEvent_t_longest = 0 
    133  
    134         Variable/G root:Packages:NIST:gEvent_tsdisp //Displayed slice 
    135         Variable/G root:Packages:NIST:gEvent_nslices = 10  //Number of time slices 
    136          
    137         Variable/G root:Packages:NIST:gEvent_logint = 1 
    138  
    139         Variable/G root:Packages:NIST:gEvent_Mode = MODE_OSCILL                         // ==0 for "stream", ==1 for Oscillatory 
    140         Variable/G root:Packages:NIST:gRemoveBadEvents = 1              // ==1 to remove "bad" events, ==0 to read "as-is" 
    141         Variable/G root:Packages:NIST:gSortStreamEvents = 0             // ==1 to sort the event stream, a last resort for a stream of data 
    142          
    143         Variable/G root:Packages:NIST:gEvent_ForceTmaxBin=1             //==1 to enforce t_longest in user-defined custom bins 
    144  
    145         NVAR nslices = root:Packages:NIST:gEvent_nslices 
    146          
    147         SetDataFolder root: 
     134 
    148135        NewDataFolder/O/S root:Packages:NIST:Event 
    149          
     136 
     137        String/G        root:Packages:NIST:Event:gEvent_logfile 
     138        String/G        root:Packages:NIST:Event:gEventDisplayString="Details of the file load" 
     139         
     140        Variable/G      root:Packages:NIST:Event:AIMTYPE_XY=0 // XY Event 
     141        Variable/G      root:Packages:NIST:Event:AIMTYPE_XYM=2 // XY Minor event 
     142        Variable/G      root:Packages:NIST:Event:AIMTYPE_MIR=1 // Minor rollover event 
     143        Variable/G      root:Packages:NIST:Event:AIMTYPE_MAR=3 // Major rollover event 
     144 
     145        Variable/G root:Packages:NIST:Event:gEvent_time_msw = 0 
     146        Variable/G root:Packages:NIST:Event:gEvent_time_lsw = 0 
     147        Variable/G root:Packages:NIST:Event:gEvent_t_longest = 0 
     148 
     149        Variable/G root:Packages:NIST:Event:gEvent_tsdisp //Displayed slice 
     150        Variable/G root:Packages:NIST:Event:gEvent_nslices = 10  //Number of time slices 
     151         
     152        Variable/G root:Packages:NIST:Event:gEvent_logint = 1 
     153 
     154        Variable/G root:Packages:NIST:Event:gEvent_Mode = MODE_OSCILL                           // ==0 for "stream", ==1 for Oscillatory 
     155        Variable/G root:Packages:NIST:Event:gRemoveBadEvents = 1                // ==1 to remove "bad" events, ==0 to read "as-is" 
     156        Variable/G root:Packages:NIST:Event:gSortStreamEvents = 0               // ==1 to sort the event stream, a last resort for a stream of data 
     157         
     158        Variable/G root:Packages:NIST:Event:gEvent_ForceTmaxBin=1               //==1 to enforce t_longest in user-defined custom bins 
     159 
     160        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
     161         
     162                 
    150163        Make/D/O/N=(XBINS,YBINS,nslices) slicedData 
    151164        Duplicate/O slicedData logslicedData 
     
    154167 
    155168// for decimation 
     169        Variable/G root:Packages:NIST:Event:gEventFileTooLarge = 150            // 150 MB considered too large 
    156170        Variable/G root:Packages:NIST:Event:gDecimation = 100 
    157         Variable/G root:Packages:NIST:gEvent_t_longest_decimated = 0 
     171        Variable/G root:Packages:NIST:Event:gEvent_t_longest_decimated = 0 
    158172 
    159173// for large file splitting 
    160174        String/G root:Packages:NIST:Event:gSplitFileList = ""           // a list of the file names as split 
     175         
     176// for editing 
     177        Variable/G root:Packages:NIST:Event:gStepTolerance = 5          // 5 = # of standard deviations from mean. See PutCursorsAtStep() 
    161178         
    162179        SetDataFolder root: 
     
    193210        Button button0,fSize=12 
    194211        TitleBox tb1,pos={475,500},size={135,24},fSize=10 
    195         TitleBox tb1,variable= root:Packages:NIST:gEventDisplayString 
     212        TitleBox tb1,variable= root:Packages:NIST:Event:gEventDisplayString 
    196213 
    197214        CheckBox chkbox2,pos={376,151},size={81,14},proc=LogIntEvent_Proc,title="Log Intensity" 
    198         CheckBox chkbox2,fSize=10,variable= root:Packages:NIST:gEvent_logint 
     215        CheckBox chkbox2,fSize=10,variable= root:Packages:NIST:Event:gEvent_logint 
    199216        CheckBox chkbox3,pos={14,125},size={119,14},title="Remove Bad Events?",fSize=10 
    200         CheckBox chkbox3,variable= root:Packages:NIST:gRemoveBadEvents 
     217        CheckBox chkbox3,variable= root:Packages:NIST:Event:gRemoveBadEvents 
    201218         
    202219        Button doneButton,pos={708,36},size={50,20},proc=EventDone_Proc,title="Done" 
     
    216233        SetVariable setvar0,pos={208,149},size={160,16},proc=sliceSelectEvent_Proc,title="Display Time Slice" 
    217234        SetVariable setvar0,fSize=10 
    218         SetVariable setvar0,limits={0,1000,1},value= root:Packages:NIST:gEvent_tsdisp    
     235        SetVariable setvar0,limits={0,1000,1},value= root:Packages:NIST:Event:gEvent_tsdisp      
    219236        SetVariable setvar1,pos={206,26},size={160,16},title="Number of slices",fSize=10 
    220         SetVariable setvar1,limits={1,1000,1},value= root:Packages:NIST:gEvent_nslices 
     237        SetVariable setvar1,limits={1,1000,1},value= root:Packages:NIST:Event:gEvent_nslices 
    221238        SetVariable setvar2,pos={206,51},size={160,16},title="Max Time (s)",fSize=10 
    222         SetVariable setvar2,value= root:Packages:NIST:gEvent_t_longest 
     239        SetVariable setvar2,value= root:Packages:NIST:Event:gEvent_t_longest 
    223240         
    224241        PopupMenu popup0,pos={206,74},size={119,20},proc=BinTypePopMenuProc,title="Bin Spacing" 
     
    228245 
    229246        Button button10,pos={488,305},size={100,20},proc=SplitFileButtonProc,title="Split Big File" 
    230         Button button14,pos={488,350},size={130,20},proc=Stream_LoadDecim,title="Load From List" 
     247        Button button14,pos={488,350},size={120,20},proc=Stream_LoadDecim,title="Load Split List" 
     248        Button button19,pos={619,350},size={120,20},proc=Stream_LoadAdjustedList,title="Load Edited List" 
    231249        SetVariable setvar3,pos={487,378},size={150,16},title="Decimation factor" 
    232250        SetVariable setvar3,fSize=10 
     
    284302        Variable value 
    285303         
    286         NVAR gEventModeRadioVal= root:Packages:NIST:gEvent_mode 
     304        NVAR gEventModeRadioVal= root:Packages:NIST:Event:gEvent_mode 
    287305         
    288306        strswitch (name) 
     
    456474        String ctrlName 
    457475         
    458         NVAR mode=root:Packages:NIST:gEvent_Mode 
     476        NVAR mode=root:Packages:NIST:Event:gEvent_Mode 
    459477         
    460478        if(mode == MODE_STREAM) 
     
    472490         
    473491        // toggle the checkbox for log display to force the display to be correct 
    474         NVAR gLog = root:Packages:NIST:gEvent_logint 
     492        NVAR gLog = root:Packages:NIST:Event:gEvent_logint 
    475493        LogIntEvent_Proc("",gLog) 
    476494         
     
    491509// now with the number of slices and max time, process the events 
    492510 
    493         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    494         NVAR nslices = root:Packages:NIST:gEvent_nslices 
     511        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     512        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
    495513 
    496514        SetDataFolder root:Packages:NIST:Event          //don't count on the folder remaining here 
     
    620638// now with the number of slices and max time, process the events 
    621639 
    622         NVAR yesSortStream = root:Packages:NIST:gSortStreamEvents               //do I sort the events? 
    623         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    624         NVAR nslices = root:Packages:NIST:gEvent_nslices 
     640        NVAR yesSortStream = root:Packages:NIST:Event:gSortStreamEvents         //do I sort the events? 
     641        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     642        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
    625643 
    626644        SetDataFolder root:Packages:NIST:Event          //don't count on the folder remaining here 
     
    876894        String ctrlName 
    877895 
    878         NVAR mode=root:Packages:NIST:gEvent_mode 
     896        NVAR mode=root:Packages:NIST:Event:gEvent_mode 
    879897        Variable err=0 
    880898        Variable fileref,totBytes 
    881         Variable fileTooLarge = 150             //limit load to 150MB 
    882  
    883         SVAR filename = root:Packages:NIST:gEvent_logfile 
    884         NVAR nslices = root:Packages:NIST:gEvent_nslices 
    885         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     899        NVAR fileTooLarge = root:Packages:NIST:Event:gEventFileTooLarge         //limit load to 150MB 
     900 
     901        SVAR filename = root:Packages:NIST:Event:gEvent_logfile 
     902        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
     903        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    886904         
    887905        String fileFilters = "All Files:.*;Data Files (*.txt):.txt;" 
    888906        String abortStr 
     907         
     908        PathInfo catPathName 
     909        if(V_flag==0) 
     910                DoAlert 0,"Please 'Pick Path' to the data from the Main (yellow) Panel." 
     911                return(0) 
     912        endif 
     913         
    889914         
    890915        Open/R/D/P=catPathName/F=fileFilters fileref 
     
    968993//      Variable fileref 
    969994// 
    970 //      SVAR filename = root:Packages:NIST:gEvent_logfile 
    971 //      NVAR nslices = root:Packages:NIST:gEvent_nslices 
    972 //      NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     995//      SVAR filename = root:Packages:NIST:Event:gEvent_logfile 
     996//      NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
     997//      NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    973998//       
    974999//      String fileFilters = "All Files:.*;Data Files (*.txt):.txt;" 
     
    10141039//      Variable fileref 
    10151040// 
    1016 //      SVAR filename = root:Packages:NIST:gEvent_logfile 
    1017 //      NVAR nslices = root:Packages:NIST:gEvent_nslices 
    1018 //      NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     1041//      SVAR filename = root:Packages:NIST:Event:gEvent_logfile 
     1042//      NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
     1043//      NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    10191044//       
    10201045//      String fileFilters = "All Files:.*;Data Files (*.txt):.txt;" 
     
    10891114        endif 
    10901115 
    1091         NVAR selectedslice = root:Packages:NIST:gEvent_tsdisp 
     1116        NVAR selectedslice = root:Packages:NIST:Event:gEvent_tsdisp 
    10921117 
    10931118        sliceSelectEvent_Proc("", selectedslice, "", "") 
     
    11121137        String varName 
    11131138         
    1114         NVAR nslices = root:Packages:NIST:gEvent_nslices 
    1115         NVAR selectedslice = root:Packages:NIST:gEvent_tsdisp 
     1139        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
     1140        NVAR selectedslice = root:Packages:NIST:Event:gEvent_tsdisp 
    11161141         
    11171142        if(varNum < 0) 
     
    11661191Function LoadEvents() 
    11671192         
    1168         NVAR time_msw = root:Packages:NIST:gEvent_time_msw 
    1169         NVAR time_lsw = root:Packages:NIST:gEvent_time_lsw 
    1170         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    1171          
    1172         SVAR filepathstr = root:Packages:NIST:gEvent_logfile 
    1173         SVAR dispStr = root:Packages:NIST:gEventDisplayString 
     1193        NVAR time_msw = root:Packages:NIST:Event:gEvent_time_msw 
     1194        NVAR time_lsw = root:Packages:NIST:Event:gEvent_time_lsw 
     1195        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     1196         
     1197        SVAR filepathstr = root:Packages:NIST:Event:gEvent_logfile 
     1198        SVAR dispStr = root:Packages:NIST:Event:gEventDisplayString 
    11741199         
    11751200         
     
    13311356        roll_time = 2^26                //units of 10-7 sec 
    13321357         
    1333         NVAR removeBadEvents = root:Packages:NIST:gRemoveBadEvents 
     1358        NVAR removeBadEvents = root:Packages:NIST:Event:gRemoveBadEvents 
    13341359         
    13351360        time_msw=0 
     
    16571682#if (exists("EventLoadWave")==4) 
    16581683         
    1659 //      NVAR time_msw = root:Packages:NIST:gEvent_time_msw 
    1660 //      NVAR time_lsw = root:Packages:NIST:gEvent_time_lsw 
    1661         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    1662          
    1663         SVAR filepathstr = root:Packages:NIST:gEvent_logfile 
    1664         SVAR dispStr = root:Packages:NIST:gEventDisplayString 
     1684//      NVAR time_msw = root:Packages:NIST:Event:gEvent_time_msw 
     1685//      NVAR time_lsw = root:Packages:NIST:Event:gEvent_time_lsw 
     1686        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     1687         
     1688        SVAR filepathstr = root:Packages:NIST:Event:gEvent_logfile 
     1689        SVAR dispStr = root:Packages:NIST:Event:gEventDisplayString 
    16651690         
    16661691        SetDataFolder root:Packages:NIST:Event 
     
    17241749// 
    17251750 
    1726         NVAR removeBadEvents = root:Packages:NIST:gRemoveBadEvents 
     1751        NVAR removeBadEvents = root:Packages:NIST:Event:gRemoveBadEvents 
    17271752 
    17281753tic() 
     
    19381963        Make/O/D/N=(128,128) curSlice 
    19391964         
    1940         NVAR nslices = root:Packages:NIST:gEvent_nslices 
     1965        NVAR nslices = root:Packages:NIST:Event:gEvent_nslices 
    19411966        WAVE binEndTime = root:Packages:NIST:Event:binEndTime 
    19421967 
     
    22132238 
    22142239                        // updates the longest time (as does every operation of adjusting the data) 
    2215                         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     2240                        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    22162241                        t_longest = waveMax(rescaledTime) 
    22172242                         
     
    22482273 
    22492274                        // updates the longest time (as does every operation of adjusting the data) 
    2250                         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     2275                        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    22512276                        t_longest = waveMax(rescaledTime) 
    22522277                         
     
    22902315                         
    22912316                        // updates the longest time (as does every operation of adjusting the data) 
    2292                         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     2317                        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    22932318                        t_longest = waveMax(rescaledTime) 
    22942319                         
     
    23302355End 
    23312356 
     2357// 
    23322358// this duplicates all of the bits that would be done if the "load" button was pressed 
    2333 // 
    23342359// 
    23352360Function EC_ImportWavesButtonProc(ba) : ButtonControl 
     
    23412366                        SetDataFolder root:Packages:NIST:Event: 
    23422367 
    2343                         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    2344                         SVAR dispStr = root:Packages:NIST:gEventDisplayString 
     2368                        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     2369                        SVAR dispStr = root:Packages:NIST:Event:gEventDisplayString 
    23452370                        String tmpStr="",fileStr,filePathStr 
    23462371                         
     
    23542379                        endif 
    23552380                         
    2356                         NVAR mode = root:Packages:NIST:gEvent_Mode                              // ==0 for "stream", ==1 for Oscillatory 
     2381                        NVAR mode = root:Packages:NIST:Event:gEvent_Mode                                // ==0 for "stream", ==1 for Oscillatory 
    23572382                        // clear out the old sort index, if present, since new data is being loaded 
    23582383                        KillWaves/Z OscSortIndex 
    23592384                        Wave timePt=timePt 
    23602385                        Wave rescaledTime=rescaledTime 
    2361  
    2362 //                      Duplicate/O timePt rescaledTime 
    2363 //                      if(mode==MODE_STREAM) 
    2364 //                              rescaledTime = 1e-7*(timePt-timePt[0])          //convert to seconds and start from zero 
    2365 //                      else 
    2366 //                              rescaledTime = timePt*1e-7                                              //just take the times as-is 
    2367 //                      endif 
    23682386                         
    23692387                        t_longest = waveMax(rescaledTime)               //should be the last point 
     
    24432461        WaveStats/M=1/Q rescaledTime_DIF 
    24442462        avg = V_avg 
    2445          
    2446          
     2463                 
    24472464        FindLevel/P/Q rescaledTime_DIF avg*upDown 
    24482465        if(V_flag==0) 
     
    24882505        minVal = abs(V_min) 
    24892506 
    2490          
    24912507        pt = abs(maxVal - avg) > abs(minVal - avg) ? maxPt : minPt 
    24922508         
     
    25022518 
    25032519        SetDataFolder root: 
    2504  
    2505  
     2520         
    25062521        return(0) 
    25072522End 
     
    25102525        String ctrlName 
    25112526         
    2512         Variable upDown = -5 
    2513         PutCursorsAtStep(upDown) 
     2527//      Variable upDown = -5 
     2528        NVAR upDown = root:Packages:NIST:Event:gStepTolerance 
     2529         
     2530        PutCursorsAtStep(-1*upDown) 
    25142531 
    25152532        return(0) 
     
    25202537        String ctrlName 
    25212538         
    2522         Variable upDown = 5 
     2539//      Variable upDown = 5 
     2540        NVAR upDown = root:Packages:NIST:Event:gStepTolerance 
     2541 
    25232542        PutCursorsAtStep(upDown) 
    25242543 
     
    25782597Function Init_CustomBins() 
    25792598 
    2580         NVAR nSlice = root:Packages:NIST:gEvent_nslices 
    2581         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    2582  
    2583         Variable/G root:Packages:NIST:gEvent_ForceTmaxBin=1             //==1 to enforce t_longest in user-defined custom bins 
     2599        NVAR nSlice = root:Packages:NIST:Event:gEvent_nslices 
     2600        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     2601 
     2602        Variable/G root:Packages:NIST:Event:gEvent_ForceTmaxBin=1               //==1 to enforce t_longest in user-defined custom bins 
    25842603 
    25852604        SetDataFolder root:Packages:NIST:Event: 
     
    26172636        Button button2,pos={216,42},size={80,20},title="Update",proc=CB_UpdateWavesButton        
    26182637        SetVariable setvar1,pos={23,13},size={160,20},title="Number of slices",fSize=12 
    2619         SetVariable setvar1,proc=CB_NumSlicesSetVarProc,value=root:Packages:NIST:gEvent_nslices 
     2638        SetVariable setvar1,proc=CB_NumSlicesSetVarProc,value=root:Packages:NIST:Event:gEvent_nslices 
    26202639        SetVariable setvar2,pos={24,44},size={160,20},title="Max Time (s)",fSize=10 
    2621         SetVariable setvar2,value=root:Packages:NIST:gEvent_t_longest    
     2640        SetVariable setvar2,value=root:Packages:NIST:Event:gEvent_t_longest      
    26222641 
    26232642        CheckBox chkbox1,pos={216,14},title="Enforce Max Time?" 
    2624         CheckBox chkbox1,variable = root:Packages:NIST:gEvent_ForceTmaxBin 
     2643        CheckBox chkbox1,variable = root:Packages:NIST:Event:gEvent_ForceTmaxBin 
    26252644        Button button3,pos={500,14},size={90,20},proc=CB_SaveBinsButtonProc,title="Save Bins" 
    26262645        Button button4,pos={500,42},size={100,20},proc=CB_ImportBinsButtonProc,title="Import Bins"       
     
    26942713                case 2: // mouse up 
    26952714                        // click code here 
    2696                         NVAR nSlice = root:Packages:NIST:gEvent_nslices 
     2715                        NVAR nSlice = root:Packages:NIST:Event:gEvent_nslices 
    26972716 
    26982717                        SetDataFolder root:Packages:NIST:Event: 
     
    27372756                case 2: // mouse up 
    27382757                        // click code here 
    2739                         NVAR nSlice = root:Packages:NIST:gEvent_nslices 
    2740                         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
    2741                         NVAR enforceTmax = root:Packages:NIST:gEvent_ForceTmaxBin 
     2758                        NVAR nSlice = root:Packages:NIST:Event:gEvent_nslices 
     2759                        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     2760                        NVAR enforceTmax = root:Packages:NIST:Event:gEvent_ForceTmaxBin 
    27422761                         
    27432762                        // update the waves, and recalculate everything for the display 
     
    31193138        Wave rescaledTime_dTmp=rescaledTime_dTmp 
    31203139         
    3121         NVAR t_longest_dec = root:Packages:NIST:gEvent_t_longest_decimated 
    3122         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     3140        NVAR t_longest_dec = root:Packages:NIST:Event:gEvent_t_longest_decimated 
     3141        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    31233142         
    31243143         
     
    31923211        Wave rescaledTime_dec=rescaledTime_dec 
    31933212                 
    3194         NVAR t_longest_dec = root:Packages:NIST:gEvent_t_longest_decimated 
    3195         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     3213        NVAR t_longest_dec = root:Packages:NIST:Event:gEvent_t_longest_decimated 
     3214        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    31963215         
    31973216        Duplicate/O timePt_dec timePt 
     
    32223241        Wave xLoc=xLoc 
    32233242        Wave yLoc=yLoc 
    3224         NVAR t_longest_dec = root:Packages:NIST:gEvent_t_longest_decimated 
     3243        NVAR t_longest_dec = root:Packages:NIST:Event:gEvent_t_longest_decimated 
    32253244 
    32263245        NVAR decimation = root:Packages:NIST:Event:gDecimation 
     
    32443263End 
    32453264 
     3265 
     3266 
     3267 
     3268 
     3269 
     3270 
     3271// 
    32463272// loads a list of files, decimating each chunk as it is read in 
    32473273// 
     
    32513277        Variable fileref 
    32523278 
    3253         SVAR filename = root:Packages:NIST:gEvent_logfile 
    3254         NVAR t_longest = root:Packages:NIST:gEvent_t_longest 
     3279        SVAR filename = root:Packages:NIST:Event:gEvent_logfile 
     3280        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
    32553281 
    32563282        SVAR listStr = root:Packages:NIST:Event:gSplitFileList 
    3257         NVAR t_longest_dec = root:Packages:NIST:gEvent_t_longest_decimated 
     3283        NVAR t_longest_dec = root:Packages:NIST:Event:gEvent_t_longest_decimated 
    32583284        NVAR decimation = root:Packages:NIST:Event:gDecimation 
    32593285 
     
    32633289 
    32643290// if "stream" mode is not checked - abort 
    3265         NVAR gEventModeRadioVal= root:Packages:NIST:gEvent_mode 
     3291        NVAR gEventModeRadioVal= root:Packages:NIST:Event:gEvent_mode 
    32663292        if(gEventModeRadioVal != MODE_STREAM) 
    32673293                Abort "The mode must be 'Stream' to use this function" 
     
    32793305        endif 
    32803306         
    3281          
    32823307 
    32833308        //loop through everything in the list 
     
    33423367End 
    33433368 
     3369 
     3370 
     3371// 
     3372// loads a list of files that have been adjusted and saved 
     3373// -- does not decimate 
     3374// 
     3375Function Stream_LoadAdjustedList(ctrlName) 
     3376        String ctrlName 
     3377         
     3378        Variable fileref 
     3379 
     3380        SVAR filename = root:Packages:NIST:Event:gEvent_logfile 
     3381        NVAR t_longest = root:Packages:NIST:Event:gEvent_t_longest 
     3382 
     3383        SVAR listStr = root:Packages:NIST:Event:gSplitFileList 
     3384        NVAR t_longest_dec = root:Packages:NIST:Event:gEvent_t_longest_decimated 
     3385//      NVAR decimation = root:Packages:NIST:Event:gDecimation 
     3386 
     3387        String pathStr 
     3388        PathInfo catPathName 
     3389        pathStr = S_Path 
     3390 
     3391// if "stream" mode is not checked - abort 
     3392        NVAR gEventModeRadioVal= root:Packages:NIST:Event:gEvent_mode 
     3393        if(gEventModeRadioVal != MODE_STREAM) 
     3394                Abort "The mode must be 'Stream' to use this function" 
     3395                return(0) 
     3396        endif 
     3397 
     3398// if the list has been edited, turn it into a list 
     3399        WAVE/T/Z tw = root:Packages:NIST:Event:SplitFileWave 
     3400        if(WaveExists(tw)) 
     3401                listStr = TextWave2SemiList(tw) 
     3402        else 
     3403                ShowSplitFileTable() 
     3404                DoAlert 0,"Enter the file names in the table, then click 'Load From List' again." 
     3405                return(0) 
     3406        endif 
     3407         
     3408 
     3409        //loop through everything in the list 
     3410        Variable num,ii 
     3411        num = ItemsInList(listStr) 
     3412         
     3413        for(ii=0;ii<num;ii+=1) 
     3414 
     3415// (1) load the file, prepending the path                
     3416                filename = pathStr + StringFromList(ii, listStr  ,";") 
     3417                 
     3418                SetDataFolder root:Packages:NIST:Event: 
     3419                LoadWave/T/O fileName 
     3420 
     3421                SetDataFolder root:Packages:NIST:Event:                 //LoadEvents sets back to root: ?? 
     3422 
     3423// this is what is loaded -- _dec extension is what is concatenated, and will be copied back later 
     3424                Wave timePt=timePt 
     3425                Wave xLoc=xLoc 
     3426                Wave yLoc=yLoc 
     3427                Wave rescaledTime=rescaledTime 
     3428 
     3429//              CleanupTimes(xLoc,yLoc,timePt)          //remove zeroes 
     3430 
     3431//              Duplicate/O timePt rescaledTime 
     3432//              rescaledTime = 1e-7*(timePt-timePt[0])          //convert to seconds and start from zero 
     3433//              t_longest = waveMax(rescaledTime)               //should be the last point 
     3434                 
     3435// (2) No decimation 
     3436                 
     3437                Duplicate/O timePt, timePt_dTmp 
     3438                Duplicate/O xLoc, xLoc_dTmp 
     3439                Duplicate/O yLoc, yLoc_dTmp 
     3440                Duplicate/O rescaledTime, rescaledTime_dTmp 
     3441 
     3442 
     3443// (3) concatenate 
     3444                fConcatenateButton(ii+1)                //passes 1 for the first time, >1 each other time 
     3445         
     3446        endfor 
     3447         
     3448        DisplayConcatenatedButtonProc("")               // this resets the longest time, too 
     3449                 
     3450        SetDataFolder root: 
     3451 
     3452        return(0) 
     3453End 
     3454 
    33443455///////////////////////////////////// 
     3456 
     3457// dd-mon-yyyy hh:mm:ss -> Event file name 
     3458// the VAX uses 24 hr time for hh 
     3459// 
     3460// scans as string elements since I'm reconstructing a string name 
     3461Function/S DateAndTime2HSTName(dateandtime) 
     3462        string dateAndTime 
     3463         
     3464        String day,yr,hh,mm,ss,time_secs 
     3465        Variable mon 
     3466        string str,monStr,fileStr 
     3467         
     3468        str=dateandtime 
     3469        sscanf str,"%2s-%3s-%4s %2s:%2s:%2s",day,monStr,yr,hh,mm,ss 
     3470        mon = monStr2num(monStr) 
     3471 
     3472        fileStr = "Event"+yr+num2str(mon)+day+hh+mm+ss+".hst" 
     3473        Print fileStr 
     3474 
     3475        return(fileStr) 
     3476end 
     3477 
     3478// dd-mon-yyyy hh:mm:ss -> Event file name 
     3479// the VAX uses 24 hr time for hh 
     3480// 
     3481// scans as string elements since I'm reconstructing a string name 
     3482Function DateAndTime2HSTNumber(dateandtime) 
     3483        string dateAndTime 
     3484         
     3485        String day,yr,hh,mm,ss,time_secs 
     3486        Variable mon,num 
     3487        string str,monStr,fileStr 
     3488         
     3489        str=dateandtime 
     3490        sscanf str,"%2s-%3s-%4s %2s:%2s:%2s",day,monStr,yr,hh,mm,ss 
     3491        mon = monStr2num(monStr) 
     3492 
     3493        fileStr = yr+num2str(mon)+day+hh+mm+ss 
     3494        num = str2num(fileStr) 
     3495 
     3496        return(num) 
     3497end 
     3498 
     3499Function HSTName2Num(str) 
     3500        String str 
     3501         
     3502        Variable num 
     3503        sscanf str,"Event%d.hst",num 
     3504        return(num) 
     3505end 
     3506///////////////////////////// 
Note: See TracChangeset for help on using the changeset viewer.