Ignore:
Timestamp:
Jun 2, 2017 11:29:54 AM (6 years ago)
Author:
srkline
Message:

moved dead time correction to before the solid angle correction, so that the dead time would be correcting counts, not counts per solid angle

added a routine to kill all of the waves and folders possible, if the overall DF kill failed. This is to prevent stray folders and waves from being present if different data files are loaded - since different data blocks are present for say, 3He data, data with temperature logging, etc.
This kill routine is used every time, before raw data is loaded, DIV or MASK loaded, or data is converted to WORK.

changed the "Save I(q)" button on the data display panel to save as ITX format, since the data has not been processed, and data can more easily be used for trimming input.

picking protocols in dialogs now excludes/includes appropriate waves

menus are consolidated

Fixed bug in SANS macros where the DRK[] item in the protocol could be null, and force the read of a DRK file, even if it was not desired.

Location:
sans/Dev/trunk/NCNR_User_Procedures/Reduction
Files:
14 edited

Legend:

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

    r916 r1042  
    280280        if(cmpstr(item,"none") == 0) 
    281281                checked = 0 
    282                 String/G root:myGlobals:Protocols:gDRK = list 
     282                String/G root:myGlobals:Protocols:gDRK = "DRK=none,DRKMODE=0," 
    283283                CheckBox prot_check_6 win=ProtocolPanel,value=checked 
    284284        else 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_HDF5_VSANS_Utils.ipf

    r1023 r1042  
    6161// to be able to work with attributes - if needed. 
    6262// 
    63 Menu "VSANS" 
    64         SubMenu "Nexus File RW" 
    65 //              "Fill_Nexus_V_Template" 
    66 //              "Save_Nexus_V_Template" 
    67 //              "Load_Nexus_V_Template" 
    68 //              "-" 
    69 //              "IgorOnly_Setup_VSANS_Struct" 
    70 //              "IgorOnly_Save_VSANS_Nexus" 
    71 //              "IgorOnly_Setup_SANS_Struct" 
    72 //              "IgorOnly_Save_SANS_Struct" 
    73                 "Setup_VSANS_DIV_Struct" 
    74                 "Save_VSANS_DIV_Nexus" 
    75                 "Setup_VSANS_MASK_Struct" 
    76                 "Save_VSANS_MASK_Nexus" 
    77                 "-" 
    78                 "Read_Nexus with attributes",Read_Nexus_Xref()          //this will read with attributes 
    79                 "Write_Nexus with attributes",Write_Nexus_Xref()                                //this will write out with attributes if read in by Read_Nexus_Xref 
    80         End 
    81 End 
    82  
    83  
    84  
    85  
    86  
    87  
    88  
    89  
    90  
    91  
    92  
    93  
    9463 
    9564 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Combine_1D.ipf

    r1039 r1042  
    3535// x- "Done" button that kills the root:ToTrim folder (may need to kill the dependency first) 
    3636// 
    37 Macro V_CombineDataGraph() 
     37Proc V_CombineDataGraph() 
    3838 
    3939// this is the "initialization" step 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_DataPlotting.ipf

    r1039 r1042  
    872872         
    873873                ClearIQIfDisplayed_AllFldr("B",winNameStr) 
    874                 SetDataFolder $("root:Packages:NIST:VSANS:"+type)        
     874                SetDataFolder $(fullPathToFolder)                               // ClearIQIfDisplayed_AllFldr() resets to root: 
    875875                CheckDisplayed/W=$winNameStr iBin_qxqy_B 
    876876                 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_RW_Utils.ipf

    r1040 r1042  
    6161        Variable ii 
    6262         
     63        destPath = "root:Packages:NIST:VSANS:"+folder 
     64        // before reading in new data, clean out what old data can be cleaned. hopefully new data will overwrite what is in use 
     65        V_KillWavesFullTree($destPath,folder,0,"",1)                    // this will traverse the whole tree, trying to kill what it can 
     66 
     67        if(DataFolderExists("root:Packages:NIST:VSANS:"+folder) == 0)           //if it was just killed? 
     68                NewDataFolder/O $("root:Packages:NIST:VSANS:"+folder) 
     69        endif 
    6370        SetDataFolder $("root:Packages:NIST:VSANS:"+folder) 
    64         destPath = "root:Packages:NIST:VSANS:"+folder 
    6571 
    6672        Variable err= V_LoadHDF5_NoAtt(file,folder)     // reads into current folder 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Read.ipf

    r1040 r1042  
    3333//end 
    3434 
    35 Macro Dump_V_getFP(fname) 
     35Proc Dump_V_getFP(fname) 
    3636        String fname 
    3737         
     
    6060end 
    6161 
    62 Macro Dump_V_getFP_Det(fname,detStr) 
     62Proc Dump_V_getFP_Det(fname,detStr) 
    6363        String fname,detStr="FL" 
    6464         
     
    8888 
    8989 
    90 Macro Dump_V_getSTR(fname) 
     90Proc Dump_V_getSTR(fname) 
    9191        String fname 
    9292         
     
    119119end 
    120120 
    121 Macro Dump_V_getSTR_Det(fname,detStr) 
     121Proc Dump_V_getSTR_Det(fname,detStr) 
    122122        String fname,detStr="FL" 
    123123         
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_IQ_Utilities.ipf

    r1039 r1042  
    814814// -- but a real writer will need to be aware of resolution, and there may be different forms 
    815815// 
     816// This saves the data in Igor Text format, an ASCII format, but NOT standard SANS columns 
     817// No concatenation is done. This is meant to be used for input to TRIM, or for general troubleshooting 
     818// 
     819// 
    816820// this will bypass save dialogs 
    817821// -- AND WILL OVERWRITE DATA WITH THE SAME NAME 
    818822// 
    819 Function V_Write1DData_NoConcat(pathStr,folderStr,saveName,binType) 
     823Function V_Write1DData_ITX(pathStr,folderStr,saveName,binType) 
    820824        String pathStr,folderStr,saveName 
    821825        Variable binType 
     
    985989 
    986990 
    987 Macro V_Load_Data_ITX() 
     991Proc V_Load_Data_ITX() 
    988992        V_Load_itx("","",0,0) 
    989993end 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MainPanel.ipf

    r1041 r1042  
    294294        if(exists("Show_Event_Panel")==0) 
    295295                // procedure file was not loaded 
    296                 DoAlert 0,"This operation is not available in this set of macros" 
     296                DoAlert 0,"Only test procedures exist. See V_VSANS_Event_Testing.ipf" 
    297297        else 
    298298                Show_Event_Panel() 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Menu.ipf

    r1025 r1042  
    3232                "Load Fake MASK Data" 
    3333                "Correct Data",V_CorrectData() 
     34        End 
     35        SubMenu "Nexus File RW" 
     36//              "Fill_Nexus_V_Template" 
     37//              "Save_Nexus_V_Template" 
     38//              "Load_Nexus_V_Template" 
     39//              "-" 
     40//              "IgorOnly_Setup_VSANS_Struct" 
     41//              "IgorOnly_Save_VSANS_Nexus" 
     42//              "IgorOnly_Setup_SANS_Struct" 
     43//              "IgorOnly_Save_SANS_Struct" 
     44                "Setup_VSANS_DIV_Struct" 
     45                "Save_VSANS_DIV_Nexus" 
     46                "Setup_VSANS_MASK_Struct" 
     47                "Save_VSANS_MASK_Nexus" 
     48                "-" 
     49                "Read_Nexus with attributes",Read_Nexus_Xref()          //this will read with attributes 
     50                "Write_Nexus with attributes",Write_Nexus_Xref()                                //this will write out with attributes if read in by Read_Nexus_Xref 
     51                "-" 
     52                "Dump_V_getFP" 
     53                "Dump_V_getFP_Det" 
     54                "Dump_V_getSTR" 
     55                "Dump_V_getSTR_Det" 
    3456        End 
    3557         
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MultipleReduce.ipf

    r1040 r1042  
    292292        list = RemoveFromList("tempProtocol", list, ";") 
    293293        list = RemoveFromList("fakeProtocol", list, ";") 
     294        list = RemoveFromList("PanelNameW", list, ";") 
     295        list = RemoveFromList("Beg_pts", list, ";") 
     296        list = RemoveFromList("End_pts", list, ";") 
     297        list = RemoveFromList("trimUpdate", list, ";") 
    294298         
    295299        String/G root:Packages:NIST:VSANS:Globals:MRED:gMRProtoList = list 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Protocol_Reduction.ipf

    r1041 r1042  
    14641464Proc V_PickAProtocol(protocol) 
    14651465        String Protocol 
    1466         Prompt Protocol "Pick A Protocol",popup, WaveList("*",";","TEXT:1,MAXROWS:13") 
     1466        Prompt Protocol "Pick A Protocol",popup, V_RecallableProtocols() 
    14671467         
    14681468        String/G  root:Packages:NIST:VSANS:Globals:Protocols:gProtoStr = protocol 
     
    14841484        list= RemoveFromList("CreateNew", list  , ";") 
    14851485        list= RemoveFromList("tempProtocol", list  , ";") 
     1486        list= RemoveFromList("wTTmpWrite", list  , ";") 
    14861487        if(cmpstr(list,"")==0) 
    14871488                list = "_no_protocols_;" 
     
    14901491        return(list) 
    14911492End 
     1493 
     1494Function/S V_RecallableProtocols() 
     1495        String list=WaveList("*",";","TEXT:1,MAXROWS:13") 
     1496 
     1497//      list= RemoveFromList("Base", list  , ";") 
     1498//      list= RemoveFromList("DoAll", list  , ";") 
     1499        list= RemoveFromList("CreateNew", list  , ";") 
     1500        list= RemoveFromList("tempProtocol", list  , ";") 
     1501        list= RemoveFromList("wTTmpWrite", list  , ";") 
     1502        if(cmpstr(list,"")==0) 
     1503                list = "_no_protocols_;" 
     1504        endif 
     1505         
     1506        return(list) 
     1507End 
     1508 
    14921509 
    14931510//missing parameter dialog to solicit user for a waveStr for the protocol  
     
    25072524                                        // does not trim any of the data 
    25082525                                        V_RemoveQ0_B(activeType) 
    2509                                         V_Write1DData_NoConcat("root:Packages:NIST:VSANS:",activeType,newFileName,binType) 
     2526                                        V_Write1DData_ITX("root:Packages:NIST:VSANS:",activeType,newFileName,binType) 
    25102527                                endif 
    25112528 
     
    27722789        String Protocol="" 
    27732790        SetDataFolder root:Packages:NIST:VSANS:Globals:Protocols 
    2774         Prompt Protocol "Pick A Protocol",popup, WaveList("*",";","") 
     2791        Prompt Protocol "Pick A Protocol",popup, V_DeletableProtocols() 
    27752792        DoPrompt "Pick A Protocol to Export",Protocol 
    27762793        if(V_flag==1) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Test_RAW_Panel.ipf

    r1041 r1042  
    999999                        // click code here 
    10001000 
    1001                         V_SimpleSave1DData("root:Packages:NIST:VSANS:","","","")                 
    1002                                  
     1001//                      V_SimpleSave1DData("root:Packages:NIST:VSANS:","","","")         
     1002 
     1003// this is the same as clicking the I(q) button. Ensures that the current file has been averaged,  
     1004// and the data being saved is not "stale" 
     1005 
     1006                        V_PlotData_Panel()              //-9999 requests a read from the popup on the panel 
     1007                        Variable binType = V_GetBinningPopMode() 
     1008                        V_BinningModePopup("",binType,"")               // does default circular binning and updates the graph 
     1009         
     1010                        SVAR type = root:Packages:NIST:VSANS:Globals:gCurDispType               //what folder 
     1011 
     1012                        // look for the binning type 
     1013//                      Variable binType 
     1014//                      ControlInfo/W=V_1D_Data popup0 
     1015//                      binType = (V_flag == 0) ? 1 : V_flag            // if binType not defined, set binType == 1 
     1016 
     1017                        String saveName="" 
     1018                // write out the data set to a file 
     1019                        if(strlen(saveName)==0) 
     1020                                Execute "V_GetNameForSave()" 
     1021                                SVAR newName = root:saveName 
     1022                                saveName = newName 
     1023                        endif 
     1024                         
     1025                        V_Write1DData_ITX("root:Packages:NIST:VSANS:",type,saveName,binType) 
     1026         
     1027                        Print "Saved file: "    +       saveName + ".itx"        
    10031028                        break 
    10041029                case -1: // control being killed 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_VSANS_Event_Testing.ipf

    r1041 r1042  
    4444// -- not sure how this will work with JointHistogram Operation 
    4545// (split to separate "streams" of values for each detector panel? 
     46// 
     47// 
     48// -- can I efficiently use "sort" (on the tube index) to block the data into groups that can be split 
     49//  into 4 sets of waves 
     50//  that can then be binned per panel, using the usual Joint histogram procedures? Works only if the  
     51// tube indexing is orderly. if it's a mess, Ill need to try something else (indexed sort?) (replace?) 
     52// (manually? ugh.) 
    4653// 
    4754 
     
    163170End 
    164171 
    165  
     172/ 
     173// tested up to num=1e8 successfully 
     174// 
    166175Function V_MakeFakeEventWave() 
    167176 
    168177        Variable num,ii 
    169178 
    170         num = 1000 
     179 
     180        num = 1e3 
    171181         
    172182//      // /l=64 bit, /U=unsigned 
     
    184194        i64_start = ticks 
    185195        for(ii=0;ii<num;ii+=1) 
    186                 sleep/T 6                       // 6 ticks, approx 0.1 s (without the delay, the loop is too fast) 
     196//              sleep/T/C=-1 1                  // 6 ticks, approx 0.1 s (without the delay, the loop is too fast) 
    187197                b1 = trunc(abs(enoise(192)))            //since truncated, need 192 as highest random to give 191 after trunc 
    188198                b2 = trunc(abs(enoise(128)))            // same here, to get results [0,127] 
    189199                 
    190                 i64_ticks = ticks-i64_start 
     200//              i64_ticks = ticks-i64_start 
     201                i64_ticks = ii+1 
    191202                 
    192203                b2 = b2 << 48 
     
    196207                eventWave[ii] = i64_num 
    197208        endfor 
    198          
    199         return(0) 
    200 End 
    201  
    202  
    203 Function V_decodeFakeEventWave() 
    204  
    205         WAVE w = eventWave 
     209 
     210 
     211        return(0) 
     212End 
     213 
     214 
     215Function V_decodeFakeEventWave(w) 
     216        Wave w 
     217 
     218s_tic() 
     219//      WAVE w = eventWave 
    206220        uint64 val,b1,b2,btime 
    207221        val = w[0] 
     
    231245                 
    232246        endfor 
     247 
     248s_toc() 
    233249                 
    234250        return(0) 
     
    286302//      GBLoadWave/B/T={192,192}/W=1/S=22 
    287303        Variable num,refnum 
     304         
    288305 
    289306// so to read: 
     
    308325        vsansStr = PadString(vsansStr,5,0x20)           //pad to 5 bytes 
    309326        detStr = PadString(detStr,1,0x20)                               //pad to 1 byte 
     327 
    310328        Open/R refnum  
    311329        fname = S_fileName 
     330 
     331s_tic() 
    312332 
    313333        FBinRead refnum, vsansStr 
     
    333353        GBLoadWave/B/T={192,192}/W=1/S=22 fname 
    334354         
    335          
    336         return(0) 
    337 End 
     355s_toc()  
     356         
     357        return(0) 
     358End 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_WorkFolderUtils.ipf

    r1041 r1042  
    100100                return(0) 
    101101        else 
     102         
     103                V_KillWavesFullTree($fromDF,fromStr,0,"",1)                     // this will traverse the whole tree, trying to kill what it can 
     104                 
    102105                // need to do this the hard way, duplicate/O recursively 
    103106                // see V_CopyToWorkFolder() 
     
    113116                // sample 
    114117                V_DuplicateDataFolder($(fromDF+":entry:sample"),fromStr,toStr,0,"",1)   //yes recursion here 
    115  
     118                // user 
     119                V_DuplicateDataFolder($(fromDF+":entry:user"),fromStr,toStr,0,"",1)     //yes recursion here 
     120                 
    116121        endif    
    117122         
     
    119124end 
    120125 
     126 
     127 
     128Function V_KillWavesInFolder(folderStr) 
     129        String folderStr 
     130         
     131        if(DataFolderExists(folderStr) && strlen(folderStr) != 0) 
     132                SetDataFolder $folderStr 
     133                KillWaves/A/Z 
     134        endif 
     135         
     136        SetDataFolder root: 
     137        return(0) 
     138end 
    121139 
    122140//////// 
     
    234252 
    235253End 
    236   
     254 
     255 
     256// ListDataFolder(dfr, level) 
     257// Recursively lists objects in data folder. 
     258// Pass data folder path for dfr and 0 for level. 
     259// pass level == 0 for the first call 
     260//  sNBName = "" prints nothing. any name will generate a notebook 
     261// 
     262// recurse == 0 will do only the specified folder, anything else will recurse all levels 
     263// toStr is the string name of the top-level folder only, not the full path 
     264// 
     265// 
     266Function V_KillWavesFullTree(dfr, fromStr, level, sNBName,recurse) 
     267        DFREF dfr 
     268        String fromStr 
     269//      String toStr 
     270        Variable level                  // Pass 0 to start 
     271        String sNBName 
     272        Variable recurse 
     273  
     274        String name 
     275        String dfName 
     276        String sString 
     277         
     278        String toDF = "" 
     279  
     280        if (level == 0)         // this is the data folder, generate if needed in the destination 
     281                name = GetDataFolder(1, dfr) 
     282                sPrintf sString, "%s (data folder)\r", name 
     283//              toDF = ReplaceString(fromStr,name,toStr,1)              // case-sensitive replace 
     284//              sprintf sString, "NewDataFolder/O %s\r",toDF 
     285//              NewDataFolder/O $(RemoveEnding(toDF,":"))                       // remove trailing semicolon if it's there 
     286                 
     287                V_WriteBrowserInfo_test(sString, 1, sNBName) 
     288        endif 
     289  
     290        dfName = GetDataFolder(1, dfr) 
     291//      toDF = ReplaceString(fromStr,dfName,toStr,1)            // case-sensitive replace 
     292        Variable i 
     293  
     294        String indentStr = "\t" 
     295        for(i=0; i<level; i+=1) 
     296                indentStr += "\t" 
     297        endfor 
     298  
     299        Variable numWaves = CountObjectsDFR(dfr, 1) 
     300        for(i=0; i<numWaves; i+=1) 
     301                name = GetIndexedObjNameDFR(dfr, 1, i) 
     302                // 
     303                // wave type does not matter now. Kill does not care 
     304                // 
     305                sPrintf sString, "Killing  %s\r",dfName+name 
     306                KillWaves/Z $(dfName+name) 
     307                 
     308                V_WriteBrowserInfo_test(sString, 2, sNBName) 
     309        endfor   
     310  
     311 // now kill the data folder if possible 
     312        KillDataFolder/Z $dfName 
     313         
     314         
     315        Variable numNumericVariables = CountObjectsDFR(dfr, 2)   
     316        for(i=0; i<numNumericVariables; i+=1) 
     317                name = GetIndexedObjNameDFR(dfr, 2, i) 
     318                sPrintf sString, "%s%s (numeric variable)\r", indentStr, name 
     319                V_WriteBrowserInfo_test(sString, 3, sNBName) 
     320        endfor   
     321  
     322        Variable numStringVariables = CountObjectsDFR(dfr, 3)    
     323        for(i=0; i<numStringVariables; i+=1) 
     324                name = GetIndexedObjNameDFR(dfr, 3, i) 
     325                sPrintf sString, "%s%s (string variable)\r", indentStr, name 
     326                V_WriteBrowserInfo_test(sString, 4, sNBName) 
     327        endfor   
     328 
     329        if(recurse)  
     330                Variable numDataFolders = CountObjectsDFR(dfr, 4)        
     331                for(i=0; i<numDataFolders; i+=1) 
     332                        name = GetIndexedObjNameDFR(dfr, 4, i) 
     333                        sPrintf sString, "%s%s (data folder)\r", indentStr, name 
     334                         dfName = GetDataFolder(1, dfr) 
     335                          
     336//                      toDF = ReplaceString(fromStr,dfName,toStr,1)            // case-sensitive replace 
     337//                      sprintf sString, "NewDataFolder/O %s\r",toDF+name 
     338//                      NewDataFolder/O $(toDF+name) 
     339                         
     340                         
     341                        V_WriteBrowserInfo_test(sString, 1, sNBName) 
     342                        DFREF childDFR = dfr:$(name) 
     343                        V_KillWavesFullTree(childDFR, fromStr, level+1, sNBName, recurse) 
     344                endfor   
     345        endif 
     346          
     347 
     348End 
     349  
     350 
     351 
    237352Function V_WriteBrowserInfo_test(sString, vType, sNBName) 
    238353        String sString 
     
    462577        endif 
    463578 
    464         // (3) solid angle correction 
     579 
     580        // (3) dead time correction 
     581        // TODO: 
     582        // x- remove the hard-wired test - done 
     583        // -- test for correct operation 
     584        // x- loop over all of the detectors 
     585        // x- B detector is a special case (do separately, then loop over NoB) 
     586        // -- this DOES alter the data 
     587        // -- verify the error propagation (not done yet) 
     588        // 
     589        Variable countRate 
     590        NVAR gDoDeadTimeCor = root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor 
     591        if (gDoDeadTimeCor == 1) 
     592                Print "Doing DeadTime correction"// for "+ detStr 
     593                for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     594                        detStr = StringFromList(ii, ksDetectorListAll, ";") 
     595                        Wave w = V_getDetectorDataW(fname,detStr) 
     596                        Wave w_err = V_getDetectorDataErrW(fname,detStr) 
     597                        ctTime = V_getCount_time(fname) 
     598 
     599                        if(cmpstr(detStr,"B") == 0) 
     600                                Variable b_dt = V_getDetector_deadtime_B(fname,detStr) 
     601                                // do the correction for the back panel 
     602                                countRate = sum(w,-inf,inf)/ctTime              //use sum of detector counts 
     603 
     604                                w = w/(1-countRate*b_dt) 
     605                                w_err = w_err/(1-countRate*b_dt) 
     606                                                                 
     607                        else 
     608                                // do the corrections for 8 tube panels 
     609                                Wave w_dt = V_getDetector_deadtime(fname,detStr) 
     610                                V_DeadTimeCorrectionTubes(w,w_err,w_dt,ctTime) 
     611                                 
     612                        endif 
     613                endfor 
     614                 
     615        else 
     616                Print "Dead Time correction NOT DONE" 
     617        endif    
     618         
     619 
     620        // (4) solid angle correction 
    465621        // TODO -- this currently calculates the correction factor AND applys it to the data 
    466622        //  -- as a result, the data values are very large since they are divided by a very small 
     
    485641        endif    
    486642         
    487         // (4) dead time correction 
    488         // TODO: 
    489         // x- remove the hard-wired test - done 
    490         // -- test for correct operation 
    491         // x- loop over all of the detectors 
    492         // x- B detector is a special case (do separately, then loop over NoB) 
    493         // -- this DOES alter the data 
    494         // -- verify the error propagation (not done yet) 
    495         // 
    496         Variable countRate 
    497         NVAR gDoDeadTimeCor = root:Packages:NIST:VSANS:Globals:gDoDeadTimeCor 
    498         if (gDoDeadTimeCor == 1) 
    499                 Print "Doing DeadTime correction"// for "+ detStr 
    500                 for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
    501                         detStr = StringFromList(ii, ksDetectorListAll, ";") 
    502                         Wave w = V_getDetectorDataW(fname,detStr) 
    503                         Wave w_err = V_getDetectorDataErrW(fname,detStr) 
    504                         ctTime = V_getCount_time(fname) 
    505  
    506                         if(cmpstr(detStr,"B") == 0) 
    507                                 Variable b_dt = V_getDetector_deadtime_B(fname,detStr) 
    508                                 // do the correction for the back panel 
    509                                 countRate = sum(w,-inf,inf)/ctTime              //use sum of detector counts 
    510  
    511                                 w = w/(1-countRate*b_dt) 
    512                                 w_err = w_err/(1-countRate*b_dt) 
    513                                                                  
    514                         else 
    515                                 // do the corrections for 8 tube panels 
    516                                 Wave w_dt = V_getDetector_deadtime(fname,detStr) 
    517                                 V_DeadTimeCorrectionTubes(w,w_err,w_dt,ctTime) 
    518                                  
    519                         endif 
    520                 endfor 
    521                  
    522         else 
    523                 Print "Dead Time correction NOT DONE" 
    524         endif    
    525          
    526          
     643                 
    527644        // (5) angle-dependent tube shadowing 
    528645        // TODO: 
Note: See TracChangeset for help on using the changeset viewer.