Ignore:
Timestamp:
Jul 22, 2009 5:43:18 PM (13 years ago)
Author:
srkline
Message:

(1) changes to ProDiv? to get the linear scaling correct with the new panel.

(2) bug fix in NCNR_Utils in file open dialog

(3) assorted changes to SASCALC and Simulation procedures to allow 1D simulation of data collection. 2D is now hidden and will be brought back later, as needed.

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

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Models/NewModels_2006/Parallelepiped_v40.ipf

    r510 r541  
    237237        return(0) 
    238238End 
     239 
     240 
     241 
     242////////////For testing 
     243 
     244Macro PP_Rg_and_IZero() 
     245 
     246        variable rg2,iz 
     247         
     248        iz = coef_Parallelepiped[0] 
     249        iz *= coef_Parallelepiped[1]*coef_Parallelepiped[2]*coef_Parallelepiped[3] 
     250        iz *= (coef_Parallelepiped[4]-coef_Parallelepiped[5])^2 
     251        iz -= coef_Parallelepiped[6] 
     252        iz *= 1e8 
     253         
     254         
     255        rg2 = coef_Parallelepiped[1]^2 
     256        rg2 += coef_Parallelepiped[2]^2 
     257        rg2 += coef_Parallelepiped[3]^2 
     258        rg2 /= 12 
     259         
     260         
     261        Print "I(q=0) [cm^-1] = ",iz 
     262        Print "Rg [A] = ",sqrt(rg2) 
     263end 
  • sans/Dev/trunk/NCNR_User_Procedures/Analysis/Models/NewModels_2009/FuzzySpheres_v40.ipf

    r521 r541  
    77// 
    88// M. Stieger, J. S. Pedersen, P. Lindner, W. Richtering, Langmuir 20 (2004) 7283-7292. 
     9// M. Stieger, W. Richtering, J. S. Pedersen, P. Lindner, Journal of Chemical Physics 120(13) (2004) 6197-6206. 
    910// 
    1011// potentially a lorentzian could be added to the low Q, if absolutely necessary 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/MultScatter_MonteCarlo_2D.ipf

    r535 r541  
    12551255 
    12561256 
    1257 // as a stand-alone panel, extra control bar  (right) and subwindow implementations don't work right  
    1258 // for various reasons... 
    12591257Window Sim_1D_Panel() : Panel 
    12601258        PauseUpdate; Silent 1           // building window... 
    12611259        NewPanel /W=(92,556,713,818)/K=1 as "1D SANS Simulator" 
    1262         SetVariable MC_setvar0,pos={28,73},size={144,15},bodyWidth=80,title="# of neutrons" 
    1263         SetVariable MC_setvar0,format="%5.4g" 
    1264         SetVariable MC_setvar0,limits={0,inf,100},value= root:Packages:NIST:SAS:gImon 
    1265         SetVariable MC_setvar0_1,pos={28,119},size={131,15},bodyWidth=60,title="Thickness (cm)" 
     1260        SetVariable cntVar,pos={26,68},size={160,15},title="Counting time(s)",format="%d" 
     1261        SetVariable cntVar,limits={1,36000,10},value= root:Packages:NIST:SAS:gCntTime 
     1262        SetVariable cntVar, proc=Sim_1D_CountTimeSetVarProc 
     1263        SetVariable MC_setvar0_1,pos={26,91},size={160,15},title="Thickness (cm)" 
    12661264        SetVariable MC_setvar0_1,limits={0,inf,0.1},value= root:Packages:NIST:SAS:gThick 
    1267         SetVariable MC_setvar0_2,pos={28,96},size={149,15},bodyWidth=60,title="Incoherent XS (cm)" 
    1268         SetVariable MC_setvar0_2,limits={0,inf,0.1},value= root:Packages:NIST:SAS:gSig_incoh 
    1269 //      SetVariable MC_setvar0_3,pos={28,142},size={150,15},bodyWidth=60,title="Sample Radius (cm)" 
    1270 //      SetVariable MC_setvar0_3,limits={-inf,inf,0.1},value= root:Packages:NIST:SAS:gR2 
    1271         SetVariable setvar0_3,pos={105,484},size={50,20},disable=1 
     1265        SetVariable MC_setvar0_1, proc=Sim_1D_SamThickSetVarProc 
     1266 
     1267        SetVariable MC_setvar0_3,pos={26,114},size={160,15},title="Sample Transmission" 
     1268        SetVariable MC_setvar0_3,limits={0,1,0.01},value= root:Packages:NIST:SAS:gSamTrans 
     1269        SetVariable MC_setvar0_3, proc=Sim_1D_SamTransSetVarProc 
     1270 
    12721271        PopupMenu MC_popup0,pos={13,13},size={165,20},proc=Sim_1D_ModelPopMenuProc,title="Model Function" 
    12731272        PopupMenu MC_popup0,mode=1,value= #"MC_FunctionPopupList()" 
    1274 //      Button MC_button0,pos={17,181},size={130,20},proc=Sim_1D_DoItButtonProc,title="Do 1D Simulation" 
    1275 //      Button MC_button0,fColor=(3,52428,1) 
    1276 //      Button MC_button1,pos={17,208},size={80,20},proc=Sim_1D_Display2DButtonProc,title="Show 2D" 
    1277         GroupBox group0,pos={15,42},size={267,130},title="Sample Setup" 
    1278         SetVariable cntVar,pos={190,73},size={80,15},proc=Sim_1D_CountTimeSetVarProc,title="time(s)" 
    1279         SetVariable cntVar,format="%d" 
    1280         SetVariable cntVar,limits={1,600,1},value= root:Packages:NIST:SAS:gCntTime 
    1281 //      Button MC_button2,pos={17,234},size={100,20},proc=SaveAsVAXButtonProc,title="Save 2D VAX" 
    1282         CheckBox check0,pos={216,180},size={68,14},title="Raw counts",variable = root:Packages:NIST:SAS:gRawCounts 
    1283         CheckBox check0_1,pos={216,199},size={60,14},title="Yes Offset",variable= root:Packages:NIST:SAS:gDoTraceOffset 
    1284 //      CheckBox check0_2,pos={216,199+19},size={60,14},title="Beam Stop in",variable= root:Packages:NIST:SAS:gBeamStopIn 
    1285 //      CheckBox check0_3,pos={216,199+2*19},size={60,14},title="use XOP",variable= root:Packages:NIST:SAS:gUse_MC_XOP 
    1286          
    1287         String fldrSav0= GetDataFolder(1) 
    1288         SetDataFolder root:Packages:NIST:SAS: 
    1289         Edit/W=(344,23,606,248)/HOST=#  results_desc,results 
    1290         ModifyTable format(Point)=1,width(Point)=0,width(results_desc)=150 
    1291         SetDataFolder fldrSav0 
    1292         RenameWindow #,T_results 
    1293         SetActiveSubwindow ## 
    1294          
     1273        Button MC_button0,pos={17,181},size={130,20},proc=Sim_1D_DoItButtonProc,title="Do 1D Simulation" 
     1274        Button MC_button0,fColor=(3,52428,1) 
     1275        GroupBox group0,pos={15,42},size={280,130},title="Sample Setup" 
     1276        CheckBox check0_1,pos={216,179},size={60,14},title="Yes Offset",variable= root:Packages:NIST:SAS:gDoTraceOffset 
     1277        CheckBox check0_2,pos={216,199},size={60,14},title="Abs scale?",variable= root:Packages:NIST:SAS:g_1D_DoABS 
     1278        CheckBox check0_3,pos={216,219},size={60,14},title="Noise?",variable= root:Packages:NIST:SAS:g_1D_AddNoise 
     1279         
     1280// a box for the results 
     1281        GroupBox group1,pos={314,23},size={277,163},title="Simulation Results" 
     1282        ValDisplay valdisp0,pos={326,48},size={220,13},title="Total detector counts" 
     1283        ValDisplay valdisp0,limits={0,0,0},barmisc={0,1000},value= root:Packages:NIST:SAS:g_1DTotCts 
     1284        ValDisplay valdisp0_1,pos={326,72},size={220,13},title="Estimated count rate (1/s)" 
     1285        ValDisplay valdisp0_1,limits={0,0,0},barmisc={0,1000},value=root:Packages:NIST:SAS:g_1DEstDetCR 
     1286        ValDisplay valdisp0_2,pos={326,96},size={220,13},title="Fraction of beam scattered" 
     1287        ValDisplay valdisp0_2,limits={0,0,0},barmisc={0,1000},value= root:Packages:NIST:SAS:g_1DFracScatt 
     1288        ValDisplay valdisp0_3,pos={326,121},size={220,13},title="Estimated transmission" 
     1289        ValDisplay valdisp0_3,limits={0,0,0},barmisc={0,1000},value=root:Packages:NIST:SAS:g_1DEstTrans 
    12951290        // set the flags here -- do the simulation, but not 2D 
    12961291         
     
    13101305                        Variable dval = sva.dval 
    13111306 
    1312                         // get the neutron flux, multiply, and reset the global for # neutrons 
    1313                         NVAR imon=root:Packages:NIST:SAS:gImon 
    1314                         imon = dval*beamIntensity() 
     1307                        ReCalculateInten(1) 
     1308                         
     1309                        break 
     1310        endswitch 
     1311 
     1312        return 0 
     1313End 
     1314 
     1315Function Sim_1D_SamThickSetVarProc(sva) : SetVariableControl 
     1316        STRUCT WMSetVariableAction &sva 
     1317 
     1318        switch( sva.eventCode ) 
     1319                case 1: // mouse up 
     1320                case 2: // Enter key 
     1321                case 3: // Live update 
     1322                        Variable dval = sva.dval 
     1323 
     1324                        ReCalculateInten(1) 
     1325                         
     1326                        break 
     1327        endswitch 
     1328 
     1329        return 0 
     1330End 
     1331 
     1332Function Sim_1D_SamTransSetVarProc(sva) : SetVariableControl 
     1333        STRUCT WMSetVariableAction &sva 
     1334 
     1335        switch( sva.eventCode ) 
     1336                case 1: // mouse up 
     1337                case 2: // Enter key 
     1338                case 3: // Live update 
     1339                        Variable dval = sva.dval 
     1340 
     1341                        ReCalculateInten(1) 
    13151342                         
    13161343                        break 
     
    13381365 
    13391366 
    1340  
    1341 //Function Sim_1D_DoItButtonProc(ba) : ButtonControl 
    1342 //      STRUCT WMButtonAction &ba 
    1343 // 
    1344 //      switch( ba.eventCode ) 
    1345 //              case 2: // mouse up 
    1346 //                      // click code here 
    1347 //                      NVAR doMC = root:Packages:NIST:SAS:gDoMonteCarlo 
    1348 //                      doMC = 1 
    1349 //                      ReCalculateInten(1) 
    1350 //                      doMC = 0                //so the next time won't be MC 
    1351 //                      break 
    1352 //      endswitch 
    1353 // 
    1354 //      return 0 
    1355 //End 
    1356 // 
    1357 // 
    1358 //Function Sim_1D_Display2DButtonProc(ba) : ButtonControl 
    1359 //      STRUCT WMButtonAction &ba 
    1360 // 
    1361 //      switch( ba.eventCode ) 
    1362 //              case 2: // mouse up 
    1363 //                      // click code here 
    1364 //                      Execute "ChangeDisplay(\"SAS\")" 
    1365 //                      break 
    1366 //      endswitch 
    1367 // 
    1368 //      return 0 
    1369 //End 
     1367Function Sim_1D_DoItButtonProc(ba) : ButtonControl 
     1368        STRUCT WMButtonAction &ba 
     1369 
     1370        switch( ba.eventCode ) 
     1371                case 2: // mouse up 
     1372                 
     1373                        ReCalculateInten(1) 
     1374                         
     1375                        break 
     1376        endswitch 
     1377 
     1378        return 0 
     1379End 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/NCNR_Utils.ipf

    r515 r541  
    553553         
    554554        Open/R/T="????TEXT" refNum as fname 
     555        if(strlen(s_filename) == 0)     //user cancel (/Z not used, so V_flag not set) 
     556                return(0) 
     557        endif 
     558         
    555559        //get the total number of bytes in the file 
    556560        FStatus refNum 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/PatchFiles.ipf

    r530 r541  
    107107         
    108108        //then update the popup list 
    109         PatchPopMenuProc("PatchPopup",1,"") 
     109        // (don't update the list - not until someone enters a search critera) -- Jul09 
     110        // 
     111        SetMatchStrProc("",0,"*","")            //this is equivalent to finding everything, typical startup case 
     112 
    110113End 
    111114 
     
    301304        ControlUpdate PatchPopup 
    302305        PopupMenu PatchPopup,mode=1 
    303         ShowHeaderButtonProc("SHButton") 
     306         
     307        if(strlen(list) > 0) 
     308                ShowHeaderButtonProc("SHButton") 
     309        endif 
    304310End 
    305311 
     
    318324        String partialName, tempName 
    319325        Variable ok 
    320         ControlInfo patchPopup 
    321         If(cmpstr(S_value,"")==0) 
     326        ControlInfo/W=Patch_Panel PatchPopup 
     327        If(strlen(S_value)==0) 
    322328                //null selection 
    323329                Abort "no file selected in popup menu" 
     
    603609Proc Patch_Panel() 
    604610        PauseUpdate; Silent 1      // building window... 
    605 //      NewPanel /W=(519,85,950,608)/K=1 as "Patch Raw SANS Data Files" 
    606         NewPanel /W=(519,85,950,608) as "Patch Raw SANS Data Files" 
     611        NewPanel /W=(519,85,950,608)/K=1 as "Patch Raw SANS Data Files" 
     612//      NewPanel /W=(519,85,950,608) as "Patch Raw SANS Data Files" 
    607613        DoWindow/C Patch_Panel 
    608614        ModifyPanel cbRGB=(1,39321,19939) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/ProDiv.ipf

    r511 r541  
    411411                case 2: // mouse up 
    412412                        // click code here 
     413                         
     414                        //temporarily set data display to linear 
     415                        NVAR gLog = root:myGlobals:gLogScalingAsDefault 
     416                        Variable oldState = gLog 
     417                        gLog=0  //linear 
     418                         
     419                         
    413420                        SVAR gPlex = root:myGlobals:Protocols:gPlex 
    414421                        SVAR gPlexBgd = root:myGlobals:Protocols:gPlexBgd 
     
    507514                //write out the new data file 
    508515                        WriteVAXWorkFile("STO") 
    509                                          
     516                                 
     517                        gLog=oldState           //revert display preference to old state         
    510518                        break 
    511519        endswitch 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/SASCALC.ipf

    r534 r541  
    116116        String/G root:Packages:NIST:SAS:gFuncStr = "" 
    117117        Variable/G root:Packages:NIST:SAS:gR2 = 2.54/2   
    118         Variable/G root:Packages:NIST:SAS:gCntTime = 1 
     118        Variable/G root:Packages:NIST:SAS:gSamTrans=0.8                 //for 1D, default value 
     119        Variable/G root:Packages:NIST:SAS:gCntTime = 300 
    119120        Variable/G root:Packages:NIST:SAS:gDoMonteCarlo = 0 
    120121        Variable/G root:Packages:NIST:SAS:gUse_MC_XOP = 1                               //set to zero to use Igor code 
     
    125126        Make/O/D/N=10 root:Packages:NIST:SAS:results = 0 
    126127        Make/O/T/N=10 root:Packages:NIST:SAS:results_desc = {"total X-section (1/cm)","SAS X-section (1/cm)","number that scatter","number that reach detector","avg # times scattered","fraction single coherent","fraction double coherent","fraction multiple scattered","fraction transmitted","detector counts w/o beamstop"} 
    127          
     128 
     129        Variable/G root:Packages:NIST:SAS:g_1DTotCts = 0                        //summed counts (simulated) 
     130        Variable/G root:Packages:NIST:SAS:g_1DEstDetCR = 0              // estimated detector count rate 
     131        Variable/G root:Packages:NIST:SAS:g_1DFracScatt = 0             // fraction of beam captured on detector 
     132        Variable/G root:Packages:NIST:SAS:g_1DEstTrans = 0              // estimated transmission of sample 
     133        Variable/G root:Packages:NIST:SAS:g_1D_DoABS = 1 
     134        Variable/G root:Packages:NIST:SAS:g_1D_AddNoise = 1 
    128135         
    129136        //tick labels for SDD slider 
     
    853860                return(0) 
    854861        endif 
    855 //      Print "recalculate" 
    856862         
    857863        // update the wave with the beamstop diameter here, since I don't know what 
     
    859865        // recalculated, or the text displayed, the right BS must be present 
    860866        beamstopDiam() 
    861          
    862867         
    863868        // generate the resolution waves first, so they are present for a smearing calculation 
     
    875880         
    876881        // do the simulation here, or not 
    877         Variable r1,xCtr,yCtr,sdd,pixSize,wavelength,trans 
     882        Variable r1,xCtr,yCtr,sdd,pixSize,wavelength 
    878883        String coefStr,abortStr,str 
    879884 
     
    885890        if(doSimulation == 1) 
    886891                if(doMonteCarlo == 1) 
    887                         //2D simulation (in MultiScatter_MonteCarlo_2D.ipf 
     892                        //2D simulation (in MultiScatter_MonteCarlo_2D.ipf) 
    888893                         
    889894                        Simulate_2D_MC(funcStr,aveint,qval,sigave,sigmaq,qbar,fsubs) 
     
    895900                        if(exists(funcStr) != 0) 
    896901                                FUNCREF SANSModelAAO_MCproto func=$("fSmeared"+funcStr)                 //a wrapper for the structure version 
    897         //                      FUNCREF SANSModelAAO_MCproto func=$(funcStr)            //unsmeared 
     902                                FUNCREF SANSModelAAO_MCproto funcUnsmeared=$(funcStr)           //unsmeared 
    898903                                coefStr = MC_getFunctionCoef(funcStr) 
    899904                                 
     
    902907                                endif 
    903908                                Wave inten=$"root:Simulation:Simulation_i"              // this will exist and send the smeared calculation to the corect DF 
     909                                 
    904910                                func($coefStr,inten,qval) 
    905911                                 
    906912                                NVAR imon = root:Packages:NIST:SAS:gImon 
     913                                NVAR ctTime = root:Packages:NIST:SAS:gCntTime 
    907914                                NVAR thick = root:Packages:NIST:SAS:gThick 
     915                                NVAR trans = root:Packages:NIST:SAS:gSamTrans 
     916                                NVAR SimDetCts = root:Packages:NIST:SAS:g_1DTotCts                      //summed counts (simulated) 
     917                                NVAR estDetCR = root:Packages:NIST:SAS:g_1DEstDetCR                     // estimated detector count rate 
     918                                NVAR fracScat = root:Packages:NIST:SAS:g_1DFracScatt            // fraction of beam captured on detector 
     919                                NVAR estTrans = root:Packages:NIST:SAS:g_1DEstTrans             // estimated transmission of sample 
     920                                NVAR SimCountTime = root:Packages:NIST:SAS:gCntTime             //counting time used for simulation 
    908921                                 
    909922                                WAVE rw=root:Packages:NIST:SAS:realsRead 
    910                                 WAVE nCells=root:Packages:NIST:SAS:nCells 
     923                                WAVE nCells=root:Packages:NIST:SAS:nCells                                
     924                                                                 
     925                                pixSize = rw[10]/10             // convert pix size in mm to cm 
     926                                sdd = rw[18]*100                //convert header of [m] to [cm] 
     927                                wavelength = rw[26]             // in 1/A 
    911928                                 
    912         ///////Trans is hard-wired - need to input from somewhere!!! 
    913                                 trans = 0.8 
     929                                imon = beamIntensity() 
    914930                                 
     931                                // calculate the scattering cross section simply to be able to estimate the transmission 
     932                                Variable sig_sas 
     933                                CalculateRandomDeviate(funcUnsmeared,$coefStr,wavelength,"root:Packages:NIST:SAS:ran_dev",sig_sas) 
     934                                if(sig_sas > 100) 
     935                                        sprintf abortStr,"sig_sas = %g. Please check that the model coefficients have a zero background, or the low q is well-behaved.",sig_sas 
     936                                endif 
     937                                estTrans = exp(-1*thick*sig_sas)                //thickness and sigma both in units of cm 
     938                                Print "Sig_sas = ",sig_sas 
    915939                                 
    916                                 pixSize = rw[10]/10             // convert pix size in mm to cm 
    917                                 sdd = rw[18]*100                //conver header of [m] to [cm] 
     940                                Duplicate/O qval prob_i,circle_fraction,rval,nCells_expected 
     941                                rval = sdd*tan(2*asin(qval*wavelength/4/pi))            //radial distance in cm 
     942                                nCells_expected = 2*pi*rval/pixSize                                     //does this need to be an integer? 
     943                                circle_fraction = nCells / nCells_expected 
    918944                                 
    919                                 duplicate/O qval prob_i 
    920                                 prob_i = trans*thick*nCells*(pixSize/sdd)^2*inten                       //probability of a neutron in bin(i) 
     945                                                         
     946                                prob_i = trans*thick*nCells*(pixSize/sdd)^2*inten                       //probability of a neutron in q-bin(i) that has nCells 
    921947                                 
    922948                                Variable P_on = sum(prob_i,-inf,inf) 
    923949                                Print "P_on = ",P_on 
     950                                fracScat = P_on 
    924951                                 
    925                                 aveint = Imon*P_on*prob_i 
     952                                aveint = (Imon*ctTime)*prob_i / circle_fraction / nCells_expected 
     953 
     954                                SimDetCts = sum(aveint,-inf,inf) 
     955                                estDetCR = SimDetCts/SimCountTime 
    926956                                 
    927957                                 
     958                                NVAR doABS = root:Packages:NIST:SAS:g_1D_DoABS 
     959                                NVAR addNoise = root:Packages:NIST:SAS:g_1D_AddNoise 
     960                                                         
     961                                sigave = sqrt(aveint)           // assuming that N is large 
    928962                                 
    929                                 aveint *= fSubS 
    930                                                  
    931                                 sigave = sqrt(aveint)           //reset for model calculation 
     963                                // add in random error in aveint based on the sigave 
     964                                if(addNoise) 
     965                                        aveint += gnoise(sigave) 
     966                                endif 
     967 
     968                                // convert to absolute scale 
     969                                if(doABS) 
     970                                        Variable kappa = thick*(pixSize/sdd)^2*trans*iMon*ctTime 
     971                                        aveint /= kappa 
     972                                        sigave /= kappa 
     973                                endif 
     974                                 
    932975                        else 
    933976                                Abort "The coefficients and function type do not match. Please correct the selections in the popup menus." 
     
    946989        endif 
    947990         
    948         if(doMonteCarlo == 1) 
    949  
    950         endif 
    951          
     991 
    952992        //display the configuration text in a separate notebook 
    953993        DisplayConfigurationText() 
Note: See TracChangeset for help on using the changeset viewer.