Changeset 983 for sans/Dev


Ignore:
Timestamp:
Mar 7, 2016 11:55:46 AM (7 years ago)
Author:
srkline
Message:

CHANGES to SANS:
Now allow 4 files to be combined in one step. This required modification of one routine in NIST_XML to allow an extra file name, and significant addition to the NSORT panel to allow an (optional) 4th data file. behaviors are still the same as before with 2, 3, or 4 sets being allowed. The "combine table" also allows up to 4 files to be combined (can be mixed, 2, 3, 4 all allowed).

More addtions to VSANS present as well, not specific changes, but in-progress changes to the beam center handling and ciombining data to 1D.

Location:
sans/Dev/trunk/NCNR_User_Procedures
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Common/NIST_XML_v40.ipf

    r971 r983  
    825825End 
    826826 
    827 Function WriteNSORTedXMLFile(qw,iw,sw,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,[res]) 
     827Function WriteNSORTedXMLFile(qw,iw,sw,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34,[res]) 
    828828        Wave qw,iw,sw,res 
    829         String firstFileName,secondFileName,thirdFileName,normTo 
    830         Variable norm12,norm23 
     829        String firstFileName,secondFileName,thirdFileName,fourthFileName,normTo 
     830        Variable norm12,norm23,norm34 
    831831 
    832832        Variable err=0,refNum,numCols,dialog=1 
     
    904904         
    905905        nf.sasProcessNote = "COMBINED FILE CREATED: "+date()+"\n" 
    906         nf.sasProcessNote += "NSORT-ed : " +firstFileName+";"+secondFileName+";"+thirdFileName+"\n" 
     906        nf.sasProcessNote += "NSORT-ed : " +firstFileName+";"+secondFileName+";"+thirdFileName+";"+fourthFileName+"\n" 
    907907        nf.sasProcessNote += "normalized to  "+normTo+"\n" 
    908         fprintf refNum, "multiplicative factor 1-2 = "+num2str(norm12)+" multiplicative factor 2-3 = "+num2str(norm23)+"\n" 
     908        fprintf refNum, "multiplicative factor 1-2 = "+num2str(norm12)+" multiplicative factor 2-3 = "+num2str(norm23)+" multiplicative factor 3-4 = "+num2str(norm34)+"\n" 
    909909 
    910910        if (numCols == 3) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/NSORT.ipf

    r902 r983  
    88// NSORT panel for combining and inter-normalizing 2 or 3 datasets 
    99// that have previously been averaged 
     10// 
     11// MAR 2016 SRK added functionality to combine 4 datasets 
    1012// 
    1113// - handles 3 or 6-column datasets 
     
    3638        MedQPopMenuProc("",1,"") 
    3739        HighQPopMenuProc("",1,"") 
     40        HighestQPopMenuProc("",1,"") 
    3841End 
    3942 
     
    4851        Variable/G root:myGlobals:NSORT:gScale1_2 = 1 
    4952        Variable/G root:myGlobals:NSORT:gScale2_3 = 1 
     53        Variable/G root:myGlobals:NSORT:gScale3_4 = 1 
    5054        // 
    5155        //save the number of points to trim from beginning/end of the data files 
     
    5761        Variable/G root:myGlobals:NSORT:gPtsBeg3 = NumVarOrDefault("root:myGlobals:NSORT:gPtsBeg3", 0 ) 
    5862        Variable/G root:myGlobals:NSORT:gPtsEnd3 = NumVarOrDefault("root:myGlobals:NSORT:gPtsEnd3", 0 ) 
     63        Variable/G root:myGlobals:NSORT:gPtsBeg4 = NumVarOrDefault("root:myGlobals:NSORT:gPtsBeg4", 0 ) 
     64        Variable/G root:myGlobals:NSORT:gPtsEnd4 = NumVarOrDefault("root:myGlobals:NSORT:gPtsEnd4", 0 ) 
    5965         
    6066        Variable/G root:myGlobals:NSORT:gColumns1 = 0 
    6167        Variable/G root:myGlobals:NSORT:gColumns2 = 0 
    6268        Variable/G root:myGlobals:NSORT:gColumns3 = 0 
     69        Variable/G root:myGlobals:NSORT:gColumns4 = 0 
    6370        Variable/G root:myGlobals:NSORT:gNormToNum = 1 
    6471        String/G root:myGlobals:NSORT:gPathStr = "" 
     
    7380Function LoadDataForNSORT(fileStr,setNum) 
    7481        String fileStr          //full path:name to a valid file 
    75         Variable setNum //number of set (used for naming) = 0, 1, or 2 (ONLY) 
     82        Variable setNum //number of set (used for naming) = 0, 1, or 2 (ONLY), (2016) 3 is now valid for 4th data set 
    7683         
    7784        Variable err=0 
     
    8491        NVAR gColumns2 = root:myGlobals:NSORT:gColumns2 
    8592        NVAR gColumns3 = root:myGlobals:NSORT:gColumns3 
     93        NVAR gColumns4 = root:myGlobals:NSORT:gColumns4 
    8694        NVAR begPts1 = root:myGlobals:NSORT:gPtsBeg1 
    8795        NVAR endPts1 = root:myGlobals:NSORT:gPtsEnd1 
     
    9098        NVAR begPts3 = root:myGlobals:NSORT:gPtsBeg3 
    9199        NVAR endPts3 = root:myGlobals:NSORT:gPtsEnd3 
    92  
     100        NVAR begPts4 = root:myGlobals:NSORT:gPtsBeg4 
     101        NVAR endPts4 = root:myGlobals:NSORT:gPtsEnd4 
     102         
    93103        String cmd 
    94104        String typStr= "", trimStr="" 
     
    118128                        begPts = begPts3 
    119129                        endPts = endPts3 
     130                        break 
     131                case 4: 
     132                        sprintf cmd , "A_LoadOneDDataToName(\"%s\",\"%s\",%d,%d)",fileStr,"HighestQSet",0,1 
     133                        Execute cmd 
     134                        typStr = "HighestQSet" 
     135                        trimStr = "TrimHighestQSet" 
     136                        begPts = begPts4 
     137                        endPts = endPts4 
    120138                        break 
    121139        endswitch 
     
    168186                        gColumns3 = numCols 
    169187                        break 
     188                case 4: 
     189                        gColumns4 = numCols 
     190                        break 
    170191        endswitch 
    171192         
     
    174195End 
    175196 
    176 Function WriteNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,[res]) 
     197Function WriteNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34,[res]) 
    177198        Wave q3,i3,sig3,res 
    178         String firstFileName,secondFileName,thirdFileName,normTo 
    179         Variable norm12,norm23 
     199        String firstFileName,secondFileName,thirdFileName,fourthfileName,normTo 
     200        Variable norm12,norm23,norm34 
    180201 
    181202        NVAR useXMLOutput = root:Packages:NIST:gXML_Write 
     
    183204        if (useXMLOutput == 1) 
    184205                if(WaveExists(res)) 
    185                         WriteNSORTedXMLFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,res=res) 
     206                        WriteNSORTedXMLFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34,res=res) 
    186207                else 
    187                         WriteNSORTedXMLFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23) 
     208                        WriteNSORTedXMLFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34) 
    188209                endif 
    189210        else 
    190211                if(WaveExists(res)) 
    191                         WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,res=res) 
     212                        WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34,res=res) 
    192213                else 
    193                         WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23) 
     214                        WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34) 
    194215                endif            
    195216        endif 
     
    198219 
    199220 
    200 Function WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,[res]) 
     221Function WriteOLDNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,fourthFileName,normTo,norm12,norm23,norm34,[res]) 
    201222        Wave q3,i3,sig3,res 
    202         String firstFileName,secondFileName,thirdFileName,normTo 
    203         Variable norm12,norm23 
     223        String firstFileName,secondFileName,thirdFileName,fourthFileName,normTo 
     224        Variable norm12,norm23,norm34 
    204225 
    205226        Variable err=0,refNum,numCols,dialog=1 
     
    287308//      fprintf refnum, "THIRD File %s",hdr3            //new, Mar 2008 
    288309         
    289         fprintf refNum, "NSORT-ed   %s \t  +  %s\t  + %s\r\n",firstFileName, secondFileName,thirdFileName 
     310        fprintf refNum, "NSORT-ed   %s\t  +  %s\t  +  %s\t + %s\r\n",firstFileName, secondFileName,thirdFileName,fourthFileName 
    290311        fprintf refNum, "normalized to   %s\r\n",normTo 
    291         fprintf refNum, "multiplicative factor 1-2 = %12.8g\t multiplicative factor 2-3 = %12.8g\r\n",norm12,norm23 
     312        fprintf refNum, "multiplicative factor 1-2 = %12.8g\t multiplicative factor 2-3 = %12.8g\t multiplicative factor 3-4 = %12.8g\r\n",norm12,norm23,norm34 
    292313 
    293314        if (numCols == 3) 
     
    376397        KillDataFolder/Z MedQSet 
    377398        KillDataFolder/Z HighQSet 
     399        KillDataFolder/Z HighestQSet 
    378400 
    379401End 
     
    393415        Variable setNum,err 
    394416        //switch on ctrlName string - Plot_1, Plot_2, Plot_3 
    395         if(cmpstr(ctrlName,"Plot_1")==0) 
    396                 //low-q 
    397                 setNum = 1 
    398                 ControlInfo/W=NSORT_Panel popup_1 
    399         else 
    400                 if(cmpstr(ctrlName,"Plot_2")==0) 
     417         
     418        strswitch(ctrlName)     // string switch 
     419                case "Plot_1":           
     420                        //low-q 
     421                        setNum = 1 
     422                        ControlInfo/W=NSORT_Panel popup_1 
     423                        break 
     424                case "Plot_2":           
    401425                        //medium-q 
    402426                        setNum = 2 
    403427                        ControlInfo/W=NSORT_Panel popup_2 
    404                 else 
     428                        break 
     429                case "Plot_3":           
    405430                        //high-q 
    406431                        setNum = 3 
    407432                        ControlInfo/W=NSORT_Panel popup_3 
    408                 Endif 
    409         Endif 
    410          
     433                        break 
     434                case "Plot_4":           
     435                        //highest-q 
     436                        setNum = 4 
     437                        ControlInfo/W=NSORT_Panel popup_4 
     438                        break 
     439        endswitch 
     440         
     441 
    411442        //find the file from the partial filename 
    412443        If( (cmpstr(S_value,"")==0) || (cmpstr(S_value,"none")==0) ) 
     
    439470        if(WinType("NSORT_Graph")==0) 
    440471                //no window, create one 
    441                 if(cmpstr(ctrlName,"Plot_1")==0) 
    442                         //low-q 
    443                         Display/K=1 
    444                         DoWindow/C NSORT_Graph 
    445                         DisplayLowSet() 
    446                 else 
    447                         if(cmpstr(ctrlName,"Plot_2")==0) 
     472                strswitch(ctrlName)     // string switch 
     473                        case "Plot_1":           
     474                                //low-q 
     475                                Display/K=1 
     476                                DoWindow/C NSORT_Graph 
     477                                DisplayLowSet() 
     478                                break 
     479                        case "Plot_2":           
    448480                                //medium-q 
    449481                                Display/K=1 
    450482                                DoWindow/C NSORT_Graph 
    451483                                DisplayMedSet() 
    452                         else 
     484                                break 
     485                        case "Plot_3":           
    453486                                //high-q 
    454487                                Display/K=1 
    455488                                DoWindow/C NSORT_Graph 
    456489                                DisplayHighSet() 
    457                         Endif 
    458                 Endif 
     490                                break 
     491                        case "Plot_4":           
     492                                //highest-q 
     493                                Display/K=1 
     494                                DoWindow/C NSORT_Graph 
     495                                DisplayHighestSet() 
     496                                break 
     497                endswitch 
    459498                Legend 
    460499        else 
     
    463502                list = TraceNameList("NSORT_Graph",";",1) 
    464503         
    465                 if(cmpstr(ctrlName,"Plot_1")==0) 
    466                         //low-q 
    467                         isOnPlot = strsearch(list, "LowQSet_i", 0)              // isOnPlot == -1 if it is NOT found in the list 
    468                         if(isOnPlot == -1) 
    469                                 DisplayLowSet() 
    470                         Endif 
    471                 else 
    472                         if(cmpstr(ctrlName,"Plot_2")==0) 
     504                strswitch(ctrlName)     // string switch 
     505                        case "Plot_1":           
     506                                //low-q 
     507                                isOnPlot = strsearch(list, "LowQSet_i", 0)              // isOnPlot == -1 if it is NOT found in the list 
     508                                if(isOnPlot == -1) 
     509                                        DisplayLowSet() 
     510                                Endif 
     511                                break 
     512                        case "Plot_2":           
    473513                                //medium-q 
    474514                                isOnPlot = strsearch(list, "MedQSet_i", 0)              // isOnPlot == -1 if it is NOT found in the list 
     
    476516                                        DisplayMedSet() 
    477517                                Endif 
    478                         else 
     518                                break 
     519                        case "Plot_3":           
    479520                                //high-q 
    480521                                isOnPlot = strsearch(list, "HighQSet_i", 0)             // isOnPlot == -1 if it is NOT found in the list 
     
    482523                                        DisplayHighSet() 
    483524                                Endif 
    484                         Endif 
    485                 Endif 
     525                                break 
     526                        case "Plot_4":           
     527                                //highest-q 
     528                                isOnPlot = strsearch(list, "HighestQSet_i", 0)          // isOnPlot == -1 if it is NOT found in the list 
     529                                if(isOnPlot == -1) 
     530                                        DisplayHighestSet() 
     531                                Endif 
     532                                break 
     533                endswitch        
     534         
    486535        Endif 
     536         
     537         
    487538        //the stripPoints variable boxes should also update the graph, if necessary 
    488          
     539        return(0) 
     540End 
     541 
     542//adds both highest-q sets (full and trimmed) to the graph, which is  
     543//assumed to exist along with the high-q waves 
     544// 
     545Function DisplayHighestSet() 
     546        //function assumes that the window "NSORT_Graph" already exists 
     547//      DoWindow/F NSORT_Graph 
     548 
     549        SetDataFolder root:HighestQSet: 
     550        AppendToGraph/W=NSORT_Graph $"HighestQSet_i" vs $"HighestQSet_q" 
     551        ModifyGraph/W=NSORT_Graph log=1,mode=3,marker($"HighestQSet_i")=8,msize=2,rgb($"HighestQSet_i")=(65535,32896,0),opaque($"HighestQSet_i")=1 
     552        ErrorBars/W=NSORT_Graph/T=0 $"HighestQSet_i" Y,wave=($"HighestQSet_s",$"HighestQSet_s") 
     553        AppendToGraph/W=NSORT_Graph $"TrimHighestQSet_i" vs $"TrimHighestQSet_q" 
     554        ModifyGraph/W=NSORT_Graph mode($"TrimHighestQSet_i")=3,marker($"TrimHighestQSet_i")=19,msize=2,rgb($"TrimHighestQSet_i")=(65535,32896,0) 
     555        SetDataFolder root: 
    489556End 
    490557 
     
    559626        MedQPopMenuProc("popup_2",1,"") 
    560627        HighQPopMenuProc("popup_3",1,"") 
     628        HighestQPopMenuProc("popup_4",1,"") 
    561629         
    562630End 
     
    572640// 2 == MedQ 
    573641// 3 == HighQ 
     642// 4 == HighestQ 
    574643// 
    575644//"Plot_1" is the low-q button name 
    576645//"Plot_2" is the med-q button name 
    577646//"Plot_3" is the high-q button name 
     647//"Plot_4" is the high-q button name 
    578648// 
    579649//calling plot_0_Button() responds as if that named button were pressed 
     
    610680        NVAR Columns2 = root:myGlobals:NSORT:gColumns2 
    611681        NVAR Columns3 = root:myGlobals:NSORT:gColumns3 
    612         if( (Columns1 == 3) || (Columns2 == 3) || (Columns3 == 3) )  
     682        NVAR Columns4 = root:myGlobals:NSORT:gColumns4 
     683        if( (Columns1 == 3) || (Columns2 == 3) || (Columns3 == 3) || (Columns4 == 3))  
    613684                isAThree = 1 
    614685        endif 
    615         if( (Columns1 == 6) || (Columns2 == 6) || (Columns3 == 6) )  
     686        if( (Columns1 == 6) || (Columns2 == 6) || (Columns3 == 6) || (Columns4 == 6))  
    616687                isASix = 1 
    617688        endif 
     
    621692         
    622693        //is there just one data set? if so, then dispatch to a simpler routine, since no normalization is needed 
    623         ControlInfo/W=NSORT_Panel popup_2               //if MedQSet is "none", then so is HighQSet 
     694        ControlInfo/W=NSORT_Panel popup_2               //if MedQSet is "none", then so is HighQSet and HighestQSet 
    624695        fileStr = S_Value 
    625696        if(cmpstr(fileStr,"none") == 0) 
     
    658729                ControlInfo/W=NSORT_Panel popup_1 
    659730                if(isAThree) 
    660                         WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none",S_Value,scaleFactor,1) 
     731                        WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none","none",S_Value,scaleFactor,1,1) 
    661732                else 
    662                         WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none",S_Value,scaleFactor,1,res=lowres) 
     733                        WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none","none",S_Value,scaleFactor,1,1,res=lowres) 
    663734                endif 
    664735                //  just get the new list and return - don't actually "pop" the menu, or the selected item will change 
     
    692763Window NSORT_Panel() 
    693764        PauseUpdate; Silent 1           // building window... 
    694         NewPanel /W=(569,69,944,485)/K=2 
     765        NewPanel /W=(569,69,944,584)//K=2 
    695766        ModifyPanel cbRGB=(49151,53155,65535) 
    696767        ModifyPanel fixedSize=1 
     
    702773        DrawLine 0,214,346,214 
    703774        DrawLine 0,295,346,295 
     775        DrawLine 0,372,347,372 
     776        DrawLine 0,460,346,460 
     777         
    704778        SetDrawEnv fstyle= 5 
    705779        DrawText 5,74,"Low Q:" 
     
    708782        SetDrawEnv fstyle= 5 
    709783        DrawText 8,234,"High Q: (or none)" 
     784        SetDrawEnv fstyle= 5 
     785        DrawText 8,314,"Highest Q: (or none)" 
    710786        SetDrawEnv fstyle= 4 
    711787        DrawText 178,75,"Delete Points?" 
     
    714790        SetDrawEnv fstyle= 4 
    715791        DrawText 184,236,"Delete Points?" 
    716         DrawLine 0,363,346,363 
    717         DrawText 31,357,"To Manually scale data, enter scale factors above" 
    718         Button NSORT_Done,pos={274,387},size={50,20},proc=NSORT_DoneButton,title="Done" 
     792        SetDrawEnv fstyle= 4 
     793        DrawText 184,316,"Delete Points?" 
     794        DrawText 31,456,"To Manually scale data, enter scale factors above" 
     795         
     796        Button NSORT_Done,pos={274,483},size={50,20},proc=NSORT_DoneButton,title="Done" 
    719797        Button NSORT_Done,help={"closes the panel"} 
    720798        Button Plot_1,pos={279,63},size={50,20},proc=Plot_0_Button,title="Plot" 
     
    724802        Button Plot_3,pos={284,223},size={50,20},proc=Plot_0_Button,title="Plot" 
    725803        Button Plot_3,help={"Plots the dataset from the popup, showing the full set as open circles and the trimmed set as solid circles"} 
     804        Button Plot_4,pos={284.00,303.00},size={50.00,20.00},proc=Plot_0_Button,title="Plot" 
     805        Button Plot_4,help={"Plots the dataset from the popup, showing the full set as open circles and the trimmed set as solid circles"} 
     806 
    726807        Button PathButton,pos={6,26},size={80,20},proc=NSORTPickPathButton,title="Pick Path" 
    727808        Button PathButton,help={"Select the local path to the folder containing your SANS data"} 
     
    740821        SetVariable end_3,fSize=10,help={"How many points to remove from the high-q end of this dataset"} 
    741822        SetVariable end_3,limits={-Inf,Inf,0},value= root:myGlobals:NSORT:gPtsEnd3 
     823        SetVariable end_4,pos={182.00,349.00},size={80.00,16.00},proc=SetBegOrEnd,title="End Pts" 
     824        SetVariable end_4,help={"How many points to remove from the high-q end of this dataset"} 
     825        SetVariable end_4,fSize=10 
     826        SetVariable end_4,limits={-inf,inf,0},value= root:myGlobals:NSORT:gPtsEnd4 
    742827        SetVariable beg_1,pos={182,79},size={80,14},proc=SetBegOrEnd,title="Beg Pts" 
    743828        SetVariable beg_1,fSize=10,help={"How many points to remove from the low-q end of this dataset"} 
     
    749834        SetVariable beg_3,fSize=10,help={"How many points to remove from the low-q end of this dataset"} 
    750835        SetVariable beg_3,limits={-Inf,Inf,0},value= root:myGlobals:NSORT:gPtsBeg3 
    751         Button DoCombine,pos={13,387},size={160,20},proc=WriteNSORTFileButton,title="Write Combined File" 
     836        SetVariable beg_4,pos={182.00,326.00},size={80.00,16.00},proc=SetBegOrEnd,title="Beg Pts" 
     837        SetVariable beg_4,help={"How many points to remove from the low-q end of this dataset"} 
     838        SetVariable beg_4,fSize=10 
     839        SetVariable beg_4,limits={-inf,inf,0},value= root:myGlobals:NSORT:gPtsBeg4 
     840        Button DoCombine,pos={13,483},size={160,20},proc=WriteNSORTFileButton,title="Write Combined File" 
    752841        Button DoCombine,help={"Combine and normalize the selected files as specifed"} 
    753         SetVariable scale_12,pos={159,305},size={160,14},proc=SetScale_12,title="Mult factor 1-2" 
     842        SetVariable scale_12,pos={159,381},size={160,14},proc=SetScale_12,title="Mult factor 1-2" 
    754843        SetVariable scale_12,fSize=10,help={"Factor that will multiply medium-q set to scale to low-q set"} 
    755844        SetVariable scale_12,limits={-Inf,Inf,0},value= root:myGlobals:NSORT:gScale1_2 
    756         SetVariable scale_23,pos={159,325},size={160,14},proc=SetScale_23,title="Mult factor 2-3" 
     845        SetVariable scale_23,pos={159,401},size={160,14},proc=SetScale_23,title="Mult factor 2-3" 
    757846        SetVariable scale_23,fSize=10,help={"Factor that will multiply high-q set to scale to medium-q set"} 
    758847        SetVariable scale_23,limits={-Inf,Inf,0},value= root:myGlobals:NSORT:gScale2_3 
     848        SetVariable scale_34,pos={159.00,421.00},size={160.00,16.00},proc=SetScale_34,title="Mult factor 3-4" 
     849        SetVariable scale_34,help={"Factor that will multiply highest-q set to scale to high-q set"} 
     850        SetVariable scale_34,fSize=10 
     851        SetVariable scale_34,limits={-inf,inf,0},value= root:myGlobals:NSORT:gScale3_4 
    759852        CheckBox check1,pos={5,105},size={160,20},proc=CheckProc,title="Normalize to this file",value=1 
    760853        CheckBox check1,help={"If checked, the combined dataset will be normalized to this dataset"} 
     
    763856        CheckBox check3,pos={4,270},size={160,20},proc=CheckProc,title="Normalize to this file",value=0 
    764857        CheckBox check3,help={"If checked, the combined dataset will be normalized to this dataset"} 
     858        CheckBox check4,pos={4.00,350.00},size={107.00,16.00},proc=CheckProc,title="Normalize to this file" 
     859        CheckBox check4,help={"If checked, the combined dataset will be normalized to this dataset"} 
     860        CheckBox check4,value= 0 
    765861        PopupMenu popup_1,pos={6,77},size={99,19},proc=LowQPopMenuProc 
    766862        PopupMenu popup_1,mode=1,value= #"root:myGlobals:NSORT:gDataPopList" 
     
    772868        PopupMenu popup_3,mode=1,value= #"root:myGlobals:NSORT:gDataPopList_3" 
    773869        PopupMenu popup_3,help={"Choose the dataset with the highest overall q-value (shortest detector distance), or NONE if no third set desired"} 
    774         CheckBox AutoCheck,pos={14,310},size={100,20},title="Auto Scale",value=0 
     870        PopupMenu popup_4,pos={6.00,319.00},size={58.00,23.00},proc=HighestQPopMenuProc 
     871        PopupMenu popup_4,help={"Choose the dataset with the highest overall q-value (shortest detector distance), or NONE if no fourth set desired"} 
     872        PopupMenu popup_4,mode=1,popvalue="none",value= #"root:myGlobals:NSORT:gDataPopList_3" 
     873        CheckBox AutoCheck,pos={14,386},size={100,20},title="Auto Scale",value=0 
    775874        CheckBox AutoCheck,help={"If checked, the scale factor will be automatically determined, if not checked, the current values in the fields will be used"} 
    776         CheckBox PreviewCheck,pos={15,369},size={74,14},title="Preview Only",value= 0 
    777         CheckBox WarningCheck,pos={111,369},size={93,14},title="Overlap warning?",value= 1 
     875        CheckBox PreviewCheck,pos={15,465},size={74,14},title="Preview Only",value= 0 
     876        CheckBox WarningCheck,pos={111,465},size={93,14},title="Overlap warning?",value= 1 
    778877EndMacro 
    779878 
     
    801900 
    802901        Variable/G root:myGlobals:NSORT:gScale2_3 = varNum 
     902End 
     903 
     904//sets the scale factor (multiplicative) between sets 3 and 4 
     905//re-sets the global variable 
     906// 
     907Function SetScale_34(ctrlName,varNum,varStr,varName) : SetVariableControl 
     908        String ctrlName 
     909        Variable varNum 
     910        String varStr 
     911        String varName 
     912 
     913        Variable/G root:myGlobals:NSORT:gScale3_4 = varNum 
    803914End 
    804915 
     
    821932                        CheckBox check2 value=1 
    822933                        CheckBox check3 value=0 
     934                        CheckBox check4 value=0 
    823935                        Variable/G root:myGlobals:NSORT:gNormToNum = 2 
    824936                        break 
     
    828940                        CheckBox check2 value=0 
    829941                        CheckBox check3 value=1 
     942                        CheckBox check4 value=0 
    830943                        Variable/G root:myGlobals:NSORT:gNormToNum = 3 
     944                        break 
     945                Endif 
     946                if(cmpstr(ctrlName,"check4") == 0) 
     947                        CheckBox check1 value=0 
     948                        CheckBox check2 value=0 
     949                        CheckBox check3 value=0 
     950                        CheckBox check4 value=1 
     951                        Variable/G root:myGlobals:NSORT:gNormToNum = 4 
    831952                        break 
    832953                Endif 
     
    835956                CheckBox check2 value=0 
    836957                CheckBox check3 value=0 
     958                        CheckBox check4 value=0 
    837959                Variable/G root:myGlobals:NSORT:gNormToNum = 1 
    838960        While(0) 
     961         
    839962        ControlUpdate/A/W=NSORT_Panel 
    840                 DoUpdate 
     963        DoUpdate 
    841964                 
    842965End 
     
    8981021 
    8991022 
     1023//when menu is popped, it gets a valid list to display and updates the control 
     1024// - will be different, since set 3 can also be "none" if only 2 sets 
     1025//are to be NSORTed 
     1026// 
     1027Function HighestQPopMenuProc(ctrlName,popNum,popStr) : PopupMenuControl 
     1028        String ctrlName 
     1029        Variable popNum 
     1030        String popStr 
     1031 
     1032        //add the option "none" to the file list (which should already end with a semicolon) 
     1033        String/G root:myGlobals:NSORT:gDataPopList_3 = "none;" +  ReducedDataFileList("") 
     1034 
     1035        ControlUpdate/W=NSORT_Panel popup_4 
     1036        if(cmpstr(popStr,"none")==0) 
     1037                RemoveFromGraph/Z HighestQSet_i,TrimHighestQSet_i               //remove the data from the graph 
     1038        Endif    
     1039        ControlInfo/W=NSORT_Panel popup_2 
     1040        if(cmpstr(S_Value,"none")==0) 
     1041                PopupMenu popup_3,win=NSORT_Panel,mode=1        //force "none" (item #1) to be the selection if medium is none 
     1042                PopupMenu popup_4,win=NSORT_Panel,mode=1        //force "none" (item #1) to be the selection if medium is none 
     1043        endif 
     1044        ControlInfo/W=NSORT_Panel popup_3 
     1045        if(cmpstr(S_Value,"none")==0) 
     1046                PopupMenu popup_4,win=NSORT_Panel,mode=1        //force "none" (item #1) to be the selection if medium is none 
     1047        endif 
     1048        return(0)        
     1049End 
     1050 
    9001051//be sure to use the "Trim.." datasets that have had the bad points removed 
    9011052//and then do the scaling based on the choices in the panel 
     
    9061057 
    9071058        NVAR normTo = root:myGlobals:NSORT:gNormToNum 
    908         Variable err=0,setNum,norm12,norm23 
    909         String fileStr="",tempName="",name1="",name2="",name3="",normToStr="" 
     1059        Variable err=0,setNum,norm12,norm23,norm34 
     1060        String fileStr="",tempName="",name1="",name2="",name3="",normToStr="",name4="" 
    9101061         
    9111062//Set the number of output columns 
     
    9151066        NVAR Columns2 = root:myGlobals:NSORT:gColumns2 
    9161067        NVAR Columns3 = root:myGlobals:NSORT:gColumns3 
    917         if( (Columns1 == 3) || (Columns2 == 3) || (Columns3 == 3) )  
     1068        NVAR Columns4 = root:myGlobals:NSORT:gColumns4 
     1069        if( (Columns1 == 3) || (Columns2 == 3) || (Columns3 == 3) || (Columns4 == 3) )  
    9181070                numOutputColumns = 3 
    9191071        else 
    920                 if( (Columns1 == 6) && (Columns2 == 6) && ((Columns3 == 0) || (Columns3 == 6)) )  
     1072                if( (Columns1 == 6) && (Columns2 == 6) && ((Columns3 == 0) || (Columns3 == 6)) || (Columns4 == 6) )  
    9211073                        numOutputColumns = 6 
    9221074                endif 
     
    9711123        //////end load file3 
    9721124         
     1125        //load file4 , if necessary 
     1126        ControlInfo/W=NSORT_Panel popup_4 
     1127        fileStr = S_Value 
     1128        name4 = fileStr 
     1129        setNum = 4 
     1130        if(cmpstr(fileStr,"none") == 0) 
     1131                //do nothing 
     1132        else 
     1133                //get a valid file based on this partialName and catPathName 
     1134                tempName = FindValidFilename(fileStr) 
     1135         
     1136                //prepend path to tempName for read routine  
     1137                PathInfo catPathName 
     1138                tempName = S_path + tempName 
     1139                err = LoadDataForNSORT(tempName,setNum) 
     1140        Endif 
     1141        //////end load file4 
     1142         
     1143         
    9731144        //assign filename of file to normalize to 
    974         if(normTo == 1) 
    975                 normToStr = name1 
    976         else 
    977                 if(normTo == 2) 
     1145        switch(normTo) 
     1146                case 1: 
     1147                        normToStr = name1 
     1148                        break 
     1149                case 2: 
    9781150                        normToStr = name2 
    979                 else 
     1151                        break 
     1152                case 3: 
    9801153                        normToStr = name3 
    981                 Endif 
    982         Endif 
     1154                        break 
     1155                case 4: 
     1156                        normToStr = name4 
     1157                        break 
     1158        endswitch 
     1159 
    9831160 
    9841161        Variable n1,n2,n12,num2 
    9851162        Variable n3,n123 
     1163        Variable n4,n1234 
    9861164         
    9871165   if(numOutputColumns == 3) //Start the 3-column specific stuff here. 
     
    10711249                        ControlInfo/W=NSORT_Panel PreviewCheck 
    10721250                        if( V_Value==0 )                //if zero skip the preview and write out the file 
    1073                                 err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,normToStr,norm12,norm23) 
     1251                                err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,name4,normToStr,norm12,norm23,norm34) 
    10741252                        endif 
    10751253                        //cleanup waves before exiting 
     
    11611339                ControlInfo/W=NSORT_Panel PreviewCheck 
    11621340                if( V_Value==0 )                //if zero skip the preview and write out the file 
    1163                         err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,normToStr,norm12,norm23) 
     1341                        err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,name4,normToStr,norm12,norm23,norm34) 
    11641342                endif 
    11651343                //cleanup waves before exiting 
    11661344                KillWaves/Z q12,i12,sig12,q123,i123,sig123 
     1345                 
     1346                 
     1347                //do we need to continue, or write out the set here and stop? 
     1348                if(cmpstr(name4,"none") == 0) 
     1349                        //stop here 
     1350                        norm34 = 1              //norm34 was not used 
     1351                        Variable/G root:myGlobals:NSORT:gScale3_4 = 1 
     1352                        //If any of them have three columns write three column data 
     1353                         
     1354                        ControlInfo/W=NSORT_Panel PreviewCheck 
     1355                        if( V_Value==0 )                //if zero skip the preview and write out the file 
     1356                                err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,name4,normToStr,norm12,norm23,norm34) 
     1357                        endif 
     1358                        //cleanup waves before exiting 
     1359                        KillWaves/Z q123,i123,sig123 
     1360                        return err 
     1361                Endif 
     1362                 
     1363                //need to add the fourth file... which was already loaded at the top of the function 
     1364                ///// 
     1365                //order points in sets 123-4, indexing overlap region 
     1366                //put result in temporary waves 
     1367                WaveStats/Q q123 
     1368                n123 = V_npnts 
     1369                WaveStats/Q $"root:HighestQSet:TrimHighestQSet_q" 
     1370                n4 = V_npnts 
     1371                n1234 = n123 + n4 
     1372                 
     1373                Make/O/N=(n1234) q1234,i1234,sig1234 
     1374                WAVE highestq = $"root:HighestQSet:TrimHighestQSet_q" 
     1375                WAVE highesti = $"root:HighestQSet:TrimHighestQSet_i" 
     1376                WAVE highests = $"root:HighestQSet:TrimHighestQSet_s" 
     1377         
     1378                q1234[0,n123-1] = q123[p] 
     1379                q1234[n12,n123+n4-1]= highestq[p-n123] 
     1380                i1234[0,n123-1] = i123[p] 
     1381                i1234[n12,n123+n4-1]= highesti[p-n123] 
     1382                sig1234[0,n123-1] = sig123[p] 
     1383                sig1234[n12,n123+n4-1]= highests[p-n123] 
     1384                 
     1385                Sort q1234, q1234,i1234,sig1234 
     1386                ///////////////// 
     1387                 
     1388                //find the maximum point number of set 2  in the overlap region 
     1389                FindLevel/P/Q highestq,(q123[n123-1]) 
     1390                num2 = trunc(V_levelX) 
     1391                //Print "num2 = ",num2 
     1392                 
     1393                if (auto) 
     1394                        //there must be overlap points to use auto-scaling 
     1395                        if(numtype(num2) != 0) 
     1396                                Abort "There are no data points in the overlap region. Either reduce the number of deleted points or use manual scaling." 
     1397                        endif 
     1398                        //do auto-scaling of data 
     1399                        norm34 = NCNR_GetScalingInOverlap(num2,q123,i123,highestq,highesti) 
     1400                        //Set the global variable for the 123 - 4 scale factor 
     1401                        Variable/G root:myGlobals:NSORT:gScale3_4 = norm34 
     1402                else 
     1403                        //use the value from the panel ( which is the global) 
     1404                        NVAR temp34 = root:myGlobals:NSORT:gScale3_4 
     1405                        norm34 = temp34 
     1406                Endif 
     1407                 
     1408// normalization 
     1409                switch (normTo) 
     1410                        case 1: 
     1411                        case 2: 
     1412                        case 3: 
     1413                                //normalize to first or second or third file, so multiply fourth by norm34 
     1414                                highesti *= norm34 
     1415                                highests *= norm34 
     1416                                break 
     1417                        case 4: 
     1418                                //normalize to FOURTH file, 123 by multiplicative factor 1/norm34 
     1419                                norm34 = 1/norm34 
     1420                                i123 *= norm34 
     1421                                sig123 *= norm34 
     1422                                // for the display, scale the trimmed sets 1 and 2 and 3 
     1423                                lowi *= norm34 
     1424                                lows *= norm34 
     1425                                medi *= norm34 
     1426                                meds *= norm34 
     1427                                highi *= norm34 
     1428                                highs *= norm34 
     1429                                break 
     1430                endswitch 
     1431                                 
     1432                ControlUpdate/A/W=NSORT_Panel 
     1433                DoUpdate 
     1434 
     1435                //Print "NSORT-ed ",name1," + ", name2, " + ", name3 
     1436                //Print "normalized to ",normTo 
     1437                //Print "multiplicative factor 1-2 = ",norm12," multiplicative factor 12 - 3 = ",norm23 
     1438                 
     1439                 
     1440                Make/O/N=(n1234) q1234,i1234,sig1234 
     1441                q1234[0,n123-1] = q123[p] 
     1442                q1234[n123,n123+n4-1]= highestq[p-n123] 
     1443                i1234[0,n123-1] = i123[p] 
     1444                i1234[n123,n123+n4-1]= highesti[p-n123] 
     1445                sig1234[0,n123-1] = sig123[p] 
     1446                sig1234[n123,n123+n4-1]= highests[p-n123] 
     1447                 
     1448                Sort q123, q123,i123,sig123 
     1449                //at this point 12 - 3 are combined 
     1450                //write out the set here and stop 
     1451         
     1452                ControlInfo/W=NSORT_Panel PreviewCheck 
     1453                if( V_Value==0 )                //if zero skip the preview and write out the file 
     1454                        err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,name4,normToStr,norm12,norm23,norm34) 
     1455                endif 
     1456                //cleanup waves before exiting 
     1457                KillWaves/Z q12,i12,sig12,q123,i123,sig123 
     1458                 
     1459                 
     1460                 
     1461                 
    11671462                //combined dataset will already be displayed if the NSORT_Graph is open 
    11681463         
     
    11881483                WAVE lows = $"root:LowQSet:TrimLowQSet_s" 
    11891484                WAVE meds = $"root:MedQSet:TrimMedQSet_s" 
    1190 //              WAVE lowsq = $"root:LowQSet:TrimLowQSet_sq" 
    1191 //              WAVE medsq = $"root:MedQSet:TrimMedQSet_sq" 
    1192 //              WAVE lowqb = $"root:LowQSet:TrimLowQSet_qb" 
    1193 //              WAVE medqb =  $"root:MedQSet:TrimMedQSet_qb" 
    1194 //              WAVE lowfs = $"root:LowQSet:TrimLowQSet_fs" 
    1195 //              WAVE medfs = $"root:MedQSet:TrimMedQSet_fs" 
    11961485                WAVE lowres = $"root:LowQSet:TrimLowQSet_res" 
    11971486                WAVE medres = $"root:MedQSet:TrimMedQSet_res" 
     
    12091498                fs12[0,n1-1] = lowres[p][2] 
    12101499                fs12[n1,n1+n2-1]= medres[p-n1][2] 
    1211 //              res12[0,n1-1][0]=lowres[p][0] 
    1212 //              res12[n1,n1+n2-1][0]=medres[p-n1][0] 
    1213 //              res12[0,n1-1][1]=lowres[p][1] 
    1214 //              res12[n1,n1+n2-1][1]=medres[p-n1][1] 
    1215 //              res12[0,n1-1][2]=lowres[p][2] 
    1216 //              res12[n1,n1+n2-1][2]=medres[p-n1][2] 
    12171500 
    12181501                 
     
    12731556                fs12[0,n1-1] = lowres[p][2] 
    12741557                fs12[n1,n1+n2-1]= medres[p-n1][2] 
    1275 //              res12[0,n1-1][0]=lowres[p][0] 
    1276 //              res12[n1,n1+n2-1][0]=medres[p-n1][0] 
    1277 //              res12[0,n1-1][1]=lowres[p][1] 
    1278 //              res12[n1,n1+n2-1][1]=medres[p-n1][1] 
    1279 //              res12[0,n1-1][2]=lowres[p][2] 
    1280 //              res12[n1,n1+n2-1][2]=medres[p-n1][2] 
    12811558 
    12821559                 
     
    12941571                                res12[][1] = qb12[p] 
    12951572                                res12[][2] = fs12[p] 
    1296                                 err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,normToStr,norm12,norm23,res=res12) 
     1573                                err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,name4,normToStr,norm12,norm23,norm34,res=res12) 
    12971574                        endif 
    12981575                        // always clean up waves before exiting 
     
    13161593                WAVE highi = $"root:HighQSet:TrimHighQSet_i" 
    13171594                WAVE highs = $"root:HighQSet:TrimHighQSet_s" 
    1318 //              WAVE highsq = $"root:HighQSet:TrimHighQSet_sq" 
    1319 //              WAVE highqb = $"root:HighQSet:TrimHighQSet_qb" 
    1320 //              WAVE highfs = $"root:HighQSet:TrimHighQSet_fs" 
    13211595                WAVE highres = $"root:HighQSet:TrimHighQSet_res" 
    13221596         
    13231597         
    13241598                q123[0,n12-1] = q12[p] 
    1325                 q123[n1,n12+n3-1]= highq[p-n12] 
     1599                q123[n12,n12+n3-1]= highq[p-n12] 
    13261600                i123[0,n12-1] = i12[p] 
    1327                 i123[n1,n12+n3-1]= highi[p-n12] 
     1601                i123[n12,n12+n3-1]= highi[p-n12] 
    13281602                sig123[0,n12-1] = sig12[p] 
    1329                 sig123[n1,n12+n3-1]= highs[p-n12] 
     1603                sig123[n12,n12+n3-1]= highs[p-n12] 
    13301604                sq123[0,n12-1] = sq12[p] 
    1331                 sq123[n1,n12+n3-1]= highres[p-n12][0] 
     1605                sq123[n12,n12+n3-1]= highres[p-n12][0] 
    13321606                qb123[0,n12-1] = qb12[p] 
    1333                 qb123[n1,n12+n3-1]= highres[p-n12][1] 
     1607                qb123[n12,n12+n3-1]= highres[p-n12][1] 
    13341608                fs123[0,n12-1] = fs12[p] 
    1335                 fs123[n1,n12+n3-1]= highres[p-n12][2] 
    1336 //              res123[0,n12-1][0] = highres[p][0] 
    1337 //              res123[n1,n12+n3-1][0] = highres[p-n12][0] 
    1338 //              res123[0,n12-1][1] = highres[p][1] 
    1339 //              res123[n1,n12+n3-1][1] = highres[p-n12][1] 
    1340 //              res123[0,n12-1][2] = highres[p][2] 
    1341 //              res123[n1,n12+n3-1][2] = highres[p-n12][2] 
     1609                fs123[n12,n12+n3-1]= highres[p-n12][2] 
    13421610 
    13431611                 
     
    14011669                fs123[0,n12-1] = fs12[p] 
    14021670                fs123[n12,n12+n3-1]= highres[p-n12][2] 
    1403 //              res123[0,n12-1][0] = highres[p][0] 
    1404 //              res123[n1,n12+n3-1][0] = highres[p-n12][0] 
    1405 //              res123[0,n12-1][1] = highres[p][1] 
    1406 //              res123[n1,n12+n3-1][1] = highres[p-n12][1] 
    1407 //              res123[0,n12-1][2] = highres[p][2] 
    1408 //              res123[n1,n12+n3-1][2] = highres[p-n12][2] 
     1671 
    14091672                 
    14101673                Sort q123, q123,i123,sig123,sq123,qb123,fs123 
    14111674                //at this point 12 - 3 are combined 
    1412                 //write out the set here and stop 
     1675                 
     1676                //do we need to continue, or write out the set here and stop? 
     1677                if(cmpstr(name4,"none") == 0) 
     1678                        //stop here 
     1679                 
     1680                        ControlInfo/W=NSORT_Panel PreviewCheck 
     1681                        if( V_Value==0 )                //if zero skip the preview and write out the file 
     1682                                res123[][0] = sq123[p] 
     1683                                res123[][1] = qb123[p] 
     1684                                res123[][2] = fs123[p] 
     1685                                err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,name4,normToStr,norm12,norm23,norm34,res=res123) 
     1686                        endif 
     1687                        // always clean up waves before exiting 
     1688                        KillWaves/Z q12,i12,sig12,q123,i123,sig123,sq123,qb123,fs123 //,res123 
     1689                        return err 
     1690                Endif 
     1691                 
     1692                // new 2016 - combine the 4th data set 
     1693 
     1694                //need to add the fourth file... which was already loaded at the top of the function 
     1695                ///// 
     1696                //order points in sets 123-4, indexing overlap region 
     1697                //put result in temporary waves 
     1698                WaveStats/Q q123 
     1699                n123 = V_npnts 
     1700                WaveStats/Q $"root:HighestQSet:TrimHighestQSet_q" 
     1701                n4 = V_npnts 
     1702                n1234 = n123 + n4 
     1703                 
     1704                Make/O/N=(n1234) q1234,i1234,sig1234,sq1234,qb1234,fs1234 
     1705                Make/O/N=(n1234,3) res1234 
     1706                WAVE highestq = $"root:HighestQSet:TrimHighestQSet_q" 
     1707                WAVE highesti = $"root:HighestQSet:TrimHighestQSet_i" 
     1708                WAVE highests = $"root:HighestQSet:TrimHighestQSet_s" 
     1709                WAVE highestres = $"root:HighestQSet:TrimHighestQSet_res" 
     1710         
     1711         
     1712                q1234[0,n123-1] = q123[p] 
     1713                q1234[n123,n123+n4-1]= highestq[p-n123] 
     1714                i1234[0,n123-1] = i123[p] 
     1715                i1234[n123,n123+n4-1]= highesti[p-n123] 
     1716                sig1234[0,n123-1] = sig123[p] 
     1717                sig1234[n123,n123+n4-1]= highests[p-n123] 
     1718                sq1234[0,n123-1] = sq123[p] 
     1719                sq1234[n123,n123+n4-1]= highestres[p-n123][0] 
     1720                qb1234[0,n123-1] = qb123[p] 
     1721                qb1234[n123,n123+n4-1]= highestres[p-n123][1] 
     1722                fs1234[0,n123-1] = fs123[p] 
     1723                fs1234[n123,n123+n4-1]= highestres[p-n123][2] 
     1724 
     1725                 
     1726                Sort q1234, q1234,i1234,sig1234,sq1234,qb1234,fs1234 
     1727                ///////////////// 
     1728                 
     1729                //find the maximum point number of set 2  in the overlap region 
     1730                FindLevel/P/Q highestq,(q123[n123-1]) 
     1731                num2 = trunc(V_levelX) 
     1732                //Print "num2 = ",num2 
     1733                 
     1734                if (auto) 
     1735                        //there must be overlap points to use auto-scaling 
     1736                        if(numtype(num2) != 0) 
     1737                                Abort "There are no data points in the overlap region. Either reduce the number of deleted points or use manual scaling." 
     1738                        endif 
     1739                        //do auto-scaling of data 
     1740                        norm34 = NCNR_GetScalingInOverlap(num2,q123,i123,highestq,highesti) 
     1741                        //Set the global variable for the 12 - 3 scale factor 
     1742                        Variable/G root:myGlobals:NSORT:gScale3_4 = norm34 
     1743                else 
     1744                        //use the value from the panel ( which is the global) 
     1745                        NVAR temp34 = root:myGlobals:NSORT:gScale3_4 
     1746                        norm34 = temp34 
     1747                Endif 
     1748 
     1749// normalization 
     1750                switch (normTo) 
     1751                        case 1: 
     1752                        case 2: 
     1753                        case 3: 
     1754                                //normalize to first or second or third file, so multiply fourth by norm34 
     1755                                highesti *= norm34 
     1756                                highests *= norm34 
     1757                                break 
     1758                        case 4: 
     1759                                //normalize to FOURTH file, 123 by multiplicative factor 1/norm34 
     1760                                norm34 = 1/norm34 
     1761                                i123 *= norm34 
     1762                                sig123 *= norm34 
     1763                                // for the display, scale the trimmed sets 1 and 2 and 3 
     1764                                lowi *= norm34 
     1765                                lows *= norm34 
     1766                                medi *= norm34 
     1767                                meds *= norm34 
     1768                                highi *= norm34 
     1769                                highs *= norm34 
     1770                                break 
     1771                endswitch 
     1772                 
     1773         
     1774                //Print "NSORT-ed ",name1," + ", name2, " + ", name3 
     1775                //Print "normalized to ",normTo 
     1776                //Print "multiplicative factor 1-2 = ",norm12," multiplicative factor 12 - 3 = ",norm23 
     1777                ControlUpdate/A/W=NSORT_Panel 
     1778                DoUpdate 
     1779                 
     1780                Make/O/N=(n1234) q1234,i1234,sig1234 
     1781                Make/O/N=(n1234,3) res1234 
     1782                q1234[0,n123-1] = q123[p] 
     1783                q1234[n123,n123+n4-1]= highestq[p-n123] 
     1784                i1234[0,n123-1] = i123[p] 
     1785                i1234[n123,n123+n4-1]= highesti[p-n123] 
     1786                sig1234[0,n123-1] = sig123[p] 
     1787                sig1234[n123,n123+n4-1]= highests[p-n123] 
     1788                sq1234[0,n123-1] = sq123[p] 
     1789                sq1234[n123,n123+n4-1]= highestres[p-n123][0] 
     1790                qb1234[0,n123-1] = qb123[p] 
     1791                qb1234[n123,n123+n4-1]= highestres[p-n123][1] 
     1792                fs1234[0,n123-1] = fs123[p] 
     1793                fs1234[n123,n123+n4-1]= highestres[p-n123][2] 
     1794                 
     1795                Sort q1234, q1234,i1234,sig1234,sq1234,qb1234,fs1234 
     1796                //at this point 123 - 4 are combined 
     1797                 
     1798//write out the set here and stop 
     1799                        //stop here 
    14131800         
    14141801                ControlInfo/W=NSORT_Panel PreviewCheck 
    14151802                if( V_Value==0 )                //if zero skip the preview and write out the file 
    1416                         res123[][0] = sq123[p] 
    1417                         res123[][1] = qb123[p] 
    1418                         res123[][2] = fs123[p] 
    1419                         err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,normToStr,norm12,norm23,res=res123) 
     1803                        res1234[][0] = sq1234[p] 
     1804                        res1234[][1] = qb1234[p] 
     1805                        res1234[][2] = fs1234[p] 
     1806                        err=WriteNSORTedFile(q1234,i1234,sig1234,name1,name2,name3,name4,normToStr,norm12,norm23,norm34,res=res1234) 
    14201807                endif 
    1421                 //cleanup waves before exiting 
    1422                 KillWaves/Z q12,i12,sig12,q123,i123,sig123,sq123,qb123,fs123 //,res123 
     1808                // always clean up waves before exiting 
     1809                KillWaves/Z q123,i123,sig123,q1234,i1234,sig1234,sq1234,qb1234,fs1234 //,res1234 
     1810                return err 
     1811 
    14231812                //combined dataset will already be displayed if the NSORT_Graph is open 
    14241813         
    14251814                //////////////// 
    14261815                return err 
    1427    endif // End the 6-column specific stuff here 
    1428          
    1429 End 
     1816   endif // End the if(6-column) specific stuff here 
     1817         
     1818         
     1819End 
     1820 
     1821 
     1822 
    14301823 
    14311824 
     
    14881881                PopupMenu popup_3,win=NSORT_Panel,mode=(1) 
    14891882        endif 
     1883End 
     1884 
     1885///////////////////////////////////////////////////////////// 
     1886// testing, may speed up NSORT, NCNR-specific naming scheme of  
     1887// run numbers and a run prefix 
     1888// 
     1889// it is assumed that you are combining data from the current reduction session, 
     1890// so that the XML y/n hasn't changed. 
     1891// 
     1892// updated to use 4 files 
     1893// 
     1894// TODO: 
     1895// -- still assuming ABS 
     1896// 
     1897Function Set4NSORTFiles(low,med,hi,highest,pref) 
     1898        Variable low,med,hi,highest 
     1899        String pref 
     1900         
     1901        //make strings from the numbers 
     1902        String absStr="",ext 
     1903        Variable popNum 
     1904        DoWindow/F NSORT_Panel 
     1905         
     1906        SVAR lowQPopStr = root:myGlobals:NSORT:gDataPopList 
     1907        SVAR medHiQPopStr = root:myGlobals:NSORT:gDataPopList_3 
     1908         
     1909        NVAR useXMLOutput = root:Packages:NIST:gXML_Write 
     1910        if(useXMLOutput) 
     1911                ext = ".ABSx" 
     1912        else 
     1913                ext = ".ABS" 
     1914        endif 
     1915         
     1916        //lowQ menu 
     1917        absStr = pref+RunDigitString(low)+ext 
     1918        popNum = WhichListItem(absStr,lowQPopStr,";",0) 
     1919        if(popNum == -1) 
     1920                Abort "Could not find file: " + absStr +" aborting...  Be sure that your output format is the same as the input" 
     1921        endif 
     1922        popNum += 1             // add 1 to get the item number 
     1923        PopupMenu popup_1,win=NSORT_Panel,mode=(popNum) 
     1924         
     1925        //medQ (a different list for the popup) 
     1926        absStr = pref+RunDigitString(med)+ext 
     1927        popNum = WhichListItem(absStr,medHiQPopStr,";",0) 
     1928        if(popNum == -1) 
     1929                Abort "Could not find file: "+absStr+" aborting...  Be sure that your output format is the same as the input" 
     1930        endif 
     1931        popNum += 1             // add 1 to get the item number 
     1932        PopupMenu popup_2,win=NSORT_Panel,mode=(popNum) 
     1933         
     1934         
     1935        //highQ (same pop list as medQ) 
     1936        if(hi != 0) 
     1937                absStr = pref+RunDigitString(hi)+ext 
     1938                popNum = WhichListItem(absStr,medHiQPopStr,";",0) 
     1939                if(popNum == -1) 
     1940                        Abort "Could not find file: "+absStr+" aborting...  Be sure that your output format is the same as the input" 
     1941                endif 
     1942                popNum += 1             // add 1 to get the item number 
     1943                PopupMenu popup_3,win=NSORT_Panel,mode=(popNum) 
     1944        else 
     1945                PopupMenu popup_3,win=NSORT_Panel,mode=(1) 
     1946        endif 
     1947         
     1948        //highestQ (same pop list as medQ) 
     1949        if(highest != 0) 
     1950                absStr = pref+RunDigitString(highest)+ext 
     1951                popNum = WhichListItem(absStr,medHiQPopStr,";",0) 
     1952                if(popNum == -1) 
     1953                        Abort "Could not find file: "+absStr+" aborting...  Be sure that your output format is the same as the input" 
     1954                endif 
     1955                popNum += 1             // add 1 to get the item number 
     1956                PopupMenu popup_4,win=NSORT_Panel,mode=(popNum) 
     1957        else 
     1958                PopupMenu popup_4,win=NSORT_Panel,mode=(1) 
     1959        endif 
     1960         
     1961        return(0) 
    14901962End 
    14911963 
     
    16922164        MedQPopMenuProc("",1,"") 
    16932165        HighQPopMenuProc("",1,"") 
     2166        HighestQPopMenuProc("",1,"") 
    16942167         
    16952168//      String savedDataFolder = GetDataFolder(1)               // save 
     
    16972170        Wave MediumRun = root:myGlobals:CombineTable:MediumRun 
    16982171        Wave HighRun = root:myGlobals:CombineTable:HighRun 
     2172        Wave HighestRun = root:myGlobals:CombineTable:HighestRun 
    16992173        Wave/T prefix = root:myGlobals:CombineTable:Prefix 
    17002174        Wave/T saveName = root:myGlobals:CombineTable:saveName 
     
    17022176        Variable/G root:myGlobals:CombineTable:useTable=1 
    17032177         
    1704         Variable num=numpnts(lowRun),ii,lowFile,medFile,hiFile 
     2178        Variable num=numpnts(lowRun),ii,lowFile,medFile,hiFile,highestFile 
    17052179        String prefixStr = "" 
    17062180        Pathinfo catPathName 
     
    17122186                medFile = MediumRun[ii] 
    17132187                hiFile = highRun[ii] 
     2188                highestFile = highestRun[ii] 
    17142189                prefixStr = prefix[ii] 
    17152190                 
    1716                 Set3NSORTFiles(lowFile,medFile,hiFile,prefixStr)                //set the files and pop the NSORT popups 
     2191                Set4NSORTFiles(lowFile,medFile,hiFile,highestFile,prefixStr)            //set the files and pop the NSORT popups 
    17172192                 
    17182193                //pass the new file name in as a global (ugh!) 
     
    17832258                Wave medium = $"root:myGlobals:CombineTable:MediumRun" 
    17842259                Wave high = $"root:myGlobals:CombineTable:HighRun" 
     2260                Wave highest = $"root:myGlobals:CombineTable:HighestRun" 
    17852261                Wave/T prefix = $"root:myGlobals:CombineTable:Prefix" 
    17862262                Wave/T saveName = $"root:myGlobals:CombineTable:SaveName" 
     
    18052281        endif 
    18062282 
    1807  
    1808         if( !(num==2 || num==3) ) 
    1809                 Abort "invalid table selection - must select either 2 or 3 files to combine" 
    1810         endif 
    1811         Make/O/T/N=(3) tmpLbl 
    1812         Make/O/N=(3) tmpSDD,tmpRun 
     2283        if( !(num==2 || num==3 || num==4) ) 
     2284                Abort "invalid table selection - must select either 2 or 3 or 4 files to combine" 
     2285        endif 
     2286        Make/O/T/N=(4) tmpLbl 
     2287        Make/O/N=(4) tmpSDD,tmpRun 
     2288         
     2289        //initialize with fake values in case 2 or 3 files are combined 
     2290        tmpLbl = "" 
     2291        tmpSDD = 0.01           //fake sdd in meters to always be the "highest" Q 
     2292        tmpRun = 0                      //pass a run number of zero to be later interpreted as "none" 
     2293         
     2294        //fill in the real values from the selection 
    18132295        for(ii=V_startRow;ii<=V_endRow;ii+=1) 
    18142296                tmpLbl[ii-V_startRow] = gLabels[ii] 
     
    18162298                tmpRun[ii-V_startRow] = gRunNumber[ii] 
    18172299        endfor 
    1818         if(num==2)      // then "highest" q run needs to be forced to zero 
    1819                 ii=2 
    1820                 tmpLbl[ii] = "" 
    1821                 tmpSDD[ii] = 0.01               //fake sdd in meters to always be the "highest" Q 
    1822                 tmpRun[ii] = 0                  //pass a run number of zero to be later interpreted as "none" 
    1823         endif 
     2300//      if(num==2)      // then "highest" q run needs to be forced to zero 
     2301//              ii=2 
     2302//              tmpLbl[ii] = "" 
     2303//              tmpSDD[ii] = 0.01               //fake sdd in meters to always be the "highest" Q 
     2304//              tmpRun[ii] = 0                  //pass a run number of zero to be later interpreted as "none" 
     2305//      endif 
    18242306        Sort tmpSDD, tmpSDD,tmpLbl,tmpRun 
    18252307         
     
    18272309         
    18282310        num=numpnts(low) 
    1829         InsertPoints num, 1, low,medium,high,prefix,SaveName 
    1830         low[num] = tmpRun[2] 
    1831         medium[num] = tmpRun[1] 
    1832         high[num] = tmpRun[0] 
     2311        InsertPoints num, 1, low,medium,high,highest,prefix,SaveName 
     2312        low[num] = tmpRun[3] 
     2313        medium[num] = tmpRun[2] 
     2314        high[num] = tmpRun[1] 
     2315        highest[num] = tmpRun[0] 
    18332316        prefix[num] = GetPrefixStrFromFile(filenames[ii]) 
    18342317        saveName[num] = saveStr  
     
    19052388                Make/O/N=0 $"root:myGlobals:CombineTable:MediumRun" 
    19062389                Make/O/N=0 $"root:myGlobals:CombineTable:HighRun" 
     2390                Make/O/N=0 $"root:myGlobals:CombineTable:HighestRun" 
    19072391                Make/O/T/N=0 $"root:myGlobals:CombineTable:Prefix" 
    19082392                Make/O/T/N=0 $"root:myGlobals:CombineTable:SaveName" 
     
    19112395         
    19122396        // make the second table 
    1913         AppendToTable/W=CombinePanel#RunNumbersToCombine LowRun,MediumRun,HighRun,Prefix,SaveName 
     2397        AppendToTable/W=CombinePanel#RunNumbersToCombine LowRun,MediumRun,HighRun,HighestRun,Prefix,SaveName 
    19142398         
    19152399        SetDataFolder root: 
     
    19192403 
    19202404///////////////////////////////// 
    1921  
     2405// currently unused 
     2406// 
    19222407Proc MakeCombineTable_byName() 
    19232408        NewDataFolder/O root:myGlobals:CombineTable                     //in case it doesn't exist yet 
     
    19282413End 
    19292414 
     2415// 
     2416// currently unused 
     2417// 
    19302418// Another beta procedure, to allow files to be combined quickly 
    19312419// - make 4 waves (text) with the low, med, hi, and wave names 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_BeamCenter.ipf

    r982 r983  
    3434//      ShowTools/A 
    3535         
    36         PopupMenu popup_0,pos={20,20},size={109,20},proc=SetDetPanelPopMenuProc,title="Detector Panel" 
     36        PopupMenu popup_0,pos={20,50},size={109,20},proc=SetDetPanelPopMenuProc,title="Detector Panel" 
    3737        PopupMenu popup_0,mode=1,popvalue="FL",value= #"\"FL;FR;FT;FB;MR;ML;MT;MB;B;\"" 
    3838        PopupMenu popup_1,pos={200,20},size={157,20},proc=DetModelPopMenuProc,title="Model Function" 
    3939        PopupMenu popup_1,mode=1,popvalue="BroadPeak",value= #"\"BroadPeak;other;\"" 
    40          
     40        PopupMenu popup_2,pos={20,20},size={109,20},title="Data Source"//,proc=SetFldrPopMenuProc 
     41        PopupMenu popup_2,mode=1,popvalue="VCALC",value= #"\"RAW;SAM;VCALC;\"" 
     42                 
    4143        Button button_0,pos={486,20},size={80,20},proc=DetFitGuessButtonProc,title="Guess" 
    4244        Button button_1,pos={615,20},size={80,20},proc=DetFitButtonProc,title="Do Fit" 
    4345        Button button_2,pos={744,20},size={80,20},proc=DetFitHelpButtonProc,title="Help" 
     46        Button button_3,pos={615,400},size={110,20},proc=WriteCtrButtonProc,title="Write Centers" 
     47        Button button_4,pos={730,400},size={110,20},proc=CtrTableButtonProc,title="Ctr table" 
     48        Button button_5,pos={730,440},size={110,20},proc=WriteCtrTableButtonProc,title="Write table" 
     49 
    4450 
    4551 
     
    7884 
    7985// edit the fit coefficients     
    80         Edit/W=(500,80,880,350)/HOST=#  parameters_PeakPix2D,coef_PeakPix2D 
     86        Edit/W=(550,80,880,370)/HOST=#  parameters_PeakPix2D,coef_PeakPix2D 
    8187        ModifyTable width(Point)=0 
    8288        ModifyTable width(parameters_PeakPix2D)=120 
     
    8995 
    9096 
    91  
    92  
     97// 
     98// function to choose which detector panel to display, and then to actually display it 
     99// 
    93100Function SetDetPanelPopMenuProc(pa) : PopupMenuControl 
    94101        STRUCT WMPopupAction &pa 
     
    126133 
    127134 
     135// TODO - currently is hard-wired for the simulation path! 
     136//     need to make it more generic, especially for RAW data 
     137// 
     138// -- need to adjust the size of the image subwindows to keep the model 
     139//    calculation from spillon over onto the table (maybe just move the table) 
     140// -- need to do something for panel "B". currently ignored 
     141// -- currently the pixel sizes for "real" data is incorrect in the file 
     142//     and this is why the plots are incorrectly sized 
     143// 
    128144// draw the selected panel and the model calculation, adjusting for the  
    129145// orientation of the panel and the number of pixels, and pixel sizes 
     
    132148         
    133149        // from the selection, find the path to the data 
    134         // TODO - currently is hard-wired for the simulation path! 
    135         //     need to make it more generic, especially for RAW data 
     150 
    136151 
    137152        Variable xDim,yDim 
     
    139154        Variable height, width 
    140155        Variable left2,top2,right2,bottom2 
     156        Variable nPix_X,nPix_Y,pixSize_X,pixSize_Y 
     157 
     158         
    141159        Wave dispW=root:curDispPanel 
    142160        Wave cw = root:coef_PeakPix2D 
     
    154172        // and the other to set the "common" values, some of which are based on the panel dimensions 
    155173 
    156         // panel-specific values 
    157         strswitch(str) 
    158                 case "FL": 
    159                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X 
    160                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y 
    161                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelX 
    162                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelY 
    163 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
    164                         break 
    165                 case "FR": 
    166                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X 
    167                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y 
    168                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelX 
    169                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelY 
    170 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    171                         break 
    172                 case "ML": 
    173                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X 
    174                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y 
    175                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelX 
    176                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelY 
    177 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    178                         break 
    179                 case "MR": 
    180                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X 
    181                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y 
    182                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelX 
    183                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelY 
    184 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    185                         break    
    186  
    187                 case "FT": 
    188                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X 
    189                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y 
    190                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelX 
    191                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelY 
    192 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    193                         break 
    194                 case "FB": 
    195                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X 
    196                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y 
    197                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelX 
    198                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelY 
    199 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
    200                         break 
    201                 case "MT": 
    202                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X 
    203                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y 
    204                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelX 
    205                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelY 
    206 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    207                         break 
    208                 case "MB": 
    209                         NVAR nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X 
    210                         NVAR nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y 
    211                         NVAR pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelX 
    212                         NVAR pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelY 
    213 //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
    214                         break    
    215                          
    216                 case "B": 
    217                         return(0)               //just exit 
    218                         break                                            
    219                 default: 
    220                         return(0)               //just exit 
    221         endswitch 
    222          
    223         wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     174// set the source of the data. not always VCALC anymore 
     175        String folder 
     176        ControlInfo popup_2 
     177        folder = S_Value 
     178 
     179        // TODO -- fix all of this mess 
     180        if(cmpstr(folder,"VCALC") == 0) 
     181                // panel-specific values 
     182                Variable VC_nPix_X = VCALC_get_nPix_X(str) 
     183                Variable VC_nPix_Y = VCALC_get_nPix_Y(str) 
     184                Variable VC_pixSize_X = VCALC_getPixSizeX(str) 
     185                Variable VC_pixSize_Y = VCALC_getPixSizeY(str) 
     186//              strswitch(str) 
     187//                      case "FL": 
     188//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X 
     189//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y 
     190//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelX 
     191//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_L_pixelY 
     192//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     193//                              break 
     194//                      case "FR": 
     195//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X 
     196//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y 
     197//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelX 
     198//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_R_pixelY 
     199//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     200//                              break 
     201//                      case "ML": 
     202//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X 
     203//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y 
     204//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelX 
     205//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_L_pixelY 
     206//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     207//                              break 
     208//                      case "MR": 
     209//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X 
     210//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y 
     211//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelX 
     212//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_R_pixelY 
     213//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     214//                              break    
     215//       
     216//                      case "FT": 
     217//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X 
     218//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y 
     219//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelX 
     220//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_T_pixelY 
     221//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     222//                              break 
     223//                      case "FB": 
     224//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X 
     225//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y 
     226//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelX 
     227//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gFront_B_pixelY 
     228//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Front:det_"+str) 
     229//                              break 
     230//                      case "MT": 
     231//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X 
     232//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y 
     233//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelX 
     234//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_T_pixelY 
     235//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     236//                              break 
     237//                      case "MB": 
     238//                              NVAR VC_nPix_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X 
     239//                              NVAR VC_nPix_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y 
     240//                              NVAR VC_pixSize_X = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelX 
     241//                              NVAR VC_pixSize_Y = root:Packages:NIST:VSANS:VCALC:gMiddle_B_pixelY 
     242//      //                      wave newW = $("root:Packages:NIST:VSANS:VCALC:Middle:det_"+str) 
     243//                              break    
     244//                               
     245//                      case "B": 
     246//                              return(0)               //just exit 
     247//                              break                                            
     248//                      default: 
     249//                              return(0)               //just exit 
     250//              endswitch 
     251         
     252        // if VCALC declare this way     
     253                wave newW = $("root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_"+str+":det_"+str) 
     254                nPix_X = VC_nPix_X 
     255                nPix_Y = VC_nPix_Y 
     256                pixSize_X = VC_pixSize_X 
     257                pixSize_Y = VC_pixSize_Y 
     258         
     259        else 
     260        // TODO: if real data, need new declaration w/ data as the wave name 
     261                wave newW = $("root:Packages:NIST:VSANS:"+folder+":entry:entry:instrument:detector_"+str+":data") 
     262 
     263                nPix_X = V_getDet_pixel_num_x(folder,str) 
     264                nPix_Y = V_getDet_pixel_num_Y(folder,str) 
     265                pixSize_X = V_getDet_x_pixel_size(folder,str)/10 
     266                pixSize_Y = V_getDet_y_pixel_size(folder,str)/10 
     267        endif 
     268         
    224269 
    225270        Variable scale = 5 
    226271         
    227272        // common values (panel position, etc) 
     273        // TODO -- units are absolute, based on pixels in cm. make sure this is always correct 
    228274        strswitch(str) 
    229275                case "FL": 
     
    313359 
    314360 
    315  
     361// TODO:  
     362// -- allow other model functions as needed. 
     363// 
     364// Function to plot the specified 2D model for the detector 
     365// 
    316366Function DetModelPopMenuProc(pa) : PopupMenuControl 
    317367        STRUCT WMPopupAction &pa 
     
    357407End 
    358408 
    359  
    360  
    361  
    362  
     409// 
     410// TODO -- currently hard-wired for the only fit function 
     411// 
     412Function WriteCtrButtonProc(ba) : ButtonControl 
     413        STRUCT WMButtonAction &ba 
     414 
     415        switch( ba.eventCode ) 
     416                case 2: // mouse up 
     417                        // click code here 
     418                        String detStr,fname 
     419                        Wave coefW=root:coef_PeakPix2D 
     420                         
     421                        ControlInfo popup_0 
     422                        detStr = S_Value 
     423                        ControlInfo popup_2 
     424                        fname = S_Value 
     425                         
     426                        V_putDet_beam_center_x(fname,detStr,coefW[9]) 
     427                        V_putDet_beam_center_y(fname,detStr,coefW[10]) 
     428 
     429                        break 
     430                case -1: // control being killed 
     431                        break 
     432        endswitch 
     433 
     434        return 0 
     435End 
     436 
     437 
     438 
     439// TODO 
     440// -- there is only a single fitting function available, and it's hard-wired 
     441// -- what values are held during the fitting are hard-wired 
     442// 
     443// 
     444// function to call the fit fucntion (2D) 
     445// 
    363446Function DetFitButtonProc(ba) : ButtonControl 
    364447        STRUCT WMButtonAction &ba 
     
    401484End 
    402485 
     486Function CtrTableButtonProc(ba) : ButtonControl 
     487        STRUCT WMButtonAction &ba 
     488 
     489        switch( ba.eventCode ) 
     490                case 2: // mouse up 
     491                        // click code here 
     492                         
     493                        V_BCtrTable() 
     494                         
     495                        break 
     496                case -1: // control being killed 
     497                        break 
     498        endswitch 
     499 
     500        return 0 
     501End 
     502 
     503Function WriteCtrTableButtonProc(ba) : ButtonControl 
     504        STRUCT WMButtonAction &ba 
     505 
     506        switch( ba.eventCode ) 
     507                case 2: // mouse up 
     508                        // click code here 
     509                         
     510                        V_BeamCtr_WriteTable() 
     511                         
     512                        break 
     513                case -1: // control being killed 
     514                        break 
     515        endswitch 
     516 
     517        return 0 
     518End 
    403519 
    404520// TODO 
    405521// -- some of this is hard-wired in 
    406 // -- this is still alll in terms of pixels, which still may not be what I want 
     522// -- this is still all in terms of pixels, which still may not be what I want 
    407523// -- the x-scale of the T/B panels is artificially compressed to "fake" 4mm per pixel in x-direction 
    408524// 
     
    447563end 
    448564 
     565// TODO 
     566// these are "nominal" beam center values in pixels for the default VCALC configuration 
     567// This function "restores" the data display to the "instrument" conditions where the panels overlap 
     568// and is intended to be a TRUE view of what the detectors see - that is - the peaks should appear as rings, 
     569// the view should be symmetric (if the real data is symmetric) 
     570// 
     571// -- this is currently linked to the Vdata panel 
     572// -- will need to remove the hard-wired values and get the proper values from the data 
     573// -- ?? will the "proper" values be in pixels or distance? All depends on how I display the data... 
     574// -- may want to keep the nominal scaling values around in case the proper values aren' in the file 
     575// 
    449576Function V_RestorePanels() 
    450577 
    451         V_RescaleToBeamCenter("RAW","MB",64,55) 
    452         V_RescaleToBeamCenter("RAW","MT",64,-8.7) 
    453         V_RescaleToBeamCenter("RAW","MR",-8.1,64) 
    454         V_RescaleToBeamCenter("RAW","ML",55,64) 
    455         V_RescaleToBeamCenter("RAW","FB",64,55) 
    456         V_RescaleToBeamCenter("RAW","FT",64,-8.7) 
    457         V_RescaleToBeamCenter("RAW","FR",-8.1,64) 
    458         V_RescaleToBeamCenter("RAW","FL",55,64) 
    459  
    460  
     578        String fname="" 
     579        String detStr="" 
     580        Variable ii,xCtr,yCtr 
     581 
     582//// this works if the proper centers are in the file - otherwise, it's a mess   
     583//      fname = "RAW" 
     584//      for(ii=0;ii<ItemsInList(ksDetectorListNoB);ii+=1) 
     585//              detStr = StringFromList(ii, ksDetectorListNoB, ";") 
     586//              xCtr = V_getDet_beam_center_x(fname,detStr) 
     587//              yCtr = V_getDet_beam_center_y(fname,detStr) 
     588//              V_RescaleToBeamCenter("RAW",detStr,xCtr,yCtr) 
     589//      endfor 
     590                 
     591                 
     592                // nominal values... better to use what's in the file 
     593// 
     594                V_RescaleToBeamCenter("RAW","MB",64,55) 
     595                V_RescaleToBeamCenter("RAW","MT",64,-8.7) 
     596                V_RescaleToBeamCenter("RAW","MR",-8.1,64) 
     597                V_RescaleToBeamCenter("RAW","ML",55,64) 
     598                V_RescaleToBeamCenter("RAW","FB",64,55) 
     599                V_RescaleToBeamCenter("RAW","FT",64,-8.7) 
     600                V_RescaleToBeamCenter("RAW","FR",-8.1,64) 
     601                V_RescaleToBeamCenter("RAW","FL",55,64) 
    461602        return(0) 
    462603end 
    463604 
     605// TODO 
     606// these are "spread out" values for the data panels 
     607// This view is meant to spread out the panels so there is (?Less) overlap so the panels can be  
     608// viewed a bit easier. Isolation may still be preferred for detailed work. 
     609// 
     610// -- this is currently linked to the Vdata panel 
     611// -- will need to remove the hard-wired values and get the proper values from the data 
     612// -- ?? will the "proper" values be in pixels or distance? All depends on how I display the data... 
     613// 
    464614Function V_SpreadOutPanels() 
    465615 
     
    474624        return(0) 
    475625end 
     626 
     627// function to display the beam center values for all of the detectors 
     628// opens a separate table with the detector label, and the XY values 
     629// ? Maybe list the XY pair in pixels and in real distance in the table 
     630// 
     631// TODO: 
     632// -- need a way to use this or another table? as input to put the new/fitted/derived 
     633//    beam center values into the data folders, and ultimately into the data files on disk 
     634// -- need read/Write for the XY in pixels, and in real-distance 
     635// -- where are the temporary waves to be located? root? 
     636// -- need way to access the Ctr_mm values 
     637Function V_BCtrTable() 
     638         
     639        // order of the panel names will match the constant string 
     640        //FT;FB;FL;FR;MT;MB;ML;MR;B; 
     641        Make/O/T/N=9 panelW 
     642        Make/O/D/N=9 xCtr_pix,yCtr_pix,xCtr_mm,yCtr_mm 
     643        DoWindow/F BCtrTable 
     644        if(V_flag == 0) 
     645                Edit/W=(547,621,1076,943)/N=BCtrTable panelW,xCtr_pix,yCtr_pix,xCtr_mm,yCtr_mm 
     646        endif 
     647         
     648        Variable ii 
     649        String detStr,fname 
     650         
     651        fname = "RAW" 
     652        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     653                detStr = StringFromList(ii, ksDetectorListAll, ";") 
     654                panelW[ii] = detStr 
     655                xCtr_pix[ii] = V_getDet_beam_center_x(fname,detStr) 
     656                yCtr_pix[ii] = V_getDet_beam_center_y(fname,detStr) 
     657                // TODO 
     658                // and now the mm values 
     659                 
     660        endfor 
     661        return(0) 
     662End 
     663 
     664// 
     665// to write the new beam center values to a file on disk: 
     666// V_writeDet_beam_center_x(fname,detStr,val) 
     667// 
     668// to write to a local WORK folder 
     669// V_putDet_beam_center_x(fname,detStr,val) 
     670// 
     671Function V_BeamCtr_WriteTable() 
     672 
     673        String folder 
     674         
     675        Variable ii 
     676        String detStr,fname 
     677         
     678        Wave xCtr_pix = root:xCtr_pix 
     679        Wave yCtr_pix = root:yCtr_pix 
     680        Wave/T panelW = root:PanelW 
     681         
     682        ControlInfo popup_2 
     683        folder = S_Value 
     684         
     685        fname = folder 
     686        for(ii=0;ii<ItemsInList(ksDetectorListAll);ii+=1) 
     687//              detStr = StringFromList(ii, ksDetectorListAll, ";") 
     688                detStr = panelW[ii] 
     689                V_putDet_beam_center_x(fname,detStr,xCtr_pix[ii]) 
     690                V_putDet_beam_center_y(fname,detStr,yCtr_pix[ii]) 
     691                 
     692                // TODO 
     693                // and now the mm values 
     694                 
     695        endfor 
     696        return(0) 
     697         
     698End 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_UtilityProcedures.ipf

    r982 r983  
    181181        String type 
    182182 
    183         SetDataFolder root:Packages:NIST:VSANS:VCALC 
    184                          
    185         strswitch(type)  
    186                 case "FL": 
    187                         NVAR pixSizeX = gFront_L_pixelX 
    188                         break 
    189                 case "FR":               
    190                         NVAR pixSizeX = gFront_R_pixelX 
    191                         break 
    192                 case "FT": 
    193                         NVAR pixSizeX = gFront_T_pixelX 
    194                         break    
    195                 case "FB":               
    196                         NVAR pixSizeX = gFront_B_pixelX 
    197                         break 
    198                          
    199                 case "ML": 
    200                         NVAR pixSizeX = gMiddle_L_pixelX 
    201                         break 
    202                 case "MR":               
    203                         NVAR pixSizeX = gMiddle_R_pixelX 
    204                         break 
    205                 case "MT": 
    206                         NVAR pixSizeX = gMiddle_T_pixelX 
    207                         break    
    208                 case "MB":               
    209                         NVAR pixSizeX = gMiddle_B_pixelX 
    210                         break 
    211                                                  
    212                 case "B":                
    213                         NVAR pixSizeX = gBack_pixelX 
    214                         break 
    215                          
    216                 default:                                                         
    217                         Print "Detector type mismatch in        V_getPixSizeX(type)" 
    218                         setDataFolder root: 
    219                         return(NaN) 
    220         endswitch 
    221  
    222         setDataFolder root: 
     183        Variable pixSizeX = V_getDet_x_pixel_size("VCALC",type) 
     184 
     185//      SetDataFolder root:Packages:NIST:VSANS:VCALC 
     186//                       
     187//      strswitch(type)  
     188//              case "FL": 
     189//                      NVAR pixSizeX = gFront_L_pixelX 
     190//                      break 
     191//              case "FR":               
     192//                      NVAR pixSizeX = gFront_R_pixelX 
     193//                      break 
     194//              case "FT": 
     195//                      NVAR pixSizeX = gFront_T_pixelX 
     196//                      break    
     197//              case "FB":               
     198//                      NVAR pixSizeX = gFront_B_pixelX 
     199//                      break 
     200//                       
     201//              case "ML": 
     202//                      NVAR pixSizeX = gMiddle_L_pixelX 
     203//                      break 
     204//              case "MR":               
     205//                      NVAR pixSizeX = gMiddle_R_pixelX 
     206//                      break 
     207//              case "MT": 
     208//                      NVAR pixSizeX = gMiddle_T_pixelX 
     209//                      break    
     210//              case "MB":               
     211//                      NVAR pixSizeX = gMiddle_B_pixelX 
     212//                      break 
     213//                                               
     214//              case "B":                
     215//                      NVAR pixSizeX = gBack_pixelX 
     216//                      break 
     217//                       
     218//              default:                                                         
     219//                      Print "Detector type mismatch in        V_getPixSizeX(type)" 
     220//                      setDataFolder root: 
     221//                      return(NaN) 
     222//      endswitch 
     223// 
     224//      setDataFolder root: 
    223225                 
    224226        return(pixSizeX) 
     
    229231        String type 
    230232 
    231         SetDataFolder root:Packages:NIST:VSANS:VCALC 
    232                          
    233         strswitch(type)  
    234                 case "FL": 
    235                         NVAR pixSizeY = gFront_L_pixelY 
    236                         break 
    237                 case "FR":               
    238                         NVAR pixSizeY = gFront_R_pixelY 
    239                         break 
    240                 case "FT": 
    241                         NVAR pixSizeY = gFront_T_pixelY 
    242                         break    
    243                 case "FB":               
    244                         NVAR pixSizeY = gFront_B_pixelY 
    245                         break 
    246                          
    247                 case "ML": 
    248                         NVAR pixSizeY = gMiddle_L_pixelY 
    249                         break 
    250                 case "MR":               
    251                         NVAR pixSizeY = gMiddle_R_pixelY 
    252                         break 
    253                 case "MT": 
    254                         NVAR pixSizeY = gMiddle_T_pixelY 
    255                         break    
    256                 case "MB":               
    257                         NVAR pixSizeY = gMiddle_B_pixelY 
    258                         break 
    259                                                  
    260                 case "B":                
    261                         NVAR pixSizeY = gBack_pixelY 
    262                         break 
    263                          
    264                 default:                                                         
    265                         Print "Detector type mismatch in        V_getPixSizeY(type)" 
    266                         SetDataFolder root: 
    267                         return(NaN) 
    268         endswitch 
    269  
    270         setDatafolder root: 
     233        Variable pixSizeY = V_getDet_y_pixel_size("VCALC",type) 
     234         
     235//      SetDataFolder root:Packages:NIST:VSANS:VCALC 
     236//                       
     237//      strswitch(type)  
     238//              case "FL": 
     239//                      NVAR pixSizeY = gFront_L_pixelY 
     240//                      break 
     241//              case "FR":               
     242//                      NVAR pixSizeY = gFront_R_pixelY 
     243//                      break 
     244//              case "FT": 
     245//                      NVAR pixSizeY = gFront_T_pixelY 
     246//                      break    
     247//              case "FB":               
     248//                      NVAR pixSizeY = gFront_B_pixelY 
     249//                      break 
     250//                       
     251//              case "ML": 
     252//                      NVAR pixSizeY = gMiddle_L_pixelY 
     253//                      break 
     254//              case "MR":               
     255//                      NVAR pixSizeY = gMiddle_R_pixelY 
     256//                      break 
     257//              case "MT": 
     258//                      NVAR pixSizeY = gMiddle_T_pixelY 
     259//                      break    
     260//              case "MB":               
     261//                      NVAR pixSizeY = gMiddle_B_pixelY 
     262//                      break 
     263//                                               
     264//              case "B":                
     265//                      NVAR pixSizeY = gBack_pixelY 
     266//                      break 
     267//                       
     268//              default:                                                         
     269//                      Print "Detector type mismatch in        V_getPixSizeY(type)" 
     270//                      SetDataFolder root: 
     271//                      return(NaN) 
     272//      endswitch 
     273// 
     274//      setDatafolder root: 
    271275                 
    272276        return(pixSizeY) 
     
    278282        String type 
    279283 
    280         SetDataFolder root:Packages:NIST:VSANS:VCALC 
    281                          
    282         strswitch(type)  
    283                 case "FL": 
    284                         NVAR nPix = gFront_L_nPix_X 
    285                         break 
    286                 case "FR":               
    287                         NVAR nPix = gFront_R_nPix_X 
    288                         break 
    289                 case "FT": 
    290                         NVAR nPix = gFront_T_nPix_X 
    291                         break    
    292                 case "FB":               
    293                         NVAR nPix = gFront_B_nPix_X 
    294                         break 
    295                          
    296                 case "ML": 
    297                         NVAR nPix = gMiddle_L_nPix_X 
    298                         break 
    299                 case "MR":               
    300                         NVAR nPix = gMiddle_R_nPix_X 
    301                         break 
    302                 case "MT": 
    303                         NVAR nPix = gMiddle_T_nPix_X 
    304                         break    
    305                 case "MB":               
    306                         NVAR nPix = gMiddle_B_nPix_X 
    307                         break 
    308                                                  
    309                 case "B":                
    310                         NVAR nPix = gBack_nPix_X 
    311                         break 
    312                          
    313                 default:                                                         
    314                         Print "Detector type mismatch in        VCALC_get_nPix_X(type)" 
    315                         SetDataFolder root: 
    316                         return(NaN) 
    317         endswitch 
    318  
    319         setDataFolder root: 
     284        Variable nPix = V_getDet_pixel_num_x("VCALC",type) 
     285         
     286//      SetDataFolder root:Packages:NIST:VSANS:VCALC 
     287//                       
     288//      strswitch(type)  
     289//              case "FL": 
     290//                      NVAR nPix = gFront_L_nPix_X 
     291//                      break 
     292//              case "FR":               
     293//                      NVAR nPix = gFront_R_nPix_X 
     294//                      break 
     295//              case "FT": 
     296//                      NVAR nPix = gFront_T_nPix_X 
     297//                      break    
     298//              case "FB":               
     299//                      NVAR nPix = gFront_B_nPix_X 
     300//                      break 
     301//                       
     302//              case "ML": 
     303//                      NVAR nPix = gMiddle_L_nPix_X 
     304//                      break 
     305//              case "MR":               
     306//                      NVAR nPix = gMiddle_R_nPix_X 
     307//                      break 
     308//              case "MT": 
     309//                      NVAR nPix = gMiddle_T_nPix_X 
     310//                      break    
     311//              case "MB":               
     312//                      NVAR nPix = gMiddle_B_nPix_X 
     313//                      break 
     314//                                               
     315//              case "B":                
     316//                      NVAR nPix = gBack_nPix_X 
     317//                      break 
     318//                       
     319//              default:                                                         
     320//                      Print "Detector type mismatch in        VCALC_get_nPix_X(type)" 
     321//                      SetDataFolder root: 
     322//                      return(NaN) 
     323//      endswitch 
     324// 
     325//      setDataFolder root: 
    320326                 
    321327        return(nPix) 
     
    326332        String type 
    327333 
    328         SetDataFolder root:Packages:NIST:VSANS:VCALC 
    329                          
    330         strswitch(type)  
    331                 case "FL": 
    332                         NVAR nPix = gFront_L_nPix_Y 
    333                         break 
    334                 case "FR":               
    335                         NVAR nPix = gFront_R_nPix_Y 
    336                         break 
    337                 case "FT": 
    338                         NVAR nPix = gFront_T_nPix_Y 
    339                         break    
    340                 case "FB":               
    341                         NVAR nPix = gFront_B_nPix_Y 
    342                         break 
    343                          
    344                 case "ML": 
    345                         NVAR nPix = gMiddle_L_nPix_Y 
    346                         break 
    347                 case "MR":               
    348                         NVAR nPix = gMiddle_R_nPix_Y 
    349                         break 
    350                 case "MT": 
    351                         NVAR nPix = gMiddle_T_nPix_Y 
    352                         break    
    353                 case "MB":               
    354                         NVAR nPix = gMiddle_B_nPix_Y 
    355                         break 
    356                                                  
    357                 case "B":                
    358                         NVAR nPix = gBack_nPix_Y 
    359                         break 
    360                          
    361                 default:                                                         
    362                         Print "Detector type mismatch in        VCALC_get_nPix_Y(type)" 
    363                         SetDataFolder root: 
    364                         return(NaN) 
    365         endswitch 
    366  
    367         SetDataFolder root: 
     334        Variable nPix = V_getDet_pixel_num_y("VCALC",type) 
     335 
     336//      SetDataFolder root:Packages:NIST:VSANS:VCALC 
     337//                       
     338//      strswitch(type)  
     339//              case "FL": 
     340//                      NVAR nPix = gFront_L_nPix_Y 
     341//                      break 
     342//              case "FR":               
     343//                      NVAR nPix = gFront_R_nPix_Y 
     344//                      break 
     345//              case "FT": 
     346//                      NVAR nPix = gFront_T_nPix_Y 
     347//                      break    
     348//              case "FB":               
     349//                      NVAR nPix = gFront_B_nPix_Y 
     350//                      break 
     351//                       
     352//              case "ML": 
     353//                      NVAR nPix = gMiddle_L_nPix_Y 
     354//                      break 
     355//              case "MR":               
     356//                      NVAR nPix = gMiddle_R_nPix_Y 
     357//                      break 
     358//              case "MT": 
     359//                      NVAR nPix = gMiddle_T_nPix_Y 
     360//                      break    
     361//              case "MB":               
     362//                      NVAR nPix = gMiddle_B_nPix_Y 
     363//                      break 
     364//                                               
     365//              case "B":                
     366//                      NVAR nPix = gBack_nPix_Y 
     367//                      break 
     368//                       
     369//              default:                                                         
     370//                      Print "Detector type mismatch in        VCALC_get_nPix_Y(type)" 
     371//                      SetDataFolder root: 
     372//                      return(NaN) 
     373//      endswitch 
     374// 
     375//      SetDataFolder root: 
    368376                 
    369377        return(nPix) 
     
    419427/////////// procedure to concatenate I(q) files into a single file 
    420428// 
    421 // currently, no rescaling is done, just crude concatentate and sort 
    422 // 
     429// currently, no rescaling is done, no trimming is done, just crude concatentate and sort 
     430// 
     431// TODO 
     432// -- all of this needs to be done. There's nothing here... 
     433// 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf

    r982 r983  
    673673///// FRONT DETECTOR BANKS 
    674674// dimensions for the detector banks (then get them in the drawing functions) 
     675// Width and height are not part of the Nexus file definition, but are needed for VCALC drawing 
     676// so keep them as variables 
    675677        Variable/G gFront_LR_w = 384            //front bank, nominal LR panel width (mm) 
    676678        Variable/G gFront_LR_h = 1000 
     
    679681 
    680682// SDD offset of T/B (decide on units??) 
     683// for the Nexus file, the detector distance should already be corrected for the "setback" 
     684// of the T/B panels. keep as VCALC variable 
    681685        Variable/G gFront_SDDOffset = 300                       // (mm) 
    682686         
     687         
    683688// detector resolution (xy for each bank!) 
    684         Variable/G gFront_L_pixelX = 0.84                       // (cm)         these tubes are vertical 8.4 mm spacing (JGB 2/2106) 
    685         Variable/G gFront_L_pixelY = 0.8                        // (cm)         //!! now 8 mm, since nPix=128, rather than 256 
    686         Variable/G gFront_R_pixelX = 0.84                       // (cm) 
    687         Variable/G gFront_R_pixelY = 0.8                        // (cm) 
    688          
    689         Variable/G gFront_T_pixelX = 0.4                        // (cm)         these tubes are horizontal 
    690         Variable/G gFront_T_pixelY = 0.84                       // (cm) 
    691         Variable/G gFront_B_pixelX = 0.4                        // (cm) 
    692         Variable/G gFront_B_pixelY = 0.84                       // (cm) 
     689        Make/O/D/N=1 :entry:entry:instrument:detector_FL:x_pixel_size = 0.84            // (cm)         these tubes are vertical 8.4 mm x-spacing (JGB 2/2106) 
     690        Make/O/D/N=1 :entry:entry:instrument:detector_FL:y_pixel_size = 0.8             // (cm)         //!! now 8 mm, since nPix=128, rather than 256 
     691        Make/O/D/N=1 :entry:entry:instrument:detector_FR:x_pixel_size = 0.84 
     692        Make/O/D/N=1 :entry:entry:instrument:detector_FR:y_pixel_size = 0.8 
     693        //T/B 
     694        Make/O/D/N=1 :entry:entry:instrument:detector_FT:x_pixel_size = 0.4             //these tubes are horizontal 
     695        Make/O/D/N=1 :entry:entry:instrument:detector_FT:y_pixel_size = 0.84 
     696        Make/O/D/N=1 :entry:entry:instrument:detector_FB:x_pixel_size = 0.4 
     697        Make/O/D/N=1 :entry:entry:instrument:detector_FB:y_pixel_size = 0.84 
     698         
     699//      Variable/G gFront_L_pixelX = 0.84                        
     700//      Variable/G gFront_L_pixelY = 0.8                         
     701//      Variable/G gFront_R_pixelX = 0.84                       // (cm) 
     702//      Variable/G gFront_R_pixelY = 0.8                        // (cm) 
     703//       
     704//      Variable/G gFront_T_pixelX = 0.4                        // (cm)         these tubes are horizontal 
     705//      Variable/G gFront_T_pixelY = 0.84                       // (cm) 
     706//      Variable/G gFront_B_pixelX = 0.4                        // (cm) 
     707//      Variable/G gFront_B_pixelY = 0.84                       // (cm) 
    693708         
    694709// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here) 
    695         Variable/G gFront_L_nPix_X = 48         // == number of tubes 
    696         Variable/G gFront_L_nPix_Y = 128                // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
    697         Variable/G gFront_R_nPix_X = 48         // == number of tubes 
    698         Variable/G gFront_R_nPix_Y = 128                // == pixels in vertical direction  
    699         Variable/G gFront_T_nPix_X = 128                // == pixels in horizontal direction 
    700         Variable/G gFront_T_nPix_Y = 48         // == number of tubes 
    701         Variable/G gFront_B_nPix_X = 128                // == pixels in horizontal direction 
    702         Variable/G gFront_B_nPix_Y = 48         // == number of tubes 
     710        Make/O/D/N=1 :entry:entry:instrument:detector_FL:pixel_num_x = 48       // == number of tubes 
     711        Make/O/D/N=1 :entry:entry:instrument:detector_FL:pixel_num_y = 128      // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     712        Make/O/D/N=1 :entry:entry:instrument:detector_FR:pixel_num_x = 48       // == number of tubes 
     713        Make/O/D/N=1 :entry:entry:instrument:detector_FR:pixel_num_y = 128      // == pixels in vertical direction  
     714        Make/O/D/N=1 :entry:entry:instrument:detector_FT:pixel_num_x = 128      // == pixels in horizontal direction 
     715        Make/O/D/N=1 :entry:entry:instrument:detector_FT:pixel_num_y = 48       // == number of tubes 
     716        Make/O/D/N=1 :entry:entry:instrument:detector_FB:pixel_num_x = 128      // == pixels in horizontal direction 
     717        Make/O/D/N=1 :entry:entry:instrument:detector_FB:pixel_num_y = 48       // == number of tubes 
     718 
     719//      Variable/G gFront_L_nPix_X = 48         // == number of tubes 
     720//      Variable/G gFront_L_nPix_Y = 128                // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     721//      Variable/G gFront_R_nPix_X = 48         // == number of tubes 
     722//      Variable/G gFront_R_nPix_Y = 128                // == pixels in vertical direction  
     723//      Variable/G gFront_T_nPix_X = 128                // == pixels in horizontal direction 
     724//      Variable/G gFront_T_nPix_Y = 48         // == number of tubes 
     725//      Variable/G gFront_B_nPix_X = 128                // == pixels in horizontal direction 
     726//      Variable/G gFront_B_nPix_Y = 48         // == number of tubes 
    703727 
    704728 
     
    706730 
    707731///// MIDDLE DETECTOR BANKS 
     732// Width and height are not part of the Nexus file definition, but are needed for VCALC drawing 
     733// so keep them as variables 
    708734        Variable/G gMiddle_LR_w = 384           //middle bank, nominal LR panel width (mm) 
    709735        Variable/G gMiddle_LR_h = 1000 
     
    711737        Variable/G gMiddle_TB_h = 384 
    712738// SDD offset of T/B (decide on units??) 
     739// for the Nexus file, the detector distance should already be corrected for the "setback" 
     740// of the T/B panels. keep as VCALC variable 
    713741        Variable/G gMiddle_SDDOffset = 300                      // (mm) 
    714742         
    715743// detector resolution (xy for each bank!) 
    716         Variable/G gMiddle_L_pixelX = 0.84              // (cm)         these tubes are vertical 
    717         Variable/G gMiddle_L_pixelY = 0.8               // (cm) 
    718         Variable/G gMiddle_R_pixelX = 0.84              // (cm) 
    719         Variable/G gMiddle_R_pixelY = 0.8               // (cm) 
    720          
    721         Variable/G gMiddle_T_pixelX = 0.4                       // (cm)         these tubes are horizontal 
    722         Variable/G gMiddle_T_pixelY = 0.84                      // (cm) 
    723         Variable/G gMiddle_B_pixelX = 0.4                       // (cm) 
    724         Variable/G gMiddle_B_pixelY = 0.84              // (cm) 
     744        Make/O/D/N=1 :entry:entry:instrument:detector_ML:x_pixel_size = 0.84            // (cm)         these tubes are vertical 8.4 mm x-spacing (JGB 2/2106) 
     745        Make/O/D/N=1 :entry:entry:instrument:detector_ML:y_pixel_size = 0.8             // (cm)         //!! now 8 mm, since nPix=128, rather than 256 
     746        Make/O/D/N=1 :entry:entry:instrument:detector_MR:x_pixel_size = 0.84 
     747        Make/O/D/N=1 :entry:entry:instrument:detector_MR:y_pixel_size = 0.8 
     748        //T/B 
     749        Make/O/D/N=1 :entry:entry:instrument:detector_MT:x_pixel_size = 0.4             //these tubes are horizontal 
     750        Make/O/D/N=1 :entry:entry:instrument:detector_MT:y_pixel_size = 0.84 
     751        Make/O/D/N=1 :entry:entry:instrument:detector_MB:x_pixel_size = 0.4 
     752        Make/O/D/N=1 :entry:entry:instrument:detector_MB:y_pixel_size = 0.84 
     753 
     754//      Variable/G gMiddle_L_pixelX = 0.84              // (cm)         these tubes are vertical 
     755//      Variable/G gMiddle_L_pixelY = 0.8               // (cm) 
     756//      Variable/G gMiddle_R_pixelX = 0.84              // (cm) 
     757//      Variable/G gMiddle_R_pixelY = 0.8               // (cm) 
     758//       
     759//      Variable/G gMiddle_T_pixelX = 0.4                       // (cm)         these tubes are horizontal 
     760//      Variable/G gMiddle_T_pixelY = 0.84                      // (cm) 
     761//      Variable/G gMiddle_B_pixelX = 0.4                       // (cm) 
     762//      Variable/G gMiddle_B_pixelY = 0.84              // (cm) 
    725763 
    726764// number of pixels in each bank (this can be modified at acquisition time, so it must be adjustable here) 
    727         Variable/G gMiddle_L_nPix_X = 48                // == number of tubes 
    728         Variable/G gMiddle_L_nPix_Y = 128               // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
    729         Variable/G gMiddle_R_nPix_X = 48                // == number of tubes 
    730         Variable/G gMiddle_R_nPix_Y = 128               // == pixels in vertical direction  
    731         Variable/G gMiddle_T_nPix_X = 128               // == pixels in horizontal direction 
    732         Variable/G gMiddle_T_nPix_Y = 48                // == number of tubes 
    733         Variable/G gMiddle_B_nPix_X = 128               // == pixels in horizontal direction 
    734         Variable/G gMiddle_B_nPix_Y = 48                // == number of tubes 
     765        Make/O/D/N=1 :entry:entry:instrument:detector_ML:pixel_num_x = 48       // == number of tubes 
     766        Make/O/D/N=1 :entry:entry:instrument:detector_ML:pixel_num_y = 128      // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     767        Make/O/D/N=1 :entry:entry:instrument:detector_MR:pixel_num_x = 48       // == number of tubes 
     768        Make/O/D/N=1 :entry:entry:instrument:detector_MR:pixel_num_y = 128      // == pixels in vertical direction  
     769        Make/O/D/N=1 :entry:entry:instrument:detector_MT:pixel_num_x = 128      // == pixels in horizontal direction 
     770        Make/O/D/N=1 :entry:entry:instrument:detector_MT:pixel_num_y = 48       // == number of tubes 
     771        Make/O/D/N=1 :entry:entry:instrument:detector_MB:pixel_num_x = 128      // == pixels in horizontal direction 
     772        Make/O/D/N=1 :entry:entry:instrument:detector_MB:pixel_num_y = 48       // == number of tubes 
     773         
     774//      Variable/G gMiddle_L_nPix_X = 48                // == number of tubes 
     775//      Variable/G gMiddle_L_nPix_Y = 128               // == pixels in vertical direction (was 256, John says likely will run @ 128 9/2015) 
     776//      Variable/G gMiddle_R_nPix_X = 48                // == number of tubes 
     777//      Variable/G gMiddle_R_nPix_Y = 128               // == pixels in vertical direction  
     778//      Variable/G gMiddle_T_nPix_X = 128               // == pixels in horizontal direction 
     779//      Variable/G gMiddle_T_nPix_Y = 48                // == number of tubes 
     780//      Variable/G gMiddle_B_nPix_X = 128               // == pixels in horizontal direction 
     781//      Variable/G gMiddle_B_nPix_Y = 48                // == number of tubes 
    735782 
    736783 
     
    741788        Variable/G gBack_w = 320                                //w and h for the back detector, (mm) 
    742789        Variable/G gBack_h = 320 
    743         Variable/G gBack_pixelX = 0.1           // 1mm resolution (units of cm here) 
    744         Variable/G gBack_pixelY = 0.1 
    745         Variable/G gBack_nPix_X = 320           // detector pixels in x-direction 
    746         Variable/G gBack_nPix_Y = 320    
     790         
     791        Make/O/D/N=1 :entry:entry:instrument:detector_B:x_pixel_size = 0.1              // 1mm resolution (units of cm here) 
     792        Make/O/D/N=1 :entry:entry:instrument:detector_B:y_pixel_size = 0.1               
     793//      Variable/G gBack_pixelX = 0.1            
     794//      Variable/G gBack_pixelY = 0.1 
     795 
     796        Make/O/D/N=1 :entry:entry:instrument:detector_B:pixel_num_x = 320       // detector pixels in x-direction 
     797        Make/O/D/N=1 :entry:entry:instrument:detector_B:pixel_num_y = 320        
     798//      Variable/G gBack_nPix_X = 320            
     799//      Variable/G gBack_nPix_Y = 320    
    747800 
    748801 
     
    754807 
    755808        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_FL 
    756         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_X,root:Packages:NIST:VSANS:VCALC:gFront_L_nPix_Y) det_FL 
     809        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_FL 
    757810        Duplicate/O det_FL qTot_FL,qx_FL,qy_FL,qz_FL 
    758811 
    759812        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_FR 
    760         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_X,root:Packages:NIST:VSANS:VCALC:gFront_R_nPix_Y) det_FR 
     813        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_FR 
    761814        Duplicate/O det_FR qTot_FR,qx_FR,qy_FR,qz_FR 
    762815 
    763816        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_FT 
    764         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_X,root:Packages:NIST:VSANS:VCALC:gFront_T_nPix_Y) det_FT 
     817        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_FT 
    765818        Duplicate/O det_FT qTot_FT,qx_FT,qy_FT,qz_FT 
    766819         
    767820        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_FB 
    768         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_X,root:Packages:NIST:VSANS:VCALC:gFront_B_nPix_Y) det_FB 
     821        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_FB 
    769822        Duplicate/O det_FB qTot_FB,qx_FB,qy_FB,qz_FB 
    770823 
     
    775828 
    776829        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_ML 
    777         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_X,root:Packages:NIST:VSANS:VCALC:gMiddle_L_nPix_Y) det_ML 
     830        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_ML 
    778831        Duplicate/O det_ML qTot_ML,qx_ML,qy_ML,qz_ML 
    779832         
    780833        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_MR 
    781         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_X,root:Packages:NIST:VSANS:VCALC:gMiddle_R_nPix_Y) det_MR 
     834        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_MR 
    782835        Duplicate/O det_MR qTot_MR,qx_MR,qy_MR,qz_MR 
    783836 
    784837        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_MT 
    785         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_X,root:Packages:NIST:VSANS:VCALC:gMiddle_T_nPix_Y) det_MT 
     838        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_MT 
    786839        Duplicate/O det_MT qTot_MT,qx_MT,qy_MT,qz_MT 
    787840         
    788841        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_MB 
    789         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_X,root:Packages:NIST:VSANS:VCALC:gMiddle_B_nPix_Y) det_MB 
     842        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_MB 
    790843        Duplicate/O det_MB qTot_MB,qx_MB,qy_MB,qz_MB 
    791844 
     
    795848 
    796849        SetDataFolder root:Packages:NIST:VSANS:VCALC:entry:entry:instrument:detector_B 
    797         Make/O/D/N=(root:Packages:NIST:VSANS:VCALC:gBack_nPix_X,root:Packages:NIST:VSANS:VCALC:gBack_nPix_Y) det_B 
     850        Make/O/D/N=(pixel_num_x[0],pixel_num_y[0]) det_B 
    798851        Duplicate/O det_B qTot_B,qx_B,qy_B,qz_B 
    799852 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_RW_Utils.ipf

    r982 r983  
    544544//     wave as passed in, or if it will only write as DP. 
    545545// -- do I need to write separate functions for real, integer, etc.? 
     546// -- the lines to create a missing group have been commented out to avoid filling 
     547//    in missing fields that should have been generated by the data writer. Need to make 
     548//    a separate function that will write and generate if needed, and use this in specific cases 
     549//    only if I really have to force it. 
    546550//       
    547551// -x change the /P=home to the user-defined data path (catPathName)             
     
    578582//              groupName = "/" + NXentry_name + groupName 
    579583                Print "groupName = ",groupName 
     584                HDF5OpenGroup /Z fileID , groupName, groupID 
     585 
     586                if(!groupID) 
     587                // don't create the group if the name isn't right -- throw up an error 
     588                        //HDF5CreateGroup /Z fileID, groupName, groupID 
     589                        err = 1 
     590                        HDF5CloseFile /Z fileID 
     591                        DoAlert 0, "HDF5 group does not exist "+groupName+varname 
     592                        return(err) 
     593                else 
     594                        // get attributes and save them 
     595                        //HDF5ListAttributes /Z fileID, groupName    this is returning null. expect it to return semicolon delimited list of attributes  
     596                        //Wave attributes = S_HDF5ListAttributes 
     597                endif 
     598         
     599                HDF5SaveData /O /Z /IGOR=0 wav, groupID, varName 
     600                if (V_flag != 0) 
     601                        err = 1 
     602                        abort "Cannot save wave to HDF5 dataset " + varName 
     603                endif    
     604                 
     605                 
     606                //attributes - something could be added here as optional parameters and flagged 
     607//              String attributes = "units" 
     608//              Make/O/T/N=1 tmp 
     609//              tmp[0] = "dimensionless" 
     610//              HDF5SaveData /O /Z /IGOR=0 /A=attributes tmp, groupID, varName 
     611//              if (V_flag != 0) 
     612//                      err = 1 
     613//                      abort "Cannot save attributes to HDF5 dataset" 
     614//              endif    
     615        catch 
     616 
     617        endtry 
     618 
     619// it is not necessary to close the group here. HDF5CloseFile will close the group as well       
     620        if(groupID) 
     621                HDF5CloseGroup /Z groupID 
     622        endif 
     623         
     624        if(fileID) 
     625                HDF5CloseFile /Z fileID  
     626        endif 
     627 
     628        setDataFolder $cDF 
     629        return err 
     630end 
     631 
     632//Write Wave 'wav' to hdf5 file 'fname' 
     633//Based on code from ANSTO (N. Hauser. nha 8/1/09) 
     634// 
     635// TODO 
     636// 
     637// -x change the /P=home to the user-defined data path (catPathName)             
     638// 
     639Function V_WriteTextWaveToHDF(fname, groupName, varName, wav) 
     640        String fname, groupName, varName 
     641        Wave/T wav 
     642         
     643        variable err=0, fileID,groupID 
     644        String cDF = getDataFolder(1), temp 
     645        String NXentry_name 
     646         
     647        try      
     648                HDF5OpenFile/P=catPathName /Z fileID  as fname  //open file read-write 
     649                if(!fileID) 
     650                        err = 1 
     651                        abort "HDF5 file does not exist" 
     652                endif 
     653                 
     654                //get the NXentry node name 
     655                HDF5ListGroup /TYPE=1 fileID, "/" 
     656                //remove trailing ; from S_HDF5ListGroup 
     657                 
     658                Print "S_HDF5ListGroup = ",S_HDF5ListGroup 
     659                 
     660                NXentry_name = S_HDF5ListGroup 
     661                NXentry_name = ReplaceString(";",NXentry_name,"") 
     662                if(strsearch(NXentry_name,":",0)!=-1) //more than one entry under the root node 
     663                        err = 1 
     664                        abort "More than one entry under the root node. Ambiguous" 
     665                endif  
     666 
     667                //concatenate NXentry node name and groupName 
     668                // SRK - NOV2015 - dropped this and require the full group name passed in 
     669//              groupName = "/" + NXentry_name + groupName 
     670                Print "groupName = ",groupName 
     671 
    580672                HDF5OpenGroup /Z fileID , groupName, groupID 
    581673 
     
    612704 
    613705        endtry 
    614  
    615 // it is not necessary to close the group here. HDF5CloseFile will close the group as well       
     706         
    616707        if(groupID) 
    617708                HDF5CloseGroup /Z groupID 
     
    626717end 
    627718 
    628 //Write Wave 'wav' to hdf5 file 'fname' 
    629 //Based on code from ANSTO (N. Hauser. nha 8/1/09) 
    630 // 
    631 // TODO 
    632 // 
    633 // -x change the /P=home to the user-defined data path (catPathName)             
    634 // 
    635 Function V_WriteTextWaveToHDF(fname, groupName, varName, wav) 
    636         String fname, groupName, varName 
    637         Wave/T wav 
    638          
    639         variable err=0, fileID,groupID 
    640         String cDF = getDataFolder(1), temp 
    641         String NXentry_name 
    642          
    643         try      
    644                 HDF5OpenFile/P=catPathName /Z fileID  as fname  //open file read-write 
    645                 if(!fileID) 
    646                         err = 1 
    647                         abort "HDF5 file does not exist" 
    648                 endif 
    649                  
    650                 //get the NXentry node name 
    651                 HDF5ListGroup /TYPE=1 fileID, "/" 
    652                 //remove trailing ; from S_HDF5ListGroup 
    653                  
    654                 Print "S_HDF5ListGroup = ",S_HDF5ListGroup 
    655                  
    656                 NXentry_name = S_HDF5ListGroup 
    657                 NXentry_name = ReplaceString(";",NXentry_name,"") 
    658                 if(strsearch(NXentry_name,":",0)!=-1) //more than one entry under the root node 
    659                         err = 1 
    660                         abort "More than one entry under the root node. Ambiguous" 
    661                 endif  
    662  
    663                 //concatenate NXentry node name and groupName 
    664                 // SRK - NOV2015 - dropped this and require the full group name passed in 
    665 //              groupName = "/" + NXentry_name + groupName 
    666                 Print "groupName = ",groupName 
    667  
    668                 HDF5OpenGroup /Z fileID , groupName, groupID 
    669  
    670                 if(!groupID) 
    671                 // don't create the group it the name isn't right -- throw up an error 
    672                         //HDF5CreateGroup /Z fileID, groupName, groupID 
    673                         err = 1 
    674                         HDF5CloseFile /Z fileID 
    675                         DoAlert 0, "HDF5 group does not exist "+groupName+varname 
    676                         return(err) 
    677                 else 
    678                         // get attributes and save them 
    679                         //HDF5ListAttributes /Z fileID, groupName    this is returning null. expect it to return semicolon delimited list of attributes  
    680                         //Wave attributes = S_HDF5ListAttributes 
    681                 endif 
    682          
    683                 HDF5SaveData /O /Z /IGOR=0 wav, groupID, varName 
    684                 if (V_flag != 0) 
    685                         err = 1 
    686                         abort "Cannot save wave to HDF5 dataset " + varName 
    687                 endif    
    688                  
    689                  
    690                 //attributes - something could be added here as optional parameters and flagged 
    691 //              String attributes = "units" 
    692 //              Make/O/T/N=1 tmp 
    693 //              tmp[0] = "dimensionless" 
    694 //              HDF5SaveData /O /Z /IGOR=0 /A=attributes tmp, groupID, varName 
    695 //              if (V_flag != 0) 
    696 //                      err = 1 
    697 //                      abort "Cannot save attributes to HDF5 dataset" 
    698 //              endif    
    699         catch 
    700  
    701         endtry 
    702          
    703         if(groupID) 
    704                 HDF5CloseGroup /Z groupID 
    705         endif 
    706          
    707         if(fileID) 
    708                 HDF5CloseFile /Z fileID  
    709         endif 
    710  
    711         setDataFolder $cDF 
    712         return err 
    713 end 
    714  
    715719////////////////////////////// 
    716720////////////////////////////// 
    717721////////////////////////////// 
    718722 
     723// TODO: 
     724// -- this must be called as needed to force a re-read of the data from disk 
     725//    "as needed" means that when an operation is done that needs to ensure 
     726//     a fresh read from disk, it must take care of the kill. 
     727// -- the ksBaseDFPath needs to be removed. It's currently pointing to RawVSANS, which is 
     728//    really not used as intended anymore. 
     729// 
    719730Function V_KillNamedDataFolder(fname) 
    720731        String fname 
     
    735746//returns the name as a string without the ".fbdfasga" extension 
    736747// 
    737 // returns the input string if a"." can't be found (maybe it wasn't there" 
     748// returns the input string if a "." can't be found (maybe it wasn't there) 
    738749Function/S V_RemoveDotExtension(item) 
    739750        String item 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Write.ipf

    r981 r983  
    2222////////////////////////////////////////////// 
    2323////////////////////////////////// 
    24 // for TESTING of the get functions - to quickly access and se if there are errors 
     24// for TESTING of the get functions - to quickly access and see if there are errors 
    2525// 
    2626// -- not sure how to test the string functions -- can't seem to get a FUNCREF to a string function 
     
    183183         
    184184        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    185         err = V_KillNamedDataFolder(fname) 
    186         if(err) 
    187                 Print "DataFolder kill err = ",err 
    188         endif 
     185//      err = V_KillNamedDataFolder(fname) 
     186//      if(err) 
     187//              Print "DataFolder kill err = ",err 
     188//      endif 
    189189                 
    190190        return(err) 
     
    211211        endif 
    212212        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    213         err = V_KillNamedDataFolder(fname) 
    214         if(err) 
    215                 Print "DataFolder kill err = ",err 
    216         endif 
     213//      err = V_KillNamedDataFolder(fname) 
     214//      if(err) 
     215//              Print "DataFolder kill err = ",err 
     216//      endif 
    217217        return(err) 
    218218End 
     
    236236         
    237237        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    238         err = V_KillNamedDataFolder(fname) 
    239         if(err) 
    240                 Print "DataFolder kill err = ",err 
    241         endif 
     238//      err = V_KillNamedDataFolder(fname) 
     239//      if(err) 
     240//              Print "DataFolder kill err = ",err 
     241//      endif 
    242242                 
    243243        return(err) 
     
    262262         
    263263        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    264         err = V_KillNamedDataFolder(fname) 
    265         if(err) 
    266                 Print "DataFolder kill err = ",err 
    267         endif 
     264//      err = V_KillNamedDataFolder(fname) 
     265//      if(err) 
     266//              Print "DataFolder kill err = ",err 
     267//      endif 
    268268                 
    269269        return(err) 
     
    290290        endif 
    291291        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    292         err = V_KillNamedDataFolder(fname) 
    293         if(err) 
    294                 Print "DataFolder kill err = ",err 
    295         endif 
     292//      err = V_KillNamedDataFolder(fname) 
     293//      if(err) 
     294//              Print "DataFolder kill err = ",err 
     295//      endif 
    296296        return(err) 
    297297End 
     
    316316         
    317317        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    318         err = V_KillNamedDataFolder(fname) 
    319         if(err) 
    320                 Print "DataFolder kill err = ",err 
    321         endif 
     318//      err = V_KillNamedDataFolder(fname) 
     319//      if(err) 
     320//              Print "DataFolder kill err = ",err 
     321//      endif 
    322322                 
    323323        return(err) 
     
    342342         
    343343        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    344         err = V_KillNamedDataFolder(fname) 
    345         if(err) 
    346                 Print "DataFolder kill err = ",err 
    347         endif 
     344//      err = V_KillNamedDataFolder(fname) 
     345//      if(err) 
     346//              Print "DataFolder kill err = ",err 
     347//      endif 
    348348                 
    349349        return(err) 
     
    368368         
    369369        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    370         err = V_KillNamedDataFolder(fname) 
    371         if(err) 
    372                 Print "DataFolder kill err = ",err 
    373         endif 
     370//      err = V_KillNamedDataFolder(fname) 
     371//      if(err) 
     372//              Print "DataFolder kill err = ",err 
     373//      endif 
    374374                 
    375375        return(err) 
     
    394394         
    395395        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    396         err = V_KillNamedDataFolder(fname) 
    397         if(err) 
    398                 Print "DataFolder kill err = ",err 
    399         endif 
     396//      err = V_KillNamedDataFolder(fname) 
     397//      if(err) 
     398//              Print "DataFolder kill err = ",err 
     399//      endif 
    400400                 
    401401        return(err) 
     
    422422        endif 
    423423        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    424         err = V_KillNamedDataFolder(fname) 
    425         if(err) 
    426                 Print "DataFolder kill err = ",err 
    427         endif 
     424//      err = V_KillNamedDataFolder(fname) 
     425//      if(err) 
     426//              Print "DataFolder kill err = ",err 
     427//      endif 
    428428        return(err) 
    429429End 
     
    447447         
    448448        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    449         err = V_KillNamedDataFolder(fname) 
    450         if(err) 
    451                 Print "DataFolder kill err = ",err 
    452         endif 
     449//      err = V_KillNamedDataFolder(fname) 
     450//      if(err) 
     451//              Print "DataFolder kill err = ",err 
     452//      endif 
    453453                 
    454454        return(err) 
     
    473473         
    474474        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    475         err = V_KillNamedDataFolder(fname) 
    476         if(err) 
    477                 Print "DataFolder kill err = ",err 
    478         endif 
     475//      err = V_KillNamedDataFolder(fname) 
     476//      if(err) 
     477//              Print "DataFolder kill err = ",err 
     478//      endif 
    479479                 
    480480        return(err) 
     
    500500         
    501501        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    502         err = V_KillNamedDataFolder(fname) 
    503         if(err) 
    504                 Print "DataFolder kill err = ",err 
    505         endif 
     502//      err = V_KillNamedDataFolder(fname) 
     503//      if(err) 
     504//              Print "DataFolder kill err = ",err 
     505//      endif 
    506506                 
    507507        return(err) 
     
    526526         
    527527        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    528         err = V_KillNamedDataFolder(fname) 
    529         if(err) 
    530                 Print "DataFolder kill err = ",err 
    531         endif 
     528//      err = V_KillNamedDataFolder(fname) 
     529//      if(err) 
     530//              Print "DataFolder kill err = ",err 
     531//      endif 
    532532                 
    533533        return(err) 
     
    559559         
    560560        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    561         err = V_KillNamedDataFolder(fname) 
    562         if(err) 
    563                 Print "DataFolder kill err = ",err 
    564         endif 
     561//      err = V_KillNamedDataFolder(fname) 
     562//      if(err) 
     563//              Print "DataFolder kill err = ",err 
     564//      endif 
    565565                 
    566566        return(err) 
     
    592592        endif 
    593593        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    594         err = V_KillNamedDataFolder(fname) 
    595         if(err) 
    596                 Print "DataFolder kill err = ",err 
    597         endif 
     594//      err = V_KillNamedDataFolder(fname) 
     595//      if(err) 
     596//              Print "DataFolder kill err = ",err 
     597//      endif 
    598598        return(err) 
    599599end 
     
    618618        endif 
    619619        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    620         err = V_KillNamedDataFolder(fname) 
    621         if(err) 
    622                 Print "DataFolder kill err = ",err 
    623         endif 
     620//      err = V_KillNamedDataFolder(fname) 
     621//      if(err) 
     622//              Print "DataFolder kill err = ",err 
     623//      endif 
    624624        return(err) 
    625625end 
     
    644644        endif 
    645645        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    646         err = V_KillNamedDataFolder(fname) 
    647         if(err) 
    648                 Print "DataFolder kill err = ",err 
    649         endif 
     646//      err = V_KillNamedDataFolder(fname) 
     647//      if(err) 
     648//              Print "DataFolder kill err = ",err 
     649//      endif 
    650650        return(err) 
    651651end 
     
    670670        endif 
    671671        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    672         err = V_KillNamedDataFolder(fname) 
    673         if(err) 
    674                 Print "DataFolder kill err = ",err 
    675         endif 
     672//      err = V_KillNamedDataFolder(fname) 
     673//      if(err) 
     674//              Print "DataFolder kill err = ",err 
     675//      endif 
    676676        return(err) 
    677677end 
     
    696696        endif 
    697697        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    698         err = V_KillNamedDataFolder(fname) 
    699         if(err) 
    700                 Print "DataFolder kill err = ",err 
    701         endif 
     698//      err = V_KillNamedDataFolder(fname) 
     699//      if(err) 
     700//              Print "DataFolder kill err = ",err 
     701//      endif 
    702702        return(err) 
    703703end 
     
    722722        endif 
    723723        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    724         err = V_KillNamedDataFolder(fname) 
    725         if(err) 
    726                 Print "DataFolder kill err = ",err 
    727         endif 
     724//      err = V_KillNamedDataFolder(fname) 
     725//      if(err) 
     726//              Print "DataFolder kill err = ",err 
     727//      endif 
    728728        return(err) 
    729729end 
     
    748748        endif 
    749749        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    750         err = V_KillNamedDataFolder(fname) 
    751         if(err) 
    752                 Print "DataFolder kill err = ",err 
    753         endif 
     750//      err = V_KillNamedDataFolder(fname) 
     751//      if(err) 
     752//              Print "DataFolder kill err = ",err 
     753//      endif 
    754754        return(err) 
    755755end 
     
    773773         
    774774        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    775         err = V_KillNamedDataFolder(fname) 
    776         if(err) 
    777                 Print "DataFolder kill err = ",err 
    778         endif 
     775//      err = V_KillNamedDataFolder(fname) 
     776//      if(err) 
     777//              Print "DataFolder kill err = ",err 
     778//      endif 
    779779                 
    780780        return(err) 
     
    800800        endif 
    801801        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    802         err = V_KillNamedDataFolder(fname) 
    803         if(err) 
    804                 Print "DataFolder kill err = ",err 
    805         endif 
     802//      err = V_KillNamedDataFolder(fname) 
     803//      if(err) 
     804//              Print "DataFolder kill err = ",err 
     805//      endif 
    806806        return(err) 
    807807end 
     
    825825        endif 
    826826        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    827         err = V_KillNamedDataFolder(fname) 
    828         if(err) 
    829                 Print "DataFolder kill err = ",err 
    830         endif 
     827//      err = V_KillNamedDataFolder(fname) 
     828//      if(err) 
     829//              Print "DataFolder kill err = ",err 
     830//      endif 
    831831        return(err) 
    832832end 
     
    850850        endif 
    851851        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    852         err = V_KillNamedDataFolder(fname) 
    853         if(err) 
    854                 Print "DataFolder kill err = ",err 
    855         endif 
     852//      err = V_KillNamedDataFolder(fname) 
     853//      if(err) 
     854//              Print "DataFolder kill err = ",err 
     855//      endif 
    856856        return(err) 
    857857end 
     
    882882         
    883883        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    884         err = V_KillNamedDataFolder(fname) 
    885         if(err) 
    886                 Print "DataFolder kill err = ",err 
    887         endif 
     884//      err = V_KillNamedDataFolder(fname) 
     885//      if(err) 
     886//              Print "DataFolder kill err = ",err 
     887//      endif 
    888888                 
    889889        return(err) 
     
    907907         
    908908        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    909         err = V_KillNamedDataFolder(fname) 
    910         if(err) 
    911                 Print "DataFolder kill err = ",err 
    912         endif 
     909//      err = V_KillNamedDataFolder(fname) 
     910//      if(err) 
     911//              Print "DataFolder kill err = ",err 
     912//      endif 
    913913                 
    914914        return(err) 
     
    932932         
    933933        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    934         err = V_KillNamedDataFolder(fname) 
    935         if(err) 
    936                 Print "DataFolder kill err = ",err 
    937         endif 
     934//      err = V_KillNamedDataFolder(fname) 
     935//      if(err) 
     936//              Print "DataFolder kill err = ",err 
     937//      endif 
    938938                 
    939939        return(err) 
     
    962962        endif 
    963963        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    964         err = V_KillNamedDataFolder(fname) 
    965         if(err) 
    966                 Print "DataFolder kill err = ",err 
    967         endif 
     964//      err = V_KillNamedDataFolder(fname) 
     965//      if(err) 
     966//              Print "DataFolder kill err = ",err 
     967//      endif 
    968968        return(err) 
    969969end 
     
    990990        endif 
    991991        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    992         err = V_KillNamedDataFolder(fname) 
    993         if(err) 
    994                 Print "DataFolder kill err = ",err 
    995         endif 
     992//      err = V_KillNamedDataFolder(fname) 
     993//      if(err) 
     994//              Print "DataFolder kill err = ",err 
     995//      endif 
    996996        return(err) 
    997997end 
     
    10171017        endif 
    10181018        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1019         err = V_KillNamedDataFolder(fname) 
    1020         if(err) 
    1021                 Print "DataFolder kill err = ",err 
    1022         endif 
     1019//      err = V_KillNamedDataFolder(fname) 
     1020//      if(err) 
     1021//              Print "DataFolder kill err = ",err 
     1022//      endif 
    10231023        return(err) 
    10241024end 
     
    10441044        endif 
    10451045        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1046         err = V_KillNamedDataFolder(fname) 
    1047         if(err) 
    1048                 Print "DataFolder kill err = ",err 
    1049         endif 
     1046//      err = V_KillNamedDataFolder(fname) 
     1047//      if(err) 
     1048//              Print "DataFolder kill err = ",err 
     1049//      endif 
    10501050        return(err) 
    10511051end 
     
    10711071        endif 
    10721072        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1073         err = V_KillNamedDataFolder(fname) 
    1074         if(err) 
    1075                 Print "DataFolder kill err = ",err 
    1076         endif 
     1073//      err = V_KillNamedDataFolder(fname) 
     1074//      if(err) 
     1075//              Print "DataFolder kill err = ",err 
     1076//      endif 
    10771077        return(err) 
    10781078end 
     
    11001100        endif 
    11011101        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1102         err = V_KillNamedDataFolder(fname) 
    1103         if(err) 
    1104                 Print "DataFolder kill err = ",err 
    1105         endif 
     1102//      err = V_KillNamedDataFolder(fname) 
     1103//      if(err) 
     1104//              Print "DataFolder kill err = ",err 
     1105//      endif 
    11061106        return(err) 
    11071107end 
     
    11261126         
    11271127        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1128         err = V_KillNamedDataFolder(fname) 
    1129         if(err) 
    1130                 Print "DataFolder kill err = ",err 
    1131         endif 
     1128//      err = V_KillNamedDataFolder(fname) 
     1129//      if(err) 
     1130//              Print "DataFolder kill err = ",err 
     1131//      endif 
    11321132                 
    11331133        return(err) 
     
    11531153        endif 
    11541154        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1155         err = V_KillNamedDataFolder(fname) 
    1156         if(err) 
    1157                 Print "DataFolder kill err = ",err 
    1158         endif 
     1155//      err = V_KillNamedDataFolder(fname) 
     1156//      if(err) 
     1157//              Print "DataFolder kill err = ",err 
     1158//      endif 
    11591159        return(err) 
    11601160end 
     
    11791179         
    11801180        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1181         err = V_KillNamedDataFolder(fname) 
    1182         if(err) 
    1183                 Print "DataFolder kill err = ",err 
    1184         endif 
     1181//      err = V_KillNamedDataFolder(fname) 
     1182//      if(err) 
     1183//              Print "DataFolder kill err = ",err 
     1184//      endif 
    11851185                 
    11861186        return(err) 
     
    12081208        endif 
    12091209        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1210         err = V_KillNamedDataFolder(fname) 
    1211         if(err) 
    1212                 Print "DataFolder kill err = ",err 
    1213         endif 
     1210//      err = V_KillNamedDataFolder(fname) 
     1211//      if(err) 
     1212//              Print "DataFolder kill err = ",err 
     1213//      endif 
    12141214        return(err) 
    12151215end 
     
    12331233        endif 
    12341234        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1235         err = V_KillNamedDataFolder(fname) 
    1236         if(err) 
    1237                 Print "DataFolder kill err = ",err 
    1238         endif 
     1235//      err = V_KillNamedDataFolder(fname) 
     1236//      if(err) 
     1237//              Print "DataFolder kill err = ",err 
     1238//      endif 
    12391239        return(err) 
    12401240end 
     
    12581258        endif 
    12591259        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1260         err = V_KillNamedDataFolder(fname) 
    1261         if(err) 
    1262                 Print "DataFolder kill err = ",err 
    1263         endif 
     1260//      err = V_KillNamedDataFolder(fname) 
     1261//      if(err) 
     1262//              Print "DataFolder kill err = ",err 
     1263//      endif 
    12641264        return(err) 
    12651265end 
     
    12831283        endif 
    12841284        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1285         err = V_KillNamedDataFolder(fname) 
    1286         if(err) 
    1287                 Print "DataFolder kill err = ",err 
    1288         endif 
     1285//      err = V_KillNamedDataFolder(fname) 
     1286//      if(err) 
     1287//              Print "DataFolder kill err = ",err 
     1288//      endif 
    12891289        return(err) 
    12901290end 
     
    13081308        endif 
    13091309        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1310         err = V_KillNamedDataFolder(fname) 
    1311         if(err) 
    1312                 Print "DataFolder kill err = ",err 
    1313         endif 
     1310//      err = V_KillNamedDataFolder(fname) 
     1311//      if(err) 
     1312//              Print "DataFolder kill err = ",err 
     1313//      endif 
    13141314        return(err) 
    13151315end 
     
    13331333        endif 
    13341334        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1335         err = V_KillNamedDataFolder(fname) 
    1336         if(err) 
    1337                 Print "DataFolder kill err = ",err 
    1338         endif 
     1335//      err = V_KillNamedDataFolder(fname) 
     1336//      if(err) 
     1337//              Print "DataFolder kill err = ",err 
     1338//      endif 
    13391339        return(err) 
    13401340end 
     
    13571357         
    13581358        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1359         err = V_KillNamedDataFolder(fname) 
    1360         if(err) 
    1361                 Print "DataFolder kill err = ",err 
    1362         endif 
     1359//      err = V_KillNamedDataFolder(fname) 
     1360//      if(err) 
     1361//              Print "DataFolder kill err = ",err 
     1362//      endif 
    13631363                 
    13641364        return(err) 
     
    13821382         
    13831383        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1384         err = V_KillNamedDataFolder(fname) 
    1385         if(err) 
    1386                 Print "DataFolder kill err = ",err 
    1387         endif 
     1384//      err = V_KillNamedDataFolder(fname) 
     1385//      if(err) 
     1386//              Print "DataFolder kill err = ",err 
     1387//      endif 
    13881388                 
    13891389        return(err) 
     
    14101410        endif 
    14111411        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1412         err = V_KillNamedDataFolder(fname) 
    1413         if(err) 
    1414                 Print "DataFolder kill err = ",err 
    1415         endif 
     1412//      err = V_KillNamedDataFolder(fname) 
     1413//      if(err) 
     1414//              Print "DataFolder kill err = ",err 
     1415//      endif 
    14161416        return(err) 
    14171417end 
     
    14351435        endif 
    14361436        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1437         err = V_KillNamedDataFolder(fname) 
    1438         if(err) 
    1439                 Print "DataFolder kill err = ",err 
    1440         endif 
     1437//      err = V_KillNamedDataFolder(fname) 
     1438//      if(err) 
     1439//              Print "DataFolder kill err = ",err 
     1440//      endif 
    14411441        return(err) 
    14421442end 
     
    14591459         
    14601460        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1461         err = V_KillNamedDataFolder(fname) 
    1462         if(err) 
    1463                 Print "DataFolder kill err = ",err 
    1464         endif 
     1461//      err = V_KillNamedDataFolder(fname) 
     1462//      if(err) 
     1463//              Print "DataFolder kill err = ",err 
     1464//      endif 
    14651465                 
    14661466        return(err) 
     
    14851485        endif 
    14861486        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1487         err = V_KillNamedDataFolder(fname) 
    1488         if(err) 
    1489                 Print "DataFolder kill err = ",err 
    1490         endif 
     1487//      err = V_KillNamedDataFolder(fname) 
     1488//      if(err) 
     1489//              Print "DataFolder kill err = ",err 
     1490//      endif 
    14911491        return(err) 
    14921492end 
     
    15091509         
    15101510        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1511         err = V_KillNamedDataFolder(fname) 
    1512         if(err) 
    1513                 Print "DataFolder kill err = ",err 
    1514         endif 
     1511//      err = V_KillNamedDataFolder(fname) 
     1512//      if(err) 
     1513//              Print "DataFolder kill err = ",err 
     1514//      endif 
    15151515                 
    15161516        return(err) 
     
    15351535         
    15361536        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1537         err = V_KillNamedDataFolder(fname) 
    1538         if(err) 
    1539                 Print "DataFolder kill err = ",err 
    1540         endif 
     1537//      err = V_KillNamedDataFolder(fname) 
     1538//      if(err) 
     1539//              Print "DataFolder kill err = ",err 
     1540//      endif 
    15411541                 
    15421542        return(err) 
     
    15611561        endif 
    15621562        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1563         err = V_KillNamedDataFolder(fname) 
    1564         if(err) 
    1565                 Print "DataFolder kill err = ",err 
    1566         endif 
     1563//      err = V_KillNamedDataFolder(fname) 
     1564//      if(err) 
     1565//              Print "DataFolder kill err = ",err 
     1566//      endif 
    15671567        return(err) 
    15681568end 
     
    15861586        endif 
    15871587        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1588         err = V_KillNamedDataFolder(fname) 
    1589         if(err) 
    1590                 Print "DataFolder kill err = ",err 
    1591         endif 
     1588//      err = V_KillNamedDataFolder(fname) 
     1589//      if(err) 
     1590//              Print "DataFolder kill err = ",err 
     1591//      endif 
    15921592        return(err) 
    15931593end 
     
    16121612        endif 
    16131613        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1614         err = V_KillNamedDataFolder(fname) 
    1615         if(err) 
    1616                 Print "DataFolder kill err = ",err 
    1617         endif 
     1614//      err = V_KillNamedDataFolder(fname) 
     1615//      if(err) 
     1616//              Print "DataFolder kill err = ",err 
     1617//      endif 
    16181618        return(err) 
    16191619end 
     
    16371637        endif 
    16381638        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1639         err = V_KillNamedDataFolder(fname) 
    1640         if(err) 
    1641                 Print "DataFolder kill err = ",err 
    1642         endif 
     1639//      err = V_KillNamedDataFolder(fname) 
     1640//      if(err) 
     1641//              Print "DataFolder kill err = ",err 
     1642//      endif 
    16431643        return(err) 
    16441644end 
     
    16621662        endif 
    16631663        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1664         err = V_KillNamedDataFolder(fname) 
    1665         if(err) 
    1666                 Print "DataFolder kill err = ",err 
    1667         endif 
     1664//      err = V_KillNamedDataFolder(fname) 
     1665//      if(err) 
     1666//              Print "DataFolder kill err = ",err 
     1667//      endif 
    16681668        return(err) 
    16691669end 
     
    16871687        endif 
    16881688        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1689         err = V_KillNamedDataFolder(fname) 
    1690         if(err) 
    1691                 Print "DataFolder kill err = ",err 
    1692         endif 
     1689//      err = V_KillNamedDataFolder(fname) 
     1690//      if(err) 
     1691//              Print "DataFolder kill err = ",err 
     1692//      endif 
    16931693        return(err) 
    16941694end 
     
    17121712        endif 
    17131713        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1714         err = V_KillNamedDataFolder(fname) 
    1715         if(err) 
    1716                 Print "DataFolder kill err = ",err 
    1717         endif 
     1714//      err = V_KillNamedDataFolder(fname) 
     1715//      if(err) 
     1716//              Print "DataFolder kill err = ",err 
     1717//      endif 
    17181718        return(err) 
    17191719end 
     
    17371737        endif 
    17381738        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1739         err = V_KillNamedDataFolder(fname) 
    1740         if(err) 
    1741                 Print "DataFolder kill err = ",err 
    1742         endif 
     1739//      err = V_KillNamedDataFolder(fname) 
     1740//      if(err) 
     1741//              Print "DataFolder kill err = ",err 
     1742//      endif 
    17431743        return(err) 
    17441744end 
     
    17621762        endif 
    17631763        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1764         err = V_KillNamedDataFolder(fname) 
    1765         if(err) 
    1766                 Print "DataFolder kill err = ",err 
    1767         endif 
     1764//      err = V_KillNamedDataFolder(fname) 
     1765//      if(err) 
     1766//              Print "DataFolder kill err = ",err 
     1767//      endif 
    17681768        return(err) 
    17691769end 
     
    17861786         
    17871787        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1788         err = V_KillNamedDataFolder(fname) 
    1789         if(err) 
    1790                 Print "DataFolder kill err = ",err 
    1791         endif 
     1788//      err = V_KillNamedDataFolder(fname) 
     1789//      if(err) 
     1790//              Print "DataFolder kill err = ",err 
     1791//      endif 
    17921792                 
    17931793        return(err) 
     
    18121812        endif 
    18131813        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1814         err = V_KillNamedDataFolder(fname) 
    1815         if(err) 
    1816                 Print "DataFolder kill err = ",err 
    1817         endif 
     1814//      err = V_KillNamedDataFolder(fname) 
     1815//      if(err) 
     1816//              Print "DataFolder kill err = ",err 
     1817//      endif 
    18181818        return(err) 
    18191819end 
     
    18371837        endif 
    18381838        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1839         err = V_KillNamedDataFolder(fname) 
    1840         if(err) 
    1841                 Print "DataFolder kill err = ",err 
    1842         endif 
     1839//      err = V_KillNamedDataFolder(fname) 
     1840//      if(err) 
     1841//              Print "DataFolder kill err = ",err 
     1842//      endif 
    18431843        return(err) 
    18441844end 
     
    18621862        endif 
    18631863        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1864         err = V_KillNamedDataFolder(fname) 
    1865         if(err) 
    1866                 Print "DataFolder kill err = ",err 
    1867         endif 
     1864//      err = V_KillNamedDataFolder(fname) 
     1865//      if(err) 
     1866//              Print "DataFolder kill err = ",err 
     1867//      endif 
    18681868        return(err) 
    18691869end 
     
    18871887        endif 
    18881888        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1889         err = V_KillNamedDataFolder(fname) 
    1890         if(err) 
    1891                 Print "DataFolder kill err = ",err 
    1892         endif 
     1889//      err = V_KillNamedDataFolder(fname) 
     1890//      if(err) 
     1891//              Print "DataFolder kill err = ",err 
     1892//      endif 
    18931893        return(err) 
    18941894end 
     
    19121912        endif 
    19131913        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1914         err = V_KillNamedDataFolder(fname) 
    1915         if(err) 
    1916                 Print "DataFolder kill err = ",err 
    1917         endif 
     1914//      err = V_KillNamedDataFolder(fname) 
     1915//      if(err) 
     1916//              Print "DataFolder kill err = ",err 
     1917//      endif 
    19181918        return(err) 
    19191919end 
     
    19381938        endif 
    19391939        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1940         err = V_KillNamedDataFolder(fname) 
    1941         if(err) 
    1942                 Print "DataFolder kill err = ",err 
    1943         endif 
     1940//      err = V_KillNamedDataFolder(fname) 
     1941//      if(err) 
     1942//              Print "DataFolder kill err = ",err 
     1943//      endif 
    19441944        return(err) 
    19451945end 
     
    19631963        endif 
    19641964        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1965         err = V_KillNamedDataFolder(fname) 
    1966         if(err) 
    1967                 Print "DataFolder kill err = ",err 
    1968         endif 
     1965//      err = V_KillNamedDataFolder(fname) 
     1966//      if(err) 
     1967//              Print "DataFolder kill err = ",err 
     1968//      endif 
    19691969        return(err) 
    19701970end 
     
    19871987         
    19881988        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    1989         err = V_KillNamedDataFolder(fname) 
    1990         if(err) 
    1991                 Print "DataFolder kill err = ",err 
    1992         endif 
     1989//      err = V_KillNamedDataFolder(fname) 
     1990//      if(err) 
     1991//              Print "DataFolder kill err = ",err 
     1992//      endif 
    19931993                 
    19941994        return(err) 
     
    20152015        endif 
    20162016        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2017         err = V_KillNamedDataFolder(fname) 
    2018         if(err) 
    2019                 Print "DataFolder kill err = ",err 
    2020         endif 
     2017//      err = V_KillNamedDataFolder(fname) 
     2018//      if(err) 
     2019//              Print "DataFolder kill err = ",err 
     2020//      endif 
    20212021        return(err) 
    20222022end 
     
    20412041        endif 
    20422042        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2043         err = V_KillNamedDataFolder(fname) 
    2044         if(err) 
    2045                 Print "DataFolder kill err = ",err 
    2046         endif 
     2043//      err = V_KillNamedDataFolder(fname) 
     2044//      if(err) 
     2045//              Print "DataFolder kill err = ",err 
     2046//      endif 
    20472047        return(err) 
    20482048end 
     
    20662066        endif 
    20672067        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2068         err = V_KillNamedDataFolder(fname) 
    2069         if(err) 
    2070                 Print "DataFolder kill err = ",err 
    2071         endif 
     2068//      err = V_KillNamedDataFolder(fname) 
     2069//      if(err) 
     2070//              Print "DataFolder kill err = ",err 
     2071//      endif 
    20722072        return(err) 
    20732073end 
     
    20912091        endif 
    20922092        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2093         err = V_KillNamedDataFolder(fname) 
    2094         if(err) 
    2095                 Print "DataFolder kill err = ",err 
    2096         endif 
     2093//      err = V_KillNamedDataFolder(fname) 
     2094//      if(err) 
     2095//              Print "DataFolder kill err = ",err 
     2096//      endif 
    20972097        return(err) 
    20982098end 
     
    21162116        endif 
    21172117        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2118         err = V_KillNamedDataFolder(fname) 
    2119         if(err) 
    2120                 Print "DataFolder kill err = ",err 
    2121         endif 
     2118//      err = V_KillNamedDataFolder(fname) 
     2119//      if(err) 
     2120//              Print "DataFolder kill err = ",err 
     2121//      endif 
    21222122        return(err) 
    21232123end 
     
    21412141         
    21422142        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2143         err = V_KillNamedDataFolder(fname) 
    2144         if(err) 
    2145                 Print "DataFolder kill err = ",err 
    2146         endif 
     2143//      err = V_KillNamedDataFolder(fname) 
     2144//      if(err) 
     2145//              Print "DataFolder kill err = ",err 
     2146//      endif 
    21472147                 
    21482148        return(err) 
     
    21672167        endif 
    21682168        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2169         err = V_KillNamedDataFolder(fname) 
    2170         if(err) 
    2171                 Print "DataFolder kill err = ",err 
    2172         endif 
     2169//      err = V_KillNamedDataFolder(fname) 
     2170//      if(err) 
     2171//              Print "DataFolder kill err = ",err 
     2172//      endif 
    21732173        return(err) 
    21742174end 
     
    21922192        endif 
    21932193        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2194         err = V_KillNamedDataFolder(fname) 
    2195         if(err) 
    2196                 Print "DataFolder kill err = ",err 
    2197         endif 
     2194//      err = V_KillNamedDataFolder(fname) 
     2195//      if(err) 
     2196//              Print "DataFolder kill err = ",err 
     2197//      endif 
    21982198        return(err) 
    21992199end 
     
    22172217         
    22182218        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2219         err = V_KillNamedDataFolder(fname) 
    2220         if(err) 
    2221                 Print "DataFolder kill err = ",err 
    2222         endif 
     2219//      err = V_KillNamedDataFolder(fname) 
     2220//      if(err) 
     2221//              Print "DataFolder kill err = ",err 
     2222//      endif 
    22232223                 
    22242224        return(err) 
     
    22432243        endif 
    22442244        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2245         err = V_KillNamedDataFolder(fname) 
    2246         if(err) 
    2247                 Print "DataFolder kill err = ",err 
    2248         endif 
     2245//      err = V_KillNamedDataFolder(fname) 
     2246//      if(err) 
     2247//              Print "DataFolder kill err = ",err 
     2248//      endif 
    22492249        return(err) 
    22502250end 
     
    22672267         
    22682268        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2269         err = V_KillNamedDataFolder(fname) 
    2270         if(err) 
    2271                 Print "DataFolder kill err = ",err 
    2272         endif 
     2269//      err = V_KillNamedDataFolder(fname) 
     2270//      if(err) 
     2271//              Print "DataFolder kill err = ",err 
     2272//      endif 
    22732273                 
    22742274        return(err) 
     
    22922292         
    22932293        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2294         err = V_KillNamedDataFolder(fname) 
    2295         if(err) 
    2296                 Print "DataFolder kill err = ",err 
    2297         endif 
     2294//      err = V_KillNamedDataFolder(fname) 
     2295//      if(err) 
     2296//              Print "DataFolder kill err = ",err 
     2297//      endif 
    22982298                 
    22992299        return(err) 
     
    23192319        endif 
    23202320        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2321         err = V_KillNamedDataFolder(fname) 
    2322         if(err) 
    2323                 Print "DataFolder kill err = ",err 
    2324         endif 
     2321//      err = V_KillNamedDataFolder(fname) 
     2322//      if(err) 
     2323//              Print "DataFolder kill err = ",err 
     2324//      endif 
    23252325        return(err) 
    23262326End 
     
    23432343         
    23442344        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2345         err = V_KillNamedDataFolder(fname) 
    2346         if(err) 
    2347                 Print "DataFolder kill err = ",err 
    2348         endif 
     2345//      err = V_KillNamedDataFolder(fname) 
     2346//      if(err) 
     2347//              Print "DataFolder kill err = ",err 
     2348//      endif 
    23492349                 
    23502350        return(err) 
     
    23712371        endif 
    23722372        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2373         err = V_KillNamedDataFolder(fname) 
    2374         if(err) 
    2375                 Print "DataFolder kill err = ",err 
    2376         endif 
     2373//      err = V_KillNamedDataFolder(fname) 
     2374//      if(err) 
     2375//              Print "DataFolder kill err = ",err 
     2376//      endif 
    23772377        return(err) 
    23782378End 
     
    23962396        endif 
    23972397        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2398         err = V_KillNamedDataFolder(fname) 
    2399         if(err) 
    2400                 Print "DataFolder kill err = ",err 
    2401         endif 
     2398//      err = V_KillNamedDataFolder(fname) 
     2399//      if(err) 
     2400//              Print "DataFolder kill err = ",err 
     2401//      endif 
    24022402        return(err) 
    24032403End 
     
    24212421        endif 
    24222422        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2423         err = V_KillNamedDataFolder(fname) 
    2424         if(err) 
    2425                 Print "DataFolder kill err = ",err 
    2426         endif 
     2423//      err = V_KillNamedDataFolder(fname) 
     2424//      if(err) 
     2425//              Print "DataFolder kill err = ",err 
     2426//      endif 
    24272427        return(err) 
    24282428End 
     
    24462446        endif 
    24472447        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2448         err = V_KillNamedDataFolder(fname) 
    2449         if(err) 
    2450                 Print "DataFolder kill err = ",err 
    2451         endif 
     2448//      err = V_KillNamedDataFolder(fname) 
     2449//      if(err) 
     2450//              Print "DataFolder kill err = ",err 
     2451//      endif 
    24522452        return(err) 
    24532453End 
     
    24702470         
    24712471        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2472         err = V_KillNamedDataFolder(fname) 
    2473         if(err) 
    2474                 Print "DataFolder kill err = ",err 
    2475         endif 
     2472//      err = V_KillNamedDataFolder(fname) 
     2473//      if(err) 
     2474//              Print "DataFolder kill err = ",err 
     2475//      endif 
    24762476                 
    24772477        return(err) 
     
    25002500        endif 
    25012501        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2502         err = V_KillNamedDataFolder(fname) 
    2503         if(err) 
    2504                 Print "DataFolder kill err = ",err 
    2505         endif 
     2502//      err = V_KillNamedDataFolder(fname) 
     2503//      if(err) 
     2504//              Print "DataFolder kill err = ",err 
     2505//      endif 
    25062506        return(err) 
    25072507End 
     
    25252525        endif 
    25262526        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2527         err = V_KillNamedDataFolder(fname) 
    2528         if(err) 
    2529                 Print "DataFolder kill err = ",err 
    2530         endif 
     2527//      err = V_KillNamedDataFolder(fname) 
     2528//      if(err) 
     2529//              Print "DataFolder kill err = ",err 
     2530//      endif 
    25312531        return(err) 
    25322532End 
     
    25502550        endif 
    25512551        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2552         err = V_KillNamedDataFolder(fname) 
    2553         if(err) 
    2554                 Print "DataFolder kill err = ",err 
    2555         endif 
     2552//      err = V_KillNamedDataFolder(fname) 
     2553//      if(err) 
     2554//              Print "DataFolder kill err = ",err 
     2555//      endif 
    25562556        return(err) 
    25572557End 
     
    25752575        endif 
    25762576        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2577         err = V_KillNamedDataFolder(fname) 
    2578         if(err) 
    2579                 Print "DataFolder kill err = ",err 
    2580         endif 
     2577//      err = V_KillNamedDataFolder(fname) 
     2578//      if(err) 
     2579//              Print "DataFolder kill err = ",err 
     2580//      endif 
    25812581        return(err) 
    25822582End 
     
    25992599         
    26002600        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2601         err = V_KillNamedDataFolder(fname) 
    2602         if(err) 
    2603                 Print "DataFolder kill err = ",err 
    2604         endif 
     2601//      err = V_KillNamedDataFolder(fname) 
     2602//      if(err) 
     2603//              Print "DataFolder kill err = ",err 
     2604//      endif 
    26052605                 
    26062606        return(err) 
     
    26262626        endif 
    26272627        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2628         err = V_KillNamedDataFolder(fname) 
    2629         if(err) 
    2630                 Print "DataFolder kill err = ",err 
    2631         endif 
     2628//      err = V_KillNamedDataFolder(fname) 
     2629//      if(err) 
     2630//              Print "DataFolder kill err = ",err 
     2631//      endif 
    26322632        return(err) 
    26332633End 
     
    26512651        endif 
    26522652        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2653         err = V_KillNamedDataFolder(fname) 
    2654         if(err) 
    2655                 Print "DataFolder kill err = ",err 
    2656         endif 
     2653//      err = V_KillNamedDataFolder(fname) 
     2654//      if(err) 
     2655//              Print "DataFolder kill err = ",err 
     2656//      endif 
    26572657        return(err) 
    26582658End 
     
    26762676        endif 
    26772677        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2678         err = V_KillNamedDataFolder(fname) 
    2679         if(err) 
    2680                 Print "DataFolder kill err = ",err 
    2681         endif 
     2678//      err = V_KillNamedDataFolder(fname) 
     2679//      if(err) 
     2680//              Print "DataFolder kill err = ",err 
     2681//      endif 
    26822682        return(err) 
    26832683End 
     
    27012701        endif 
    27022702        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2703         err = V_KillNamedDataFolder(fname) 
    2704         if(err) 
    2705                 Print "DataFolder kill err = ",err 
    2706         endif 
     2703//      err = V_KillNamedDataFolder(fname) 
     2704//      if(err) 
     2705//              Print "DataFolder kill err = ",err 
     2706//      endif 
    27072707        return(err) 
    27082708End 
     
    27252725         
    27262726        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2727         err = V_KillNamedDataFolder(fname) 
    2728         if(err) 
    2729                 Print "DataFolder kill err = ",err 
    2730         endif 
     2727//      err = V_KillNamedDataFolder(fname) 
     2728//      if(err) 
     2729//              Print "DataFolder kill err = ",err 
     2730//      endif 
    27312731                 
    27322732        return(err) 
     
    27512751         
    27522752        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2753         err = V_KillNamedDataFolder(fname) 
    2754         if(err) 
    2755                 Print "DataFolder kill err = ",err 
    2756         endif 
     2753//      err = V_KillNamedDataFolder(fname) 
     2754//      if(err) 
     2755//              Print "DataFolder kill err = ",err 
     2756//      endif 
    27572757                 
    27582758        return(err) 
     
    27772777        endif 
    27782778        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2779         err = V_KillNamedDataFolder(fname) 
    2780         if(err) 
    2781                 Print "DataFolder kill err = ",err 
    2782         endif 
     2779//      err = V_KillNamedDataFolder(fname) 
     2780//      if(err) 
     2781//              Print "DataFolder kill err = ",err 
     2782//      endif 
    27832783        return(err) 
    27842784End 
     
    28022802        endif 
    28032803        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2804         err = V_KillNamedDataFolder(fname) 
    2805         if(err) 
    2806                 Print "DataFolder kill err = ",err 
    2807         endif 
     2804//      err = V_KillNamedDataFolder(fname) 
     2805//      if(err) 
     2806//              Print "DataFolder kill err = ",err 
     2807//      endif 
    28082808        return(err) 
    28092809End 
     
    28272827        endif 
    28282828        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2829         err = V_KillNamedDataFolder(fname) 
    2830         if(err) 
    2831                 Print "DataFolder kill err = ",err 
    2832         endif 
     2829//      err = V_KillNamedDataFolder(fname) 
     2830//      if(err) 
     2831//              Print "DataFolder kill err = ",err 
     2832//      endif 
    28332833        return(err) 
    28342834End 
     
    28542854        endif 
    28552855        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2856         err = V_KillNamedDataFolder(fname) 
    2857         if(err) 
    2858                 Print "DataFolder kill err = ",err 
    2859         endif 
     2856//      err = V_KillNamedDataFolder(fname) 
     2857//      if(err) 
     2858//              Print "DataFolder kill err = ",err 
     2859//      endif 
    28602860        return(err) 
    28612861End 
     
    28802880         
    28812881        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2882         err = V_KillNamedDataFolder(fname) 
    2883         if(err) 
    2884                 Print "DataFolder kill err = ",err 
    2885         endif 
     2882//      err = V_KillNamedDataFolder(fname) 
     2883//      if(err) 
     2884//              Print "DataFolder kill err = ",err 
     2885//      endif 
    28862886                 
    28872887        return(err) 
     
    29072907        endif 
    29082908        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2909         err = V_KillNamedDataFolder(fname) 
    2910         if(err) 
    2911                 Print "DataFolder kill err = ",err 
    2912         endif 
     2909//      err = V_KillNamedDataFolder(fname) 
     2910//      if(err) 
     2911//              Print "DataFolder kill err = ",err 
     2912//      endif 
    29132913        return(err) 
    29142914End 
     
    29322932         
    29332933        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2934         err = V_KillNamedDataFolder(fname) 
    2935         if(err) 
    2936                 Print "DataFolder kill err = ",err 
    2937         endif 
     2934//      err = V_KillNamedDataFolder(fname) 
     2935//      if(err) 
     2936//              Print "DataFolder kill err = ",err 
     2937//      endif 
    29382938                 
    29392939        return(err) 
     
    29702970                endif 
    29712971                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    2972                 err = V_KillNamedDataFolder(fname) 
    2973                 if(err) 
    2974                         Print "DataFolder kill err = ",err 
    2975                 endif 
     2972//              err = V_KillNamedDataFolder(fname) 
     2973//              if(err) 
     2974//                      Print "DataFolder kill err = ",err 
     2975//              endif 
    29762976                return(err) 
    29772977        else 
     
    30033003                endif 
    30043004                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3005                 err = V_KillNamedDataFolder(fname) 
    3006                 if(err) 
    3007                         Print "DataFolder kill err = ",err 
    3008                 endif 
     3005//              err = V_KillNamedDataFolder(fname) 
     3006//              if(err) 
     3007//                      Print "DataFolder kill err = ",err 
     3008//              endif 
    30093009                return(err) 
    30103010        else 
     
    30343034        endif 
    30353035        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3036         err = V_KillNamedDataFolder(fname) 
    3037         if(err) 
    3038                 Print "DataFolder kill err = ",err 
    3039         endif 
     3036//      err = V_KillNamedDataFolder(fname) 
     3037//      if(err) 
     3038//              Print "DataFolder kill err = ",err 
     3039//      endif 
    30403040        return(err) 
    30413041End 
     
    30633063        endif 
    30643064        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3065         err = V_KillNamedDataFolder(fname) 
    3066         if(err) 
    3067                 Print "DataFolder kill err = ",err 
    3068         endif 
     3065//      err = V_KillNamedDataFolder(fname) 
     3066//      if(err) 
     3067//              Print "DataFolder kill err = ",err 
     3068//      endif 
    30693069        return(err) 
    30703070End 
     
    30893089        endif 
    30903090        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3091         err = V_KillNamedDataFolder(fname) 
    3092         if(err) 
    3093                 Print "DataFolder kill err = ",err 
    3094         endif 
     3091//      err = V_KillNamedDataFolder(fname) 
     3092//      if(err) 
     3093//              Print "DataFolder kill err = ",err 
     3094//      endif 
    30953095        return(err) 
    30963096End 
     
    31143114        endif 
    31153115        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3116         err = V_KillNamedDataFolder(fname) 
    3117         if(err) 
    3118                 Print "DataFolder kill err = ",err 
    3119         endif 
     3116//      err = V_KillNamedDataFolder(fname) 
     3117//      if(err) 
     3118//              Print "DataFolder kill err = ",err 
     3119//      endif 
    31203120        return(err) 
    31213121End 
     
    31413141                endif 
    31423142                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3143                 err = V_KillNamedDataFolder(fname) 
    3144                 if(err) 
    3145                         Print "DataFolder kill err = ",err 
    3146                 endif 
     3143//              err = V_KillNamedDataFolder(fname) 
     3144//              if(err) 
     3145//                      Print "DataFolder kill err = ",err 
     3146//              endif 
    31473147                return(err) 
    31483148        else 
     
    31693169        endif 
    31703170        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3171         err = V_KillNamedDataFolder(fname) 
    3172         if(err) 
    3173                 Print "DataFolder kill err = ",err 
    3174         endif 
    3175         return(err) 
     3171//      err = V_KillNamedDataFolder(fname) 
     3172//      if(err) 
     3173//              Print "DataFolder kill err = ",err 
     3174//      endif 
     3175        return(err) 
     3176End 
     3177 
     3178// fname is a local WORK folder 
     3179Function V_putDet_beam_center_x(fname,detStr,val) 
     3180        String fname,detStr 
     3181        Variable val 
     3182 
     3183//root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_x 
     3184        String path = "root:Packages:NIST:VSANS:"+fname+":entry:" 
     3185        path += "entry:instrument:detector_"+detStr+":beam_center_x" 
     3186         
     3187        Wave/Z w = $path 
     3188        if(waveExists(w) == 0) 
     3189                return(1) 
     3190        else 
     3191        w[0] = val 
     3192                return(0) 
     3193        endif 
     3194 
    31763195End 
    31773196 
     
    31943213        endif 
    31953214        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3196         err = V_KillNamedDataFolder(fname) 
    3197         if(err) 
    3198                 Print "DataFolder kill err = ",err 
    3199         endif 
    3200         return(err) 
    3201 End 
     3215//      err = V_KillNamedDataFolder(fname) 
     3216//      if(err) 
     3217//              Print "DataFolder kill err = ",err 
     3218//      endif 
     3219        return(err) 
     3220End 
     3221 
     3222 
     3223// fname is a local WORK folder 
     3224Function V_putDet_beam_center_y(fname,detStr,val) 
     3225        String fname,detStr 
     3226        Variable val 
     3227 
     3228//root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_y 
     3229        String path = "root:Packages:NIST:VSANS:"+fname+":entry:" 
     3230        path += "entry:instrument:detector_"+detStr+":beam_center_y" 
     3231         
     3232        Wave/Z w = $path 
     3233        if(waveExists(w) == 0) 
     3234                return(1) 
     3235        else 
     3236        w[0] = val 
     3237                return(0) 
     3238        endif 
     3239 
     3240End 
     3241 
    32023242 
    32033243// TODO -- write this function to return a WAVE with the data 
     
    32233263        endif 
    32243264        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3225         err = V_KillNamedDataFolder(fname) 
    3226         if(err) 
    3227                 Print "DataFolder kill err = ",err 
    3228         endif 
     3265//      err = V_KillNamedDataFolder(fname) 
     3266//      if(err) 
     3267//              Print "DataFolder kill err = ",err 
     3268//      endif 
    32293269        return(err) 
    32303270End 
     
    32553295        endif 
    32563296        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3257         err = V_KillNamedDataFolder(fname) 
    3258         if(err) 
    3259                 Print "DataFolder kill err = ",err 
    3260         endif 
     3297//      err = V_KillNamedDataFolder(fname) 
     3298//      if(err) 
     3299//              Print "DataFolder kill err = ",err 
     3300//      endif 
    32613301        return(err) 
    32623302End 
     
    32803320         
    32813321        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3282         err = V_KillNamedDataFolder(fname) 
    3283         if(err) 
    3284                 Print "DataFolder kill err = ",err 
    3285         endif 
     3322//      err = V_KillNamedDataFolder(fname) 
     3323//      if(err) 
     3324//              Print "DataFolder kill err = ",err 
     3325//      endif 
    32863326                 
    32873327        return(err) 
     
    33063346        endif 
    33073347        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3308         err = V_KillNamedDataFolder(fname) 
    3309         if(err) 
    3310                 Print "DataFolder kill err = ",err 
    3311         endif 
     3348//      err = V_KillNamedDataFolder(fname) 
     3349//      if(err) 
     3350//              Print "DataFolder kill err = ",err 
     3351//      endif 
    33123352        return(err) 
    33133353End 
     
    33333373                endif 
    33343374                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3335                 err = V_KillNamedDataFolder(fname) 
    3336                 if(err) 
    3337                         Print "DataFolder kill err = ",err 
    3338                 endif 
     3375//              err = V_KillNamedDataFolder(fname) 
     3376//              if(err) 
     3377//                      Print "DataFolder kill err = ",err 
     3378//              endif 
    33393379                return(err) 
    33403380        else 
     
    33603400         
    33613401        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3362         err = V_KillNamedDataFolder(fname) 
    3363         if(err) 
    3364                 Print "DataFolder kill err = ",err 
    3365         endif 
     3402//      err = V_KillNamedDataFolder(fname) 
     3403//      if(err) 
     3404//              Print "DataFolder kill err = ",err 
     3405//      endif 
    33663406                 
    33673407        return(err) 
     
    33863426        endif 
    33873427        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3388         err = V_KillNamedDataFolder(fname) 
    3389         if(err) 
    3390                 Print "DataFolder kill err = ",err 
    3391         endif 
     3428//      err = V_KillNamedDataFolder(fname) 
     3429//      if(err) 
     3430//              Print "DataFolder kill err = ",err 
     3431//      endif 
    33923432        return(err) 
    33933433End 
     
    34113451        endif 
    34123452        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3413         err = V_KillNamedDataFolder(fname) 
    3414         if(err) 
    3415                 Print "DataFolder kill err = ",err 
    3416         endif 
     3453//      err = V_KillNamedDataFolder(fname) 
     3454//      if(err) 
     3455//              Print "DataFolder kill err = ",err 
     3456//      endif 
    34173457        return(err) 
    34183458End 
     
    34363476        endif 
    34373477        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3438         err = V_KillNamedDataFolder(fname) 
    3439         if(err) 
    3440                 Print "DataFolder kill err = ",err 
    3441         endif 
     3478//      err = V_KillNamedDataFolder(fname) 
     3479//      if(err) 
     3480//              Print "DataFolder kill err = ",err 
     3481//      endif 
    34423482        return(err) 
    34433483End 
     
    34633503                endif 
    34643504                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3465                 err = V_KillNamedDataFolder(fname) 
    3466                 if(err) 
    3467                         Print "DataFolder kill err = ",err 
    3468                 endif 
     3505//              err = V_KillNamedDataFolder(fname) 
     3506//              if(err) 
     3507//                      Print "DataFolder kill err = ",err 
     3508//              endif 
    34693509                return(err) 
    34703510        else 
     
    34933533                endif 
    34943534                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3495                 err = V_KillNamedDataFolder(fname) 
    3496                 if(err) 
    3497                         Print "DataFolder kill err = ",err 
    3498                 endif 
     3535//              err = V_KillNamedDataFolder(fname) 
     3536//              if(err) 
     3537//                      Print "DataFolder kill err = ",err 
     3538//              endif 
    34993539                return(err) 
    35003540        else 
     
    35203560         
    35213561        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3522         err = V_KillNamedDataFolder(fname) 
    3523         if(err) 
    3524                 Print "DataFolder kill err = ",err 
    3525         endif 
     3562//      err = V_KillNamedDataFolder(fname) 
     3563//      if(err) 
     3564//              Print "DataFolder kill err = ",err 
     3565//      endif 
    35263566                 
    35273567        return(err) 
     
    35473587        endif 
    35483588        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3549         err = V_KillNamedDataFolder(fname) 
    3550         if(err) 
    3551                 Print "DataFolder kill err = ",err 
    3552         endif 
     3589//      err = V_KillNamedDataFolder(fname) 
     3590//      if(err) 
     3591//              Print "DataFolder kill err = ",err 
     3592//      endif 
    35533593        return(err) 
    35543594End 
     
    35713611         
    35723612        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3573         err = V_KillNamedDataFolder(fname) 
    3574         if(err) 
    3575                 Print "DataFolder kill err = ",err 
    3576         endif 
     3613//      err = V_KillNamedDataFolder(fname) 
     3614//      if(err) 
     3615//              Print "DataFolder kill err = ",err 
     3616//      endif 
    35773617                 
    35783618        return(err) 
     
    35973637        endif 
    35983638        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3599         err = V_KillNamedDataFolder(fname) 
    3600         if(err) 
    3601                 Print "DataFolder kill err = ",err 
    3602         endif 
     3639//      err = V_KillNamedDataFolder(fname) 
     3640//      if(err) 
     3641//              Print "DataFolder kill err = ",err 
     3642//      endif 
    36033643        return(err) 
    36043644End 
     
    36223662        endif 
    36233663        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3624         err = V_KillNamedDataFolder(fname) 
    3625         if(err) 
    3626                 Print "DataFolder kill err = ",err 
    3627         endif 
     3664//      err = V_KillNamedDataFolder(fname) 
     3665//      if(err) 
     3666//              Print "DataFolder kill err = ",err 
     3667//      endif 
    36283668        return(err) 
    36293669End 
     
    36523692                endif 
    36533693                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3654                 err = V_KillNamedDataFolder(fname) 
    3655                 if(err) 
    3656                         Print "DataFolder kill err = ",err 
    3657                 endif 
     3694//              err = V_KillNamedDataFolder(fname) 
     3695//              if(err) 
     3696//                      Print "DataFolder kill err = ",err 
     3697//              endif 
    36583698                return(err) 
    36593699        endif 
     
    36823722                endif 
    36833723                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3684                 err = V_KillNamedDataFolder(fname) 
    3685                 if(err) 
    3686                         Print "DataFolder kill err = ",err 
    3687                 endif 
     3724//              err = V_KillNamedDataFolder(fname) 
     3725//              if(err) 
     3726//                      Print "DataFolder kill err = ",err 
     3727//              endif 
    36883728                return(err) 
    36893729        endif 
     
    37153755                endif 
    37163756                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3717                 err = V_KillNamedDataFolder(fname) 
    3718                 if(err) 
    3719                         Print "DataFolder kill err = ",err 
    3720                 endif 
     3757//              err = V_KillNamedDataFolder(fname) 
     3758//              if(err) 
     3759//                      Print "DataFolder kill err = ",err 
     3760//              endif 
    37213761                return(err) 
    37223762        endif 
     
    37453785                endif 
    37463786                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3747                 err = V_KillNamedDataFolder(fname) 
    3748                 if(err) 
    3749                         Print "DataFolder kill err = ",err 
    3750                 endif 
     3787//              err = V_KillNamedDataFolder(fname) 
     3788//              if(err) 
     3789//                      Print "DataFolder kill err = ",err 
     3790//              endif 
    37513791                return(err) 
    37523792        endif 
     
    37733813         
    37743814                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3775                 err = V_KillNamedDataFolder(fname) 
    3776                 if(err) 
    3777                         Print "DataFolder kill err = ",err 
    3778                 endif 
     3815//              err = V_KillNamedDataFolder(fname) 
     3816//              if(err) 
     3817//                      Print "DataFolder kill err = ",err 
     3818//              endif 
    37793819                 
    37803820                return(err) 
     
    38053845                endif 
    38063846                // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3807                 err = V_KillNamedDataFolder(fname) 
    3808                 if(err) 
    3809                         Print "DataFolder kill err = ",err 
    3810                 endif 
     3847//              err = V_KillNamedDataFolder(fname) 
     3848//              if(err) 
     3849//                      Print "DataFolder kill err = ",err 
     3850//              endif 
    38113851                return(err) 
    38123852        endif 
     
    38363876        endif 
    38373877        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3838         err = V_KillNamedDataFolder(fname) 
    3839         if(err) 
    3840                 Print "DataFolder kill err = ",err 
    3841         endif 
     3878//      err = V_KillNamedDataFolder(fname) 
     3879//      if(err) 
     3880//              Print "DataFolder kill err = ",err 
     3881//      endif 
    38423882        return(err) 
    38433883End 
     
    38603900         
    38613901        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3862         err = V_KillNamedDataFolder(fname) 
    3863         if(err) 
    3864                 Print "DataFolder kill err = ",err 
    3865         endif 
     3902//      err = V_KillNamedDataFolder(fname) 
     3903//      if(err) 
     3904//              Print "DataFolder kill err = ",err 
     3905//      endif 
    38663906                 
    38673907        return(err) 
     
    38863926        endif 
    38873927        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3888         err = V_KillNamedDataFolder(fname) 
    3889         if(err) 
    3890                 Print "DataFolder kill err = ",err 
    3891         endif 
     3928//      err = V_KillNamedDataFolder(fname) 
     3929//      if(err) 
     3930//              Print "DataFolder kill err = ",err 
     3931//      endif 
    38923932        return(err) 
    38933933End 
     
    39103950         
    39113951        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3912         err = V_KillNamedDataFolder(fname) 
    3913         if(err) 
    3914                 Print "DataFolder kill err = ",err 
    3915         endif 
     3952//      err = V_KillNamedDataFolder(fname) 
     3953//      if(err) 
     3954//              Print "DataFolder kill err = ",err 
     3955//      endif 
    39163956                 
    39173957        return(err) 
     
    39353975         
    39363976        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3937         err = V_KillNamedDataFolder(fname) 
    3938         if(err) 
    3939                 Print "DataFolder kill err = ",err 
    3940         endif 
     3977//      err = V_KillNamedDataFolder(fname) 
     3978//      if(err) 
     3979//              Print "DataFolder kill err = ",err 
     3980//      endif 
    39413981                 
    39423982        return(err) 
     
    39614001        endif 
    39624002        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3963         err = V_KillNamedDataFolder(fname) 
    3964         if(err) 
    3965                 Print "DataFolder kill err = ",err 
    3966         endif 
     4003//      err = V_KillNamedDataFolder(fname) 
     4004//      if(err) 
     4005//              Print "DataFolder kill err = ",err 
     4006//      endif 
    39674007        return(err) 
    39684008End 
     
    39864026        endif 
    39874027        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    3988         err = V_KillNamedDataFolder(fname) 
    3989         if(err) 
    3990                 Print "DataFolder kill err = ",err 
    3991         endif 
     4028//      err = V_KillNamedDataFolder(fname) 
     4029//      if(err) 
     4030//              Print "DataFolder kill err = ",err 
     4031//      endif 
    39924032        return(err) 
    39934033End 
     
    40114051        endif 
    40124052        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4013         err = V_KillNamedDataFolder(fname) 
    4014         if(err) 
    4015                 Print "DataFolder kill err = ",err 
    4016         endif 
     4053//      err = V_KillNamedDataFolder(fname) 
     4054//      if(err) 
     4055//              Print "DataFolder kill err = ",err 
     4056//      endif 
    40174057        return(err) 
    40184058End 
     
    40354075         
    40364076        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4037         err = V_KillNamedDataFolder(fname) 
    4038         if(err) 
    4039                 Print "DataFolder kill err = ",err 
    4040         endif 
     4077//      err = V_KillNamedDataFolder(fname) 
     4078//      if(err) 
     4079//              Print "DataFolder kill err = ",err 
     4080//      endif 
    40414081                 
    40424082        return(err) 
     
    40614101         
    40624102        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4063         err = V_KillNamedDataFolder(fname) 
    4064         if(err) 
    4065                 Print "DataFolder kill err = ",err 
    4066         endif 
     4103//      err = V_KillNamedDataFolder(fname) 
     4104//      if(err) 
     4105//              Print "DataFolder kill err = ",err 
     4106//      endif 
    40674107                 
    40684108        return(err) 
     
    40894129         
    40904130        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4091         err = V_KillNamedDataFolder(fname) 
    4092         if(err) 
    4093                 Print "DataFolder kill err = ",err 
    4094         endif 
     4131//      err = V_KillNamedDataFolder(fname) 
     4132//      if(err) 
     4133//              Print "DataFolder kill err = ",err 
     4134//      endif 
    40954135                 
    40964136        return(err) 
     
    41154155        endif 
    41164156        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4117         err = V_KillNamedDataFolder(fname) 
    4118         if(err) 
    4119                 Print "DataFolder kill err = ",err 
    4120         endif 
     4157//      err = V_KillNamedDataFolder(fname) 
     4158//      if(err) 
     4159//              Print "DataFolder kill err = ",err 
     4160//      endif 
    41214161        return(err) 
    41224162End 
     
    41404180         
    41414181        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4142         err = V_KillNamedDataFolder(fname) 
    4143         if(err) 
    4144                 Print "DataFolder kill err = ",err 
    4145         endif 
     4182//      err = V_KillNamedDataFolder(fname) 
     4183//      if(err) 
     4184//              Print "DataFolder kill err = ",err 
     4185//      endif 
    41464186                 
    41474187        return(err) 
     
    41714211        endif 
    41724212        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4173         err = V_KillNamedDataFolder(fname) 
    4174         if(err) 
    4175                 Print "DataFolder kill err = ",err 
    4176         endif 
     4213//      err = V_KillNamedDataFolder(fname) 
     4214//      if(err) 
     4215//              Print "DataFolder kill err = ",err 
     4216//      endif 
    41774217        return(err) 
    41784218End      
     
    41984238         
    41994239        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4200         err = V_KillNamedDataFolder(fname) 
    4201         if(err) 
    4202                 Print "DataFolder kill err = ",err 
    4203         endif 
     4240//      err = V_KillNamedDataFolder(fname) 
     4241//      if(err) 
     4242//              Print "DataFolder kill err = ",err 
     4243//      endif 
    42044244                 
    42054245        return(err) 
     
    42244264        endif 
    42254265        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4226         err = V_KillNamedDataFolder(fname) 
    4227         if(err) 
    4228                 Print "DataFolder kill err = ",err 
    4229         endif 
     4266//      err = V_KillNamedDataFolder(fname) 
     4267//      if(err) 
     4268//              Print "DataFolder kill err = ",err 
     4269//      endif 
    42304270        return(err) 
    42314271End 
     
    42494289         
    42504290        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4251         err = V_KillNamedDataFolder(fname) 
    4252         if(err) 
    4253                 Print "DataFolder kill err = ",err 
    4254         endif 
     4291//      err = V_KillNamedDataFolder(fname) 
     4292//      if(err) 
     4293//              Print "DataFolder kill err = ",err 
     4294//      endif 
    42554295                 
    42564296        return(err) 
     
    42804320        endif 
    42814321        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4282         err = V_KillNamedDataFolder(fname) 
    4283         if(err) 
    4284                 Print "DataFolder kill err = ",err 
    4285         endif 
     4322//      err = V_KillNamedDataFolder(fname) 
     4323//      if(err) 
     4324//              Print "DataFolder kill err = ",err 
     4325//      endif 
    42864326        return(err) 
    42874327End      
     
    43074347         
    43084348        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4309         err = V_KillNamedDataFolder(fname) 
    4310         if(err) 
    4311                 Print "DataFolder kill err = ",err 
    4312         endif 
     4349//      err = V_KillNamedDataFolder(fname) 
     4350//      if(err) 
     4351//              Print "DataFolder kill err = ",err 
     4352//      endif 
    43134353                 
    43144354        return(err) 
     
    43354375        endif 
    43364376        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4337         err = V_KillNamedDataFolder(fname) 
    4338         if(err) 
    4339                 Print "DataFolder kill err = ",err 
    4340         endif 
     4377//      err = V_KillNamedDataFolder(fname) 
     4378//      if(err) 
     4379//              Print "DataFolder kill err = ",err 
     4380//      endif 
    43414381        return(err) 
    43424382End      
     
    43614401         
    43624402        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4363         err = V_KillNamedDataFolder(fname) 
    4364         if(err) 
    4365                 Print "DataFolder kill err = ",err 
    4366         endif 
     4403//      err = V_KillNamedDataFolder(fname) 
     4404//      if(err) 
     4405//              Print "DataFolder kill err = ",err 
     4406//      endif 
    43674407                 
    43684408        return(err) 
     
    43884428        endif 
    43894429        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4390         err = V_KillNamedDataFolder(fname) 
    4391         if(err) 
    4392                 Print "DataFolder kill err = ",err 
    4393         endif 
     4430//      err = V_KillNamedDataFolder(fname) 
     4431//      if(err) 
     4432//              Print "DataFolder kill err = ",err 
     4433//      endif 
    43944434        return(err) 
    43954435End      
     
    44134453         
    44144454        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4415         err = V_KillNamedDataFolder(fname) 
    4416         if(err) 
    4417                 Print "DataFolder kill err = ",err 
    4418         endif 
     4455//      err = V_KillNamedDataFolder(fname) 
     4456//      if(err) 
     4457//              Print "DataFolder kill err = ",err 
     4458//      endif 
    44194459                 
    44204460        return(err) 
     
    44394479         
    44404480        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4441         err = V_KillNamedDataFolder(fname) 
    4442         if(err) 
    4443                 Print "DataFolder kill err = ",err 
    4444         endif 
     4481//      err = V_KillNamedDataFolder(fname) 
     4482//      if(err) 
     4483//              Print "DataFolder kill err = ",err 
     4484//      endif 
    44454485                 
    44464486        return(err) 
     
    44674507         
    44684508        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4469         err = V_KillNamedDataFolder(fname) 
    4470         if(err) 
    4471                 Print "DataFolder kill err = ",err 
    4472         endif 
     4509//      err = V_KillNamedDataFolder(fname) 
     4510//      if(err) 
     4511//              Print "DataFolder kill err = ",err 
     4512//      endif 
    44734513                 
    44744514        return(err) 
     
    44934533        endif 
    44944534        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4495         err = V_KillNamedDataFolder(fname) 
    4496         if(err) 
    4497                 Print "DataFolder kill err = ",err 
    4498         endif 
     4535//      err = V_KillNamedDataFolder(fname) 
     4536//      if(err) 
     4537//              Print "DataFolder kill err = ",err 
     4538//      endif 
    44994539        return(err) 
    45004540End 
     
    45184558         
    45194559        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4520         err = V_KillNamedDataFolder(fname) 
    4521         if(err) 
    4522                 Print "DataFolder kill err = ",err 
    4523         endif 
     4560//      err = V_KillNamedDataFolder(fname) 
     4561//      if(err) 
     4562//              Print "DataFolder kill err = ",err 
     4563//      endif 
    45244564                 
    45254565        return(err) 
     
    45494589        endif 
    45504590        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4551         err = V_KillNamedDataFolder(fname) 
    4552         if(err) 
    4553                 Print "DataFolder kill err = ",err 
    4554         endif 
     4591//      err = V_KillNamedDataFolder(fname) 
     4592//      if(err) 
     4593//              Print "DataFolder kill err = ",err 
     4594//      endif 
    45554595        return(err) 
    45564596End              
     
    45834623        endif 
    45844624        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4585         err = V_KillNamedDataFolder(fname) 
    4586         if(err) 
    4587                 Print "DataFolder kill err = ",err 
    4588         endif 
     4625//      err = V_KillNamedDataFolder(fname) 
     4626//      if(err) 
     4627//              Print "DataFolder kill err = ",err 
     4628//      endif 
    45894629        return(err) 
    45904630end 
     
    46094649         
    46104650        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4611         err = V_KillNamedDataFolder(fname) 
    4612         if(err) 
    4613                 Print "DataFolder kill err = ",err 
    4614         endif 
     4651//      err = V_KillNamedDataFolder(fname) 
     4652//      if(err) 
     4653//              Print "DataFolder kill err = ",err 
     4654//      endif 
    46154655                 
    46164656        return(err) 
     
    46364676        endif 
    46374677        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4638         err = V_KillNamedDataFolder(fname) 
    4639         if(err) 
    4640                 Print "DataFolder kill err = ",err 
    4641         endif 
     4678//      err = V_KillNamedDataFolder(fname) 
     4679//      if(err) 
     4680//              Print "DataFolder kill err = ",err 
     4681//      endif 
    46424682        return(err) 
    46434683end 
     
    46634703        endif 
    46644704        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4665         err = V_KillNamedDataFolder(fname) 
    4666         if(err) 
    4667                 Print "DataFolder kill err = ",err 
    4668         endif 
     4705//      err = V_KillNamedDataFolder(fname) 
     4706//      if(err) 
     4707//              Print "DataFolder kill err = ",err 
     4708//      endif 
    46694709        return(err) 
    46704710end 
     
    46904730        endif 
    46914731        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4692         err = V_KillNamedDataFolder(fname) 
    4693         if(err) 
    4694                 Print "DataFolder kill err = ",err 
    4695         endif 
     4732//      err = V_KillNamedDataFolder(fname) 
     4733//      if(err) 
     4734//              Print "DataFolder kill err = ",err 
     4735//      endif 
    46964736        return(err) 
    46974737end 
     
    47164756         
    47174757        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4718         err = V_KillNamedDataFolder(fname) 
    4719         if(err) 
    4720                 Print "DataFolder kill err = ",err 
    4721         endif 
     4758//      err = V_KillNamedDataFolder(fname) 
     4759//      if(err) 
     4760//              Print "DataFolder kill err = ",err 
     4761//      endif 
    47224762                 
    47234763        return(err) 
     
    47444784        endif 
    47454785        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4746         err = V_KillNamedDataFolder(fname) 
    4747         if(err) 
    4748                 Print "DataFolder kill err = ",err 
    4749         endif 
     4786//      err = V_KillNamedDataFolder(fname) 
     4787//      if(err) 
     4788//              Print "DataFolder kill err = ",err 
     4789//      endif 
    47504790        return(err) 
    47514791end 
     
    47714811        endif 
    47724812        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4773         err = V_KillNamedDataFolder(fname) 
    4774         if(err) 
    4775                 Print "DataFolder kill err = ",err 
    4776         endif 
     4813//      err = V_KillNamedDataFolder(fname) 
     4814//      if(err) 
     4815//              Print "DataFolder kill err = ",err 
     4816//      endif 
    47774817        return(err) 
    47784818end 
     
    47974837        endif 
    47984838        // now be sure to kill the data folder to force a re-read of the data next time this file is read in 
    4799         err = V_KillNamedDataFolder(fname) 
    4800         if(err) 
    4801                 Print "DataFolder kill err = ",err 
    4802         endif 
     4839//      err = V_KillNamedDataFolder(fname) 
     4840//&