Changeset 800


Ignore:
Timestamp:
May 4, 2011 9:47:33 AM (11 years ago)
Author:
srkline
Message:

Changed the 2D resolution calculation to include gravity. This seems to work, but will still require some testing. It requires no modifications to the smearing calculation, still using parallel and perpendicular directions.

Added a Fake Update feature to the RealTime? update. There are specific, separate instructions for how to set this up. Usef (possibly) for summer schools or demos.

Adjusted the 2D MonteCarlo? simulation to a corrected beam center. The Gauss Peak was not symmetric around the old beam center.

Corrected the AAO resolution smearing functions to work with cursors.

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

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_Cylinder_Fills.ipf

    r798 r800  
    400400        prompt len,"length of cylinders" 
    401401        prompt periodic,"1=periodic, 0=non-periodic boundaries" 
     402        Prompt sobol,"1=Sobol, 0=random" 
    402403         
    403404        $w=0 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Alpha/Tinker/FFT_KR_Parser.ipf

    r798 r800  
    383383        Variable/G root:KR_Npt = 100 
    384384 
     385        FFT_MakeMatrixButtonProc("") 
     386 
    385387        NewPanel /W=(241,44,1169,458)/N=MultiCyl/K=1 as "Multi-Cylinder" 
    386388        ModifyPanel cbRGB=(49825,57306,65535) 
    387389 
    388         Button button_0,pos={45,79},size={100,20},proc=KR_Show3DButtonProc,title="Show 3D" 
     390        Button button_0,pos={45,80},size={100,20},proc=KR_Show3DButtonProc,title="Show 3D" 
    389391        Button button_1,pos={46,51},size={100,20},proc=KR_Plot1DButtonProc,title="Plot 1D" 
    390392        Button button_2,pos={178,80},size={120,20},proc=KR_DoCalcButtonProc,title="Do Calculation" 
     393        Button button_3,pos={600,50},size={120,20},proc=KR_DeleteRow,title="Delete Row(s)" 
    391394        ValDisplay valdisp_0,pos={339,16},size={80,13},title="FFT_T" 
    392395        ValDisplay valdisp_0,limits={0,0,0},barmisc={0,1000},value= #"root:FFT_T" 
     
    433436                        endif 
    434437         
     438                        break 
     439        endswitch 
     440 
     441        return 0 
     442End 
     443 
     444Function KR_DeleteRow(ba) : ButtonControl 
     445        STRUCT WMButtonAction &ba 
     446 
     447        switch( ba.eventCode ) 
     448                case 2: // mouse up 
     449                         
     450                        GetSelection table, MultiCyl#T0,3 
     451//                      Print V_flag, V_startRow, V_startCol, V_endRow, V_endCol 
     452                        DoAlert 1, "Do want to delete rows "+num2Str(V_StartRow)+" through "+num2str(V_endRow)+" ?" 
     453                        if(V_flag==1)                    
     454                                DeletePoints V_StartRow,(V_endRow-V_StartRow+1),xx,yy,zz,rri,hti,sbp,rotx,roty,sld 
     455                        endif 
     456                         
    435457                        break 
    436458        endswitch 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Models/Models_2D/PeakGauss2D_v40.ipf

    r794 r800  
    182182        //no threads 
    183183//      Smear_2DModel_PP(PeakGauss2D_noThread,s,10) 
     184//      Smear_2DModel_PPG(PeakGauss2D_noThread,s,10) 
    184185 
    185186        //or threaded... 
  • sans/Dev/trunk/NCNR_User_Procedures/Common/GaussUtils_v40.ipf

    r797 r800  
    419419        Variable nord                   //number of quadrature points to used 
    420420 
     421 
     422// special case of integral limits that are identical 
     423        if(upLim == loLim) 
     424                return( fcn(w,x, loLim)) 
     425        endif 
     426         
    421427// local variables 
    422428        Variable ii,va,vb,summ,yyy,zi 
     
    445451        // Using 5 Gauss points              
    446452        // remember to index from 0,size-1 
    447  
     453         
    448454        summ = 0.0              // initialize integral 
    449455        ii=0                    // loop counter 
     
    472478        Variable x      //x-value (q) for the calculation 
    473479 
     480 
     481// special case of integral limits that are identical 
     482        if(upLim == loLim) 
     483                return( fcn(w,x, loLim)) 
     484        endif 
     485         
    474486// local variables 
    475487        Variable nord,ii,va,vb,summ,yyy,zi 
     
    525537        Variable x      //x-value (q) for the calculation 
    526538 
     539// special case of integral limits that are identical 
     540        if(upLim == loLim) 
     541                return( fcn(w,x, loLim)) 
     542        endif 
     543         
    527544// local variables 
    528545        Variable nord,ii,va,vb,summ,yyy,zi 
     
    578595        Variable x      //x-value (q) for the calculation 
    579596 
     597// special case of integral limits that are identical 
     598        if(upLim == loLim) 
     599                return( fcn(w,x, loLim)) 
     600        endif 
     601         
    580602// local variables 
    581603        Variable nord,ii,va,vb,summ,yyy,zi 
     
    631653 
    632654//**** The coefficient wave is passed into this function and straight through to the unsmeared model function 
    633  
     655// special case of integral limits that are identical 
     656        if(upLim == loLim) 
     657                return( fcn(w,x, loLim)) 
     658        endif 
     659         
    634660// local variables 
    635661        Variable nord,ii,va,vb,summ,yyy,zi 
     
    906932                endif 
    907933         
    908                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    909 //              Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
     934//              answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     935                Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
    910936                 
    911937                Return (0) 
     
    956982                endif 
    957983         
    958                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    959 //              Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
     984//              answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     985                Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
    960986 
    961987                Return (0) 
     
    9821008        String weightStr,zStr 
    9831009        Variable nord=20 
     1010 
    9841011         
    9851012        if (dimsize(resW,1) > 4 && useTrap != 1) 
     
    10121039                endif 
    10131040         
    1014                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    1015 //              Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
     1041//              answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     1042                Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
    10161043 
    10171044                Return (0) 
     
    10601087                endif 
    10611088         
    1062                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    1063 //              Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
     1089//              answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     1090                Smear_Model_N_AAO(fcn,w,x,resW,weightW,abscissW,nord,answer) 
    10641091 
    10651092                Return (0) 
     
    16121639// provides some speedup. 
    16131640// 
    1614 //// APRIL 2011 *** this function is NOT YET CURSOR-AWARE. This needs to be addressed before it can be used 
     1641//// APRIL 2011 *** this function is now cursor aware. The whole input x-wave is interpolated 
    16151642// 
    16161643// 
     
    16531680        // returned from the interpolation (as expected) 
    16541681 
    1655         Make/O/D/N=(DimSize(resW, 0)) sigQ,qbar,shad,qvals,va,vb 
    1656         sigq = resW[p][0]               //std dev of resolution fn 
    1657         qbar = resW[p][1]               //mean q-value 
    1658         shad = resW[p][2]               //beamstop shadow factor 
    1659         qvals = resW[p][3]      //q-values where R(q) is known 
    1660  
    1661         //SKIP the interpolation, points passed in ARE (MUST) be the experimental q-values 
    1662          
     1682        Make/O/D/N=(numpnts(x)) sigQ,qbar,shad,qvals,va,vb 
     1683        Make/O/D/N=(DimSize(resW, 0)) tmpsigQ,tmpqbar,tmpshad,tmpqvals 
     1684        tmpsigq = resW[p][0]            //std dev of resolution fn 
     1685        tmpqbar = resW[p][1]            //mean q-value 
     1686        tmpshad = resW[p][2]            //beamstop shadow factor 
     1687        tmpqvals = resW[p][3]   //q-values where R(q) is known 
     1688 
     1689        //interpolate the whole input x-wave to make sure that the resolution and input x are in sync if cursors are used 
     1690        shad = interp(x,tmpqvals,tmpshad) 
     1691        qbar = interp(x,tmpqvals,tmpqbar) 
     1692        sigq = interp(x,tmpqvals,tmpsigq) 
    16631693         
    16641694        // if USANS data, handle separately 
     
    17551785        sm_ans /= normalize 
    17561786         
     1787        KillWaves/Z tmpsigQ,tmpqbar,tmpshad,tmpqvals 
     1788         
    17571789        return(0) 
    17581790         
  • sans/Dev/trunk/NCNR_User_Procedures/Common/Packages/PlotManager/PlotUtilsMacro_v40.ipf

    r796 r800  
    11871187 
    11881188        // from 2010 model functions 
    1189         list = RemoveFromList("fTwoYukawa;",list,";") 
     1189        list = RemoveFromList("fTwoYukawa;DoBoxGraph;",list,";") 
    11901190         
    11911191        // from Debye Sphere method 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/ANSTO_DataReadWrite.ipf

    r795 r800  
    10211021         
    10221022        // your writer here 
    1023         Wave wTransmission 
     1023//      Wave wTransmission 
    10241024        //nha ??? Should make this wave in our own DataFolder to avoid clashing names.  
    1025         Make /N=(1,1) wTransmission 
     1025//      Make /N=(1,1) wTransmission 
     1026        Make/O/D/N=1 wTransmission 
    10261027        String groupName = "/reduce" 
    10271028        String varName = "Transmission" 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/Buttons.ipf

    r764 r800  
    7070End 
    7171 
    72 /////not used//// 
    73 // function control a background task of "live" image updating 
    74 // 
    75 Function UpdateImage(ctrlName) : ButtonControl 
    76         String ctrlName 
    77          
    78         if (cmpstr(ctrlName,"bStart") == 0) 
    79                 Button $ctrlName,title="Stop",rename=bStop 
    80         //      Start the updating - FakeUpdate() has been designated as the background task 
    81                 CtrlBackground period=60,start 
    82         else 
    83                 Button $ctrlName,title="Start",rename=bStart 
    84         //      Stop the updating  
    85                 CtrlBackground stop 
    86         endif 
    87 End 
    88  
    89 //not used, but useful for real-time display of the detector 
    90 //old, and likely not up-to-date with the present data folder structure 
    91 Function FakeUpdate() 
    92  
    93         //get the current displayed data (so the correct folder is used) 
    94         SVAR cur_folder=root:myGlobals:gDataDisplayType 
    95         SetDataFolder "root:Packages:NIST:"+cur_folder          //use the full path, so it will always work 
    96         WAVE data = $"data" 
    97 //      WAVE vlegend = $"vlegend" 
    98          
    99         //alter the raw data 
    100         data = abs(enoise(10)) 
    101          
    102         // adjust the color bar 
    103         WaveStats/Q data 
    104 //      SetScale/I y,V_min,V_max,"" vlegend 
    105 //      vlegend=y 
    106                  
    107         // assume all is OK, return 0 
    108         // button1 controls the start/stop of the background task 
    109          
    110         //back to root folder 
    111         SetDataFolder root: 
    112          
    113         return 0 
    114 End 
    11572 
    11673//Updates the color map used for the SANS data based on the values of the slider bars 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/MultScatter_MonteCarlo_2D.ipf

    r757 r800  
    12501250        NVAR doMonteCarlo = root:Packages:NIST:SAS:gDoMonteCarlo                // == 1 if 2D MonteCarlo set by hidden flag 
    12511251        WAVE rw=root:Packages:NIST:SAS:realsRead 
     1252        WAVE iw=root:Packages:NIST:SAS:integersRead 
    12521253         
    12531254// Try to nicely exit from a threading error, if possible 
     
    14231424         
    14241425        NVAR rawCts = root:Packages:NIST:SAS:gRawCounts 
     1426        NVAR ctTime = root:Packages:NIST:SAS:gCntTime 
     1427 
    14251428        if(!rawCts)                     //go ahead and do the abs scaling to the linear_data 
    14261429                linear_data = linear_data / kappa 
     
    14491452                         
    14501453        data = linear_data 
     1454         
     1455        // fill in bits of the header 
     1456        rw[0] = imon            //the simulated monitor counts 
     1457        iw[2] = ctTime          //simulated counting time in seconds 
    14511458        // re-average the 2D data 
    14521459        S_CircularAverageTo1D("SAS") 
     
    14571464        // simulate the empty cell scattering, only in 1D 
    14581465        Simulate_1D_EmptyCell("TwoLevel_EC",aveint,qval,sigave,sigmaq,qbar,fsubs) 
    1459         NVAR ctTime = root:Packages:NIST:SAS:gCntTime 
    14601466        Print "Sample Simulation (2D) CR = ",results[9]/ctTime 
    1461         if(WinType("SANS_Data") ==1) 
    1462                 Execute "ChangeDisplay(\"SAS\")"                //equivalent to pressing "Show 2D" 
    1463         endif 
     1467        // check, so that RT simulation won't display SAS data type 
     1468        NVAR/Z gFakeUpdate = root:myGlobals:gFakeUpdate 
     1469        if(NVAR_Exists(gFakeUpdate) && gFakeUpdate == 1) 
     1470                // do nothing 
     1471        else 
     1472                if(WinType("SANS_Data") ==1) 
     1473                        Execute "ChangeDisplay(\"SAS\")"                //equivalent to pressing "Show 2D" 
     1474                endif 
     1475        endif 
     1476 
    14641477 
    14651478        return(0) 
     
    22212234// 
    22222235// 
    2223 //Function Script_2DMC() 
    2224 // 
    2225 // 
    2226 //      NVAR SimTimeWarn = root:Packages:NIST:SAS:g_SimTimeWarn 
    2227 //      SimTimeWarn = 36000                     //sets the threshold for the warning dialog to 10 hours 
    2228 //      STRUCT WMButtonAction ba 
    2229 //      ba.eventCode = 2                        //fake mouse click on button 
    2230 //       
    2231 //      NVAR detDist = root:Packages:NIST:SAS:gDetDist 
    2232 // 
    2233 //      detDist = 200           //set directly in cm 
    2234 //      MC_DoItButtonProc(ba) 
    2235 //      SaveAsVAXButtonProc("",runIndex=105,simLabel="this is run 105, SDD = 200") 
    2236 //       
    2237 //      detDist = 300           //set directly in cm 
    2238 //      MC_DoItButtonProc(ba) 
    2239 //      SaveAsVAXButtonProc("",runIndex=106,simLabel="this is run 106, SDD = 300") 
    2240 // 
    2241 //      detDist = 400           //set directly in cm 
    2242 //      MC_DoItButtonProc(ba) 
    2243 //      SaveAsVAXButtonProc("",runIndex=107,simLabel="this is run 107, SDD = 400") 
    2244 //       
    2245 // 
    2246 // SimTimeWarn = 10             //back to 10 seconds for manual operation 
    2247 //      return(0) 
    2248 //end 
     2236Function Script_2DMC() 
     2237 
     2238 
     2239        NVAR SimTimeWarn = root:Packages:NIST:SAS:g_SimTimeWarn 
     2240        SimTimeWarn = 36000                     //sets the threshold for the warning dialog to 10 hours 
     2241        STRUCT WMButtonAction ba 
     2242        ba.eventCode = 2                        //fake mouse click on button 
     2243         
     2244        NVAR detDist = root:Packages:NIST:SAS:gDetDist 
     2245 
     2246        detDist = 200           //set directly in cm 
     2247        MC_DoItButtonProc(ba) 
     2248        SaveAsVAXButtonProc("",runIndex=105,simLabel="this is run 105, SDD = 200") 
     2249         
     2250        detDist = 300           //set directly in cm 
     2251        MC_DoItButtonProc(ba) 
     2252        SaveAsVAXButtonProc("",runIndex=106,simLabel="this is run 106, SDD = 300") 
     2253 
     2254        detDist = 400           //set directly in cm 
     2255        MC_DoItButtonProc(ba) 
     2256        SaveAsVAXButtonProc("",runIndex=107,simLabel="this is run 107, SDD = 400") 
     2257         
     2258 
     2259 SimTimeWarn = 10               //back to 10 seconds for manual operation 
     2260        return(0) 
     2261end 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/NCNR_Utils.ipf

    r794 r800  
    307307         
    308308        // this is really sigma_Q_parallel 
    309         SigmaQX = kap*kap/12* (3*(S1/L1)^2 + 3*(S2/LP)^2 + (proj_DDet/L2)^2 + (sin(phi))^2*8*(a_val_L2)^2*lambda^4*lambdaWidth^2) 
     309        SigmaQX = kap*kap/12 * (3*(S1/L1)^2 + 3*(S2/LP)^2 + (proj_DDet/L2)^2 + (sin(phi))^2*8*(a_val_L2)^2*lambda^4*lambdaWidth^2) 
    310310        SigmaQX += inQ*inQ*v_lambda 
    311311 
     
    313313        proj_DDet = DDet*sin(phi) + DDet*cos(phi)               //not necessary, since DDet is the same in both X and Y directions 
    314314 
    315         SigmaQY = 3*(S1/L1)^2 + 3*(S2/LP)^2 + (proj_DDet/L2)^2 + (cos(phi))^2*8*(a_val_L2)^2*lambda^4*lambdaWidth^2 
    316         SigmaQY *= kap*kap/12 
     315        SigmaQY = kap*kap/12 * (3*(S1/L1)^2 + 3*(S2/LP)^2 + (proj_DDet/L2)^2 + (cos(phi))^2*8*(a_val_L2)^2*lambda^4*lambdaWidth^2) 
    317316         
    318317        SigmaQX = sqrt(SigmaQX) 
    319318        SigmaQy = sqrt(SigmaQY) 
    320319         
     320 
     321///////////////////////////////////////////////// 
     322///      
     323        ////// this is all experimental, inclusion of gravity effect into the parallel component 
     324        // 
     325        Variable yg_d,acc,sdd,ssd,lambda0,DL_L,sig_l 
     326        Variable var_qlx,var_qly,var_ql,qx,qy,sig_perp,sig_para 
     327//      G = 981.  //!   ACCELERATION OF GRAVITY, CM/SEC^2 
     328        acc = vz_1              //      3.956E5 //!     CONVERT WAVELENGTH TO VELOCITY CM/SEC 
     329        SDD = L2                //1317 
     330        SSD = L1                //1627          //cm 
     331        lambda0 = lambda                //              15 
     332        DL_L = lambdaWidth              //0.236 
     333        SIG_L = DL_L/sqrt(6) 
     334        YG_d = -0.5*G*SDD*(SSD+SDD)*(LAMBDA0/acc)^2 
     335//      Print "DISTANCE BEAM FALLS DUE TO GRAVITY (CM) = ",YG 
     336         
     337        sig_perp = kap*kap/12 * (3*(S1/L1)^2 + 3*(S2/LP)^2 + (proj_DDet/L2)^2) 
     338        sig_perp = sqrt(sig_perp) 
     339         
     340         
     341        FindQxQy(inQ,phi,qx,qy) 
     342         
     343        VAR_QLY = SIG_L^2 * (QY+4*PI*YG_d/(SDD*LAMBDA0))^2 
     344        VAR_QLX = (SIG_L*QX)^2 
     345        VAR_QL = VAR_QLY + VAR_QLX  //! WAVELENGTH CONTRIBUTION TO VARIANCE 
     346        sig_para = (sig_perp^2 + VAR_QL)^0.5 
     347         
     348//return values PBR      
     349        SigmaQX = sig_para 
     350        SigmaQy = sig_perp 
     351         
     352//       
    321353         
    322354        results = "success" 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/RealTimeUpdate_RT.ipf

    r570 r800  
    1616// 
    1717// as of 110101, the help file has not been written 
     18// 
     19// 
     20// 
     21// for Summer School 2011 --- a fake update 
     22// 1) set the flag 
     23// Variable/G root:myGlobals:gFakeUpdate=1 
     24// 2) load any data file as the RT data 
     25// 3) get SASCALC set up to the correct configuration 
     26// 4) run ClearRTFolder() to empty out the SAS folder, and update the display 
     27// 5) start the updating 
     28// 
     29// -- generate a script that will (from scratch) open everything needed, open/hide windows 
     30// as needed, and be sure that all of the files, varaibles, etc. that are needed are actually there. 
     31// 
     32// --needs SASCALC + an analysis model for it to work, and still some details to work out for  
     33// smooth initialization of the process, but it should work. 
     34// 
     35// 
     36// 
     37Proc Init_FakeRT() 
     38        pInit_FakeRT() 
     39End 
     40 
     41Proc Clear_RT_Folder() 
     42        ClearRTFolder() 
     43End 
     44 
     45// 
    1846// 
    1947//***************************** 
     
    343371        NVAR monitorCounts = root:myGlobals:RT:monitorCounts 
    344372        NVAR monitorCountRate = root:myGlobals:RT:monitorCountRate 
    345         SVAR title = root:myGlobals:gCurDispFile 
     373        SVAR/Z title = root:myGlobals:gCurDispFile 
    346374         
    347375        title="Real-Time : "+filename 
     
    553581        NVAR monitorCounts = root:myGlobals:RT:monitorCounts 
    554582        NVAR monitorCountRate = root:myGlobals:RT:monitorCountRate 
    555         SVAR title=root:myGlobals:gCurDispFile 
     583        SVAR/Z title=root:myGlobals:gCurDispFile 
    556584        SVAR sampledesc=root:myGlobals:gCurTitle 
    557585                         
     
    581609                //err = ReadOrdelaHST(RT_fileStr) 
    582610                //err = ReadHeaderAndData(RT_fileStr) 
    583                 err = ReadRTAndData(RT_fileStr) 
     611                NVAR/Z gFakeUpdate = root:myGlobals:gFakeUpdate 
     612                if(NVAR_Exists(gFakeUpdate) && gFakeUpdate == 1) 
     613                        err = FakeUpdate() 
     614                else 
     615                        err = ReadRTAndData(RT_fileStr) 
     616                endif 
     617                 
    584618                if(err==1) 
    585619                        Button $"bkgStop",win=RT_Panel,title="Start Updating",rename=bkgStart 
     
    632666                // update the 1d plot 
    633667                if(WinType("Plot_1d")==1)               //if the 1D graph exists 
    634                         Panel_DoAverageButtonProc("")            
     668                        Panel_DoAverageButtonProc("")    
     669                        DoWindow/F SANS_Data     
    635670                endif 
    636671                /////// 
     
    9691004 
    9701005End 
     1006 
     1007/////not used//// 
     1008// function control a background task of "live" image updating 
     1009// 
     1010Function UpdateImage(ctrlName) : ButtonControl 
     1011        String ctrlName 
     1012         
     1013        if (cmpstr(ctrlName,"bStart") == 0) 
     1014                Button $ctrlName,title="Stop",rename=bStop 
     1015        //      Start the updating - FakeUpdate() has been designated as the background task 
     1016                CtrlBackground period=60,start 
     1017        else 
     1018                Button $ctrlName,title="Start",rename=bStart 
     1019        //      Stop the updating  
     1020                CtrlBackground stop 
     1021        endif 
     1022End 
     1023 
     1024 
     1025// puts a "clean" instance of SAS into RealTime 
     1026Function ClearRTFolder() 
     1027 
     1028        String  RTPath = "root:Packages:NIST:RealTime" 
     1029        String  SimPath = "root:Packages:NIST:SAS" 
     1030         
     1031 
     1032        Duplicate/O $(SimPath + ":data"),$(RTPath+":data") 
     1033        Duplicate/O $(SimPath + ":linear_data"),$(RTPath+":linear_data") 
     1034        Duplicate/O $(SimPath + ":textread"),$(RTPath+":textread") 
     1035        Duplicate/O $(SimPath + ":integersread"),$(RTPath+":integersread") 
     1036        Duplicate/O $(SimPath + ":realsread"),$(RTPath+":realsread") 
     1037         
     1038        WAVE RT_rw = $(RTPath+":RealsRead") 
     1039        WAVE RT_iw = $(RTPath+":IntegersRead") 
     1040         
     1041        RT_iw[2] = 0 
     1042        RT_rw[0] = 0  
     1043 
     1044        Wave RTData = $(RTPath+":data") 
     1045        Wave RTLinData = $(RTPath+":linear_data") 
     1046        RTLinData = 0 
     1047        RTData = 0 
     1048 
     1049        // get the right Q axes on the display 
     1050        //add the qx and qy axes 
     1051        Wave q_x_axis=$"root:myGlobals:q_x_axis" 
     1052        Wave q_y_axis=$"root:myGlobals:q_y_axis" 
     1053        Set_Q_Axes(q_x_axis,q_y_axis,RTPath) 
     1054 
     1055        return(0) 
     1056End 
     1057 
     1058//not used, but useful for real-time display of the detector 
     1059//old, and likely not up-to-date with the present data folder structure 
     1060Function FakeUpdate() 
     1061 
     1062        //get the current displayed data (so the correct folder is used) 
     1063        SVAR cur_folder=root:myGlobals:gDataDisplayType 
     1064 
     1065        STRUCT WMButtonAction ba 
     1066        ba.eventCode = 2                        //fake mouse click on button 
     1067        MC_DoItButtonProc(ba) 
     1068 
     1069// would copy the work contents, but I want to add the MC results + times, etc. 
     1070//      Execute "CopyWorkFolder(\"Simulation\",\"RealTime\")" 
     1071         
     1072        //check for existence of data in oldtype 
     1073        // if the desired workfile doesn't exist, let the user know, and abort 
     1074        String RTPath,SimPath 
     1075        if(WaveExists($("root:Packages:NIST:RealTime:data")) == 0) 
     1076                ClearRTFolder() 
     1077//              Print "There is no work file in "+"SAS"+"--Aborting" 
     1078//              Return(1)               //error condition 
     1079        Endif 
     1080         
     1081        //check for log-scaling of the "type" data and adjust if necessary 
     1082//      ConvertFolderToLinearScale("SAS") 
     1083//      ConvertFolderToLinearScale("RealTime") 
     1084//      Fix_LogLinButtonState(0)                //make sure the button reflects the new linear scaling 
     1085        //then continue 
     1086 
     1087        //copy from current dir (type)=destPath to newtype, overwriting newtype contents 
     1088        SimPath = "root:Packages:NIST:SAS" 
     1089        RTPath = "root:Packages:NIST:RealTime" 
     1090//      Duplicate/O $(SimPath + ":textread"),$(RTPath+":textread") 
     1091//      Duplicate/O $(SimPath + ":integersread"),$(RTPath+":integersread") 
     1092//      Duplicate/O $(SimPath + ":realsread"),$(RTPath+":realsread") 
     1093//      Duplicate/O $(SimPath + ":linear_data_error"),$(RTPath+":linear_data_error") 
     1094 
     1095        WAVE RT_rw = $(RTPath+":RealsRead") 
     1096        WAVE Sim_rw = $(SimPath+":RealsRead") 
     1097        WAVE RT_iw = $(RTPath+":IntegersRead") 
     1098        WAVE Sim_iw = $(SimPath+":IntegersRead") 
     1099         
     1100        // accumulate the count time and monitor counts 
     1101        RT_iw[2] += Sim_iw[2] 
     1102        RT_rw[0] += Sim_rw[0] 
     1103 
     1104// accumulate the data 
     1105        Wave RTData = $(RTPath+":data") 
     1106        Wave RTLinData = $(RTPath+":linear_data")        
     1107        Wave SimLinData = $(SimPath+":linear_data")      
     1108        RTLinData += SimLinData 
     1109 
     1110        NVAR gIsLogScale = $(RTPath + ":gIsLogScale") 
     1111        if(gIsLogScale) 
     1112                RTData = log(RTLinData) 
     1113        else 
     1114                RTData = RTLinData 
     1115        endif 
     1116         
     1117//      Execute  "ChangeDisplay(\"RealTime\")" 
     1118        //just need to update the color bar 
     1119//      MapSliderProc("both",0,0) 
     1120 
     1121        //alter the raw data 
     1122//      linear_data += abs(enoise(1)) + abs(cos(p*q)) 
     1123//      data = linear_data 
     1124         
     1125 
     1126        //back to root folder 
     1127        SetDataFolder root: 
     1128         
     1129        return 0 
     1130End 
     1131 
     1132// 
     1133// 
     1134// 
     1135// to use, first load in the analysis and reduction packages 
     1136// -- then, load in the sphere model 
     1137// 
     1138// load sphere model 
     1139//      Execute/P "INSERTINCLUDE \"Sphere_v40\"" 
     1140//      Execute/P "COMPILEPROCEDURES " 
     1141//       
     1142// 
     1143Function pInit_FakeRT() 
     1144 
     1145 
     1146 
     1147// plot sphere model 
     1148        String cmdStr,funcStr 
     1149        funcStr = "SphereForm" 
     1150        sprintf cmdStr, "Plot%s()",funcStr 
     1151        Execute cmdStr 
     1152         
     1153// close graph (top) and table 
     1154        String topGraph= WinName(0,1)   //this is the topmost graph      
     1155        String topTable= WinName(0,2)   //this is the topmost table 
     1156        KillWindow $topGraph 
     1157        KillWindow $topTable 
     1158                 
     1159// change coef_sf[0] = 0.01 
     1160        Wave coef_sf = root:coef_sf 
     1161        coef_sf[0] = 0.01 
     1162         
     1163         
     1164 
     1165// open SASCALC 
     1166        Execute "SASCALC()" 
     1167         
     1168// open MC simulation window 
     1169        DoWindow/F MC_SASCALC 
     1170        if(V_flag==0) 
     1171                Execute "MC_SASCALC()"          //sets the variable 
     1172                AutoPositionWindow/M=1/R=SASCALC MC_SASCALC 
     1173        endif 
     1174        NVAR doSim = root:Packages:NIST:SAS:doSimulation 
     1175        doSim=1 
     1176         
     1177// set model 
     1178        SVAR gStr = root:Packages:NIST:SAS:gFuncStr  
     1179        gStr = "SphereForm" 
     1180        String listStr = MC_FunctionPopupList() 
     1181        Variable item = WhichListItem("SphereForm", listStr ) 
     1182        PopupMenu MC_popup0,win=MC_SASCALC,mode=(item+1) 
     1183         
     1184// set ct time to 5 s 
     1185        STRUCT WMSetVariableAction sva 
     1186        NVAR ctTime = root:Packages:NIST:SAS:gCntTime 
     1187        ctTime = 5 
     1188        sva.eventCode = 3               //update 
     1189        sva.dval = ctTime               //5 seconds 
     1190        CountTimeSetVarProc(sva) 
     1191         
     1192// be sure check boxes are raw_cts / BS in / XOP 
     1193        NVAR cts = root:Packages:NIST:SAS:gRawCounts 
     1194        NVAR BSin = root:Packages:NIST:SAS:gBeamStopIn 
     1195        NVAR xop = root:Packages:NIST:SAS:gUse_MC_XOP 
     1196        cts = 1 
     1197        BSin = 1 
     1198        xop = 1 
     1199         
     1200// run 1 simulation to "set" things 
     1201        DoWindow/F MC_SASCALC 
     1202        STRUCT WMButtonAction ba 
     1203        ba.eventCode = 2                        //fake mouse click on button 
     1204        MC_DoItButtonProc(ba) 
     1205 
     1206 
     1207// set RT fake flag 
     1208        Variable/G root:myGlobals:gFakeUpdate=1 
     1209 
     1210// open RT window 
     1211 
     1212// load (any) data file 
     1213 
     1214// ClearFolder 
     1215 
     1216 
     1217 
     1218 
     1219End 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/SASCALC.ipf

    r764 r800  
    17971797        rw[19] = val            // already in cm 
    17981798        //move the beamcenter, make it an integer value for the MC simulation 
    1799         rw[16] = 64 + round(2*rw[19])           //approximate beam X is 64 w/no offset, 114 w/25 cm offset  
    1800         rw[17] = 64             //typical value 
     1799        rw[16] = 64  + round(2*rw[19]) + 0.5            //approximate beam X is 64 w/no offset, 114 w/25 cm offset  
     1800        rw[17] = 64     + 0.5 //typical value 
    18011801         
    18021802        return(val) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/WriteQIS.ipf

    r797 r800  
    852852         
    853853//      Save/G/M="\r\n" labelWave,qx_val,qy_val,z_val as fullpath       // without resolution 
    854         Save/G/M="\r\n" labelWave,qx_val_s,qy_val_s,z_val_s,sw_s,qz_val_s,SigmaQx_s,SigmaQy_s,fSubS_s as fullpath       // write out the resolution information 
     854        Save/O/G/M="\r\n" labelWave,qx_val_s,qy_val_s,z_val_s,sw_s,qz_val_s,SigmaQx_s,SigmaQy_s,fSubS_s as fullpath     // write out the resolution information 
    855855#else 
    856856        Open refNum as fullpath 
Note: See TracChangeset for help on using the changeset viewer.