Ignore:
Timestamp:
Apr 14, 2009 3:31:17 PM (14 years ago)
Author:
srkline
Message:

minor changes and comments

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

Legend:

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

    r413 r490  
    11#pragma rtGlobals=1             // Use modern global access method. 
     2 
     3 
     4 
     5/// 
     6// *********** 
     7// it may be prefereable to COPY the files to the UP folder, so that the installer doesn't "eat" itself  
     8// and require users to re-download if they do something wrong. the difficulty with CopyFolder is that 
     9// on Windows it does a "mix-in" copy, rather than a delete/overwrite all. So it may be better to just leave 
     10// the installer as is, requiring a fresh copy each time. SRK 10MAR09 
     11// 
     12// 
     13/// 
    214 
    315// Install the NCNR Macros 
  • sans/Dev/trunk/NCNR_User_Procedures/Common/Packages/PlotManager/PlotUtils2D_v40.ipf

    r419 r490  
    2020        LoadWave/G/D/W/A 
    2121        String fileName = S_fileName 
     22        String path = S_Path 
    2223        Variable numCols = V_flag 
    2324 
     
    4647                NewDataFolder/S $("root:"+baseStr) 
    4748        endif 
     49         
     50        //read in the 18 lines of header (18th line starts w/ ASCII... 19th line is blank) 
     51        Make/O/T/N=18 header 
     52        Variable refnum,ii 
     53        string tmpStr="" 
     54        Open/R refNum  as (path+filename) 
     55        ii=0 
     56        do 
     57                tmpStr = "" 
     58                FReadLine refNum, tmpStr 
     59                header[ii] = tmpStr 
     60                ii+=1 
     61        while(ii < 18)           
     62        Close refnum 
     63         
     64        // ? parse to get nice variable names? put these in a structure just for fun? 
     65         
    4866         
    4967        ////overwrite the existing data, if it exists 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/MultScatter_MonteCarlo_2D.ipf

    r475 r490  
    426426                                                // so get it from the wave scaling instead 
    427427                                                Q0 =left + binarysearchinterp(ran_dev,abs(enoise(1)))*delta 
    428                                                 theta = Q0/2/Pi*wavelength              //SAS approximation 
     428                                                theta = Q0/2/Pi*wavelength              //SAS approximation. 1% error at theta=30 deg (theta/2=15deg) 
    429429                                                 
    430430                                                //Print "q0, theta = ",q0,theta 
     
    520520                                        // then it must be a transmitted neutron 
    521521                                        // don't need to calculate, just increment the proper counters 
    522                                         MC_linear_data[xCtr][yCtr] += 1 
     522                                         
     523                                        MC_linear_data[xCtr+xx/pixsize][yCtr+yy/pixsize] += 1 
    523524                                        isOn += 1 
    524525                                        nt[0] += 1 
     
    922923        CheckBox check0,pos={216,180},size={68,14},title="Raw counts",variable = root:Packages:NIST:SAS:gRawCounts 
    923924        CheckBox check0_1,pos={216,199},size={60,14},title="Yes Offset",variable= root:Packages:NIST:SAS:gDoTraceOffset 
     925        CheckBox check0_2,pos={216,199+19},size={60,14},title="Beam Stop in",variable= root:Packages:NIST:SAS:gBeamStopIn 
     926        CheckBox check0_3,pos={216,199+2*19},size={60,14},title="use XOP",variable= root:Packages:NIST:SAS:gUse_MC_XOP 
    924927         
    925928        String fldrSav0= GetDataFolder(1) 
     
    10641067End 
    10651068 
    1066  
     1069// calculates the fraction of the scattering that reaches the detector, given the random deviate function 
     1070// and qmin and qmax 
     1071// 
     1072// 
     1073// still some question of the corners and number of pixels per q-bin 
     1074Function FractionReachingDetector(ran_dev,Qmin,Qmax) 
     1075        wave ran_dev 
     1076        Variable Qmin,Qmax 
     1077         
     1078        Variable r1,r2,frac 
     1079        r1=x2pnt(ran_dev,Qmin) 
     1080        r2=x2pnt(ran_dev,Qmax) 
     1081         
     1082        // no normalization needed - the full q-range is defined as [0,1] 
     1083        frac = ran_dev[r2] - ran_dev[r1] 
     1084         
     1085        return frac 
     1086End 
    10671087 
    10681088 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/SASCALC.ipf

    r472 r490  
    117117        Variable/G root:Packages:NIST:SAS:gCntTime = 1 
    118118        Variable/G root:Packages:NIST:SAS:gDoMonteCarlo = 0 
     119        Variable/G root:Packages:NIST:SAS:gUse_MC_XOP = 1                               //set to zero to use Igor code 
     120        Variable/G root:Packages:NIST:SAS:gBeamStopIn = 1                       //set to zero for beamstop out (transmission) 
    119121        Variable/G root:Packages:NIST:SAS:gRawCounts = 0 
    120122        Variable/G root:Packages:NIST:SAS:gSaveIndex = 100 
     
    927929                t0 = stopMStimer(-2) 
    928930                inputWave[0] = 1000 
    929 //              Monte_SANS_Threaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
    930                 Monte_SANS_NotThreaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
     931                NVAR useXOP = root:Packages:NIST:SAS:gUse_MC_XOP                //if zero, will use non-threaded Igor code 
     932                 
     933                if(useXOP) 
     934                        //use a single thread, otherwise time is dominated by overhead 
     935                        Monte_SANS_NotThreaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
     936                else 
     937                        Monte_SANS(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
     938                endif 
     939                 
    931940                t0 = (stopMSTimer(-2) - t0)*1e-6 
    932941                t0 *= imon/1000/ThreadProcessorCount                    //projected time, in seconds (using threads for the calculation) 
     
    949958                t0 = stopMStimer(-2) 
    950959 
    951                 Monte_SANS_Threaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
    952 //              Monte_SANS_NotThreaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
    953  
     960                if(useXOP) 
     961                        Monte_SANS_Threaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
     962                else 
     963                        Monte_SANS_NotThreaded(inputWave,ran_dev,nt,j1,j2,nn,linear_data,results) 
     964                endif 
     965                 
    954966                t0 = (stopMSTimer(-2) - t0)*1e-6 
    955967                Printf  "MC sim time = %g seconds\r",t0 
     
    960972                endif 
    961973 
    962                 Print "counts on detector = ",sum(linear_data,-inf,inf) 
    963                  
    964                 linear_data[xCtr][yCtr] = 0                     //snip out the transmitted spike 
     974                Print "counts on detector, including transmitted = ",sum(linear_data,-inf,inf) 
     975                 
     976//              linear_data[xCtr][yCtr] = 0                     //snip out the transmitted spike 
    965977//              Print "counts on detector not transmitted = ",sum(linear_data,-inf,inf) 
    966978 
    967979                // or simulate a beamstop 
     980                NVAR MC_BS_in = root:Packages:NIST:SAS:gBeamStopIn              //if zero, beam stop is "out", as in a transmission measurement 
     981                 
    968982                Variable rad=beamstopDiam()/2           //beamstop radius in cm 
    969                 rad /= 0.5                              //convert cm to pixels 
    970                 rad += 0.                                       // (no - it cuts off the low Q artificially) add an extra pixel to each side to account for edge 
    971                 Duplicate/O linear_data,root:Packages:NIST:SAS:tmp_mask 
    972                 WAVE tmp_mask = root:Packages:NIST:SAS:tmp_mask 
    973                 tmp_mask = (sqrt((p-xCtr)^2+(q-yCtr)^2) < rad) ? 0 : 1          //behind beamstop = 0, away = 1 
    974                  
    975                 linear_data *= tmp_mask 
     983                if(MC_BS_in) 
     984                        rad /= 0.5                              //convert cm to pixels 
     985                        rad += 0.                                       // (no - it cuts off the low Q artificially) add an extra pixel to each side to account for edge 
     986                        Duplicate/O linear_data,root:Packages:NIST:SAS:tmp_mask//,root:Packages:NIST:SAS:MC_linear_data 
     987                        WAVE tmp_mask = root:Packages:NIST:SAS:tmp_mask 
     988                        tmp_mask = (sqrt((p-xCtr)^2+(q-yCtr)^2) < rad) ? 0 : 1          //behind beamstop = 0, away = 1 
     989                         
     990                        linear_data *= tmp_mask 
     991                endif 
     992                 
    976993                results[9] = sum(linear_data,-inf,inf) 
    977994                //              Print "counts on detector not behind beamstop = ",results[9] 
Note: See TracChangeset for help on using the changeset viewer.