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

minor changes and comments

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.