Ignore:
Timestamp:
Mar 22, 2019 2:52:55 PM (4 years ago)
Author:
srkline
Message:

many changes to the VCALC procedures to add in the hard/soft shadowing to the calculation, visualization of the shadowed regions, and the actual q-values. Added a separate panel to view the shadowed regions.

simpe fix to the real time routine to allow easy updating of both the raw 2D data and 1-D average

update to the USANS package to handle the new NICE generated data where the data is collected in terms of q-values rather than angle. On startup asks user which style of data they have. Sets a preference that can be un-checked if you have old-style ICP data. (there is nothing in the data file that I can key on).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/VC_VCALCPanel_MockUp.ipf

    r1130 r1133  
    2525                //open the panel 
    2626                DrawVCALC_Panel() 
     27 
     28                // check for a mask, if not present, generate a default mask (this will be updated later) 
     29                if(!Exists("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_FT:data")) 
     30                        V_GenerateDefaultMask() 
     31                endif 
    2732                 
    2833                // two graphs with the ray-tracing side/top views 
     
    3338                FrontView_1x() 
    3439                 
    35                 // TODO: fake a "click" on the front SDD to force (almost)everything to update 
    36                 // including the I(q) graph 
    37                 FakeFrontMiddleSDDClick() 
    38  
     40                // pop one of the presets to get everything to update 
     41                VC_Preset_WhiteBeam() 
     42                 
     43                // update the views 
     44                VC_UpdateViews() 
     45                 
     46                // a recalculation is needed after the change 
     47                // this re-bins the I(q) data too 
     48                Recalculate_AllDetectors() 
     49                 
    3950        endif 
    4051End 
     
    6879        TabControl Vtab,tabLabel(4)="Back Det",tabLabel(5)="Simul",value= 0,proc=VCALCTabProc 
    6980        GroupBox group1,pos={460,10},size={762,635},title="Detector Panel Positions + Data" 
     81        Button button_a,pos={250,70},size={100,20},title="Show Mask",proc=V_VCALCShowMaskButtonProc 
     82        Button button_b,pos={250,100},size={100,20},title="Recalculate",proc=V_VCALCRecalcButtonProc 
     83 
    7084 
    7185        PopupMenu popup_a,pos={50,40},size={142,20},title="Presets" 
    72         PopupMenu popup_a,mode=1,popvalue="F+M Ng0 Low Q",value= root:Packages:NIST:VSANS:VCALC:gPresetPopStr 
     86        PopupMenu popup_a,mode=1,popvalue="White Beam",value= root:Packages:NIST:VSANS:VCALC:gPresetPopStr 
    7387        PopupMenu popup_a,proc=VC_PresetConfigPopup 
    7488 
     
    7690        PopupMenu popup_b,mode=1,value= root:Packages:NIST:VSANS:VCALC:gBinTypeStr 
    7791        SetVariable setVar_b,pos={476,313},size={120,15},title="axis Q",proc=Front2DQ_Range_SetVarProc 
    78         SetVariable setVar_b,limits={0.02,1,0.02},value=_NUM:0.3 
     92        SetVariable setVar_b,limits={0.02,1,0.02},value=_NUM:0.52 
    7993        CheckBox check_0a title="Log?",size={60,20},pos={619,313},proc=Front2DQ_Log_CheckProc 
    8094                 
    8195        SetVariable setVar_a,pos={476,26},size={120,15},title="axis degrees",proc=FrontView_Range_SetVarProc 
    82         SetVariable setVar_a,limits={0.3,30,0.2},value=_NUM:20 
    83  
    84         ValDisplay valDisp_a,pos={50,380},size={150,15},title="Beam Intensity",value=root:Packages:NIST:VSANS:VCALC:gBeamIntensity 
    85  
    86         ValDisplay valDisp_b,pos={50,410},size={150,15},title="Q min (Front) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_F 
    87         ValDisplay valDisp_c,pos={250,410},size={150,15},title="Q max (Front) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_F 
    88         ValDisplay valDisp_d,pos={50,440},size={150,15},title="Q min (Mid) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_M 
    89         ValDisplay valDisp_e,pos={250,440},size={150,15},title="Q max (Mid) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_M 
    90         ValDisplay valDisp_f,pos={50,470},size={150,15},title="Q min (Back) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmin_B 
    91         ValDisplay valDisp_g,pos={250,470},size={150,15},title="Q max (Back) (1/A)",value=root:Packages:NIST:VSANS:VCALC:gQmax_B 
    92         ValDisplay valDisp_h,pos={50,500},size={200,15},title="Beam Diam (middle) (cm)",value=root:Packages:NIST:VSANS:VCALC:gBeamDiam 
    93         ValDisplay valDisp_i,pos={50,530},size={200,15},title="Beam Stop Diam (middle) (in)",value=root:Packages:NIST:VSANS:VCALC:gBeamStopDiam 
    94         ValDisplay valDisp_j,pos={50,560},size={200,15},title="Real Q min (1/A)",value=root:Packages:NIST:VSANS:VCALC:gRealQMin 
     96        SetVariable setVar_a,limits={0.3,30,0.2},value=_NUM:28 
     97 
     98        ValDisplay valDisp_a,pos={30,380},size={150,15},fstyle=1,title="Beam Intensity",value=root:Packages:NIST:VSANS:VCALC:gBeamIntensity 
     99 
     100        SetDrawEnv fstyle= 1 
     101        DrawText 30,420,"Back" 
     102        DrawText 80,420,"Q min" 
     103        DrawText 150,420,"Q max" 
     104        ValDisplay valDisp_b,pos={30,420},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmin_B 
     105        ValDisplay valDisp_c,pos={130,420},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmax_B 
     106 
     107        SetDrawEnv fstyle= 1 
     108        DrawText 130,460,"Middle" 
     109        DrawText 180,460,"Q min" 
     110        DrawText 250,460,"Q max"         
     111        ValDisplay valDisp_d,pos={130,460},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmin_M 
     112        ValDisplay valDisp_e,pos={230,460},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmax_M 
     113 
     114        SetDrawEnv fstyle= 1 
     115        DrawText 230,500,"Front"         
     116        DrawText 280,500,"Q min" 
     117        DrawText 350,500,"Q max"         
     118        ValDisplay valDisp_f,pos={230,500},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmin_F 
     119        ValDisplay valDisp_g,pos={330,500},size={100,15},title="",value=root:Packages:NIST:VSANS:VCALC:gQmax_F 
     120 
     121 
     122        ValDisplay valDisp_h,pos={50,530},size={200,15},title="Beam Diam (middle) (cm)",value=root:Packages:NIST:VSANS:VCALC:gBeamDiam 
     123        ValDisplay valDisp_i,pos={50,560},size={200,15},title="Beam Stop Diam (middle) (in)",value=root:Packages:NIST:VSANS:VCALC:gBeamStopDiam 
     124        ValDisplay valDisp_j,pos={50,590},size={200,15},title="Beam Stop Q min (1/A)",value=root:Packages:NIST:VSANS:VCALC:gRealQMin 
    95125 
    96126 
     
    116146        ModifyGraph tick=2,mirror=1 
    117147        Label left "Vertical position (cm)" 
    118         Label bottom "SDD (cm)"  
     148        Label bottom "SDD (cm)" 
     149        SetAxis/A/R left         
    119150        SetActiveSubwindow ##    
    120151         
     
    234265End 
    235266 
     267Function V_VCALCShowMaskButtonProc(ba) : ButtonControl 
     268        STRUCT WMButtonAction &ba 
     269 
     270        switch( ba.eventCode ) 
     271                case 2: // mouse up 
     272                        // click code here 
     273                         
     274                        V_SetupPanelDisplay() 
     275                         
     276                        PopupMenu popup1 win=VSANS_Det_Panels,mode=14,popvalue="VCALC" 
     277                        PopupMenu popup0 win=VSANS_Det_Panels,popvalue="F" 
     278                        ControlUpdate/A/W=VSANS_Det_Panels 
     279 
     280                //pop the carriage menu to refresh the VCALC data 
     281                        STRUCT WMPopupAction pa 
     282                        pa.eventCode = 2                //fake click 
     283                        V_PickCarriagePopMenuProc(pa) 
     284                         
     285// risky, but I can pass the button "click" to the next button to toggle the mask "On"                   
     286                        V_ToggleFourMaskButtonProc(ba) 
     287                         
     288                        break 
     289                case -1: // control being killed 
     290                        break 
     291        endswitch 
     292 
     293        return 0 
     294End 
     295 
     296 
     297 
     298Function V_VCALCRecalcButtonProc(ba) : ButtonControl 
     299        STRUCT WMButtonAction &ba 
     300 
     301        switch( ba.eventCode ) 
     302                case 2: // mouse up 
     303                        // click code here 
     304                         
     305                        Recalculate_AllDetectors() 
     306                                 
     307                        break 
     308                case -1: // control being killed 
     309                        break 
     310        endswitch 
     311 
     312        return 0 
     313End 
     314 
    236315// 
    237316//  recalculates the detector panels, doesn't adjust the views 
     
    241320// calculates Q for each panel 
    242321// and fills 2D panels with model data 
     322// then plots the 2D panel 
    243323        fPlotBackPanels() 
    244324        fPlotMiddlePanels() 
    245325        fPlotFrontPanels() 
    246326 
     327// generate a proper mask based on hard+soft shadowing 
     328        VC_ResetVCALCMask() 
     329        VC_DrawVCALCMask() 
     330 
     331 
     332// generate the 1D I(q) 
    247333        String popStr 
    248334        String collimationStr = "pinhole" 
     
    251337        V_QBinAllPanels_Circular("VCALC",V_BinTypeStr2Num(popStr),collimationStr) 
    252338 
    253  
    254339        // plot the results (1D) 
    255340        String type = "VCALC" 
     
    265350 
    266351 
    267  
    268  
    269          
     352// update values on the panel 
    270353        V_beamIntensity() 
    271354         
    272355//      Print "Beam diam (middle) = ",VC_beamDiameter("horizontal",2)           //middle carriage 
    273356         
    274         // fill in the Qmin and Qmax values 
     357        // fill in the Qmin and Qmax values, based on Q_Tot for the 2D panels (not including mask) 
    275358        V_QMinMax_Back() 
    276359        V_QMinMax_Middle() 
     
    10541137// Width and height are not part of the Nexus file definition, but are needed for VCALC drawing 
    10551138// so keep them as variables 
    1056         Variable/G gFront_LR_w = 38.4           //front bank, nominal LR panel width [cm] 
     1139        Variable/G gFront_LR_w = 40.3           //front bank, nominal LR panel width [cm]  0.84cm/tube*48 = 40.3 cm 
    10571140        Variable/G gFront_LR_h = 100.0 
    10581141        Variable/G gFront_TB_w = 50.0 
    1059         Variable/G gFront_TB_h = 38.4 
     1142        Variable/G gFront_TB_h = 40.3 
    10601143 
    10611144// SDD setback of T/B (decide on units??) 
     
    11041187// Width and height are not part of the Nexus file definition, but are needed for VCALC drawing 
    11051188// so keep them as variables 
    1106         Variable/G gMiddle_LR_w = 38.4          //middle bank, nominal LR panel width (cm) 
     1189        Variable/G gMiddle_LR_w = 40.3                  //middle bank, nominal LR panel width (cm) 0.84cm/tube*48 = 40.3 cm 
    11071190        Variable/G gMiddle_LR_h = 100.0 
    11081191        Variable/G gMiddle_TB_w = 50.0 
    1109         Variable/G gMiddle_TB_h = 38.4 
     1192        Variable/G gMiddle_TB_h = 40.3 
    11101193// SDD offset of T/B (decide on units??) 
    11111194// for the Nexus file, the detector distance should already be corrected for the "setback" 
     
    12841367//      // for the panel 
    12851368 
    1286         Variable/G gNg=0 
     1369//      Variable/G gNg=0 
    12871370//      Variable/G gOffset=0 
    1288         Variable/G gSamAp=1.27          //samAp diameter in cm 
     1371//      Variable/G gSamAp=1.27          //samAp diameter in cm 
    12891372//      String/G gSourceApString = "1.43 cm;2.54 cm;3.81 cm;" 
    1290         String/G gApPopStr = "1/16\";1/8\";3/16\";1/4\";5/16\";3/8\";7/16\";1/2\";9/16\";5/8\";11/16\";3/4\";other;" 
    1291         Variable/G gSamApOther = 10             //non-standard aperture diameter, in mm 
    1292         Variable/G gUsingLenses = 0             //0=no lenses, 1=lenses(or prisms) 
     1373//      String/G gApPopStr = "1/16\";1/8\";3/16\";1/4\";5/16\";3/8\";7/16\";1/2\";9/16\";5/8\";11/16\";3/4\";other;" 
     1374//      Variable/G gSamApOther = 10             //non-standard aperture diameter, in mm 
     1375//      Variable/G gUsingLenses = 0             //0=no lenses, 1=lenses(or prisms) 
    12931376//      Variable/G gModelOffsetFactor = 1 
    12941377//       
     
    13341417//      Variable/G gDoTraceOffset=0             // (1==Yes, offset 2^n), 0==turn off the offset 
    13351418 
    1336  
    1337  
    13381419// 
    13391420// instrument - specific dimensions 
     
    13411422 
    13421423//       
    1343         Variable/G gInstrument = 6              // files (may) be tagged SA6 as the 6th SANS instrument 
    1344         Variable/G gS12 = 54.8 
     1424//      Variable/G gInstrument = 6              // files (may) be tagged SA6 as the 6th SANS instrument 
     1425//      Variable/G gS12 = 54.8 
    13451426//      Variable/G d_det = 0.5 
    13461427//      Variable/G a_pixel = 0.5 
    13471428//      Variable/G del_r = 0.5 
    13481429//      Variable/G det_width = 64.0 
    1349         Variable/G gLambda_t = 5.50 
    1350         Variable/G gL2r_lower = 132.3 
    1351         Variable/G gL2r_upper =  1317 
    1352         Variable/G gLambda_lower = 2.5 
    1353         Variable/G gLambda_upper = 20.0 
    1354         Variable/G gD_upper = 25.0 
    1355         Variable/G gBs_factor = 1.05 
    1356         Variable/G gT1 = 0.63 
    1357         Variable/G gT2 = 1.0 
    1358         Variable/G gT3 = 0.75 
    1359         Variable/G gL_gap = 100.0 
    1360         Variable/G gGuide_width = 6.0 
    1361         Variable/G gIdmax = 100.0 
     1430//      Variable/G gLambda_t = 5.50 
     1431//      Variable/G gL2r_lower = 132.3 
     1432//      Variable/G gL2r_upper =  1317 
     1433//      Variable/G gLambda_lower = 2.5 
     1434//      Variable/G gLambda_upper = 20.0 
     1435//      Variable/G gD_upper = 25.0 
     1436//      Variable/G gBs_factor = 1.05 
     1437//      Variable/G gT1 = 0.63 
     1438//      Variable/G gT2 = 1.0 
     1439//      Variable/G gT3 = 0.75 
     1440//      Variable/G gL_gap = 100.0 
     1441//      Variable/G gGuide_width = 6.0 
     1442//      Variable/G gIdmax = 100.0 
    13621443 
    13631444// 
    13641445//      //new values, from 11/2009 --- BeamFluxReport_2009.ifn 
    1365         Variable/G gPhi_0 = 2.42e13 
    1366         Variable/G gB = 0.0 
    1367         Variable/G gC = -0.0243 
    1368         Variable/G gGuide_loss = 0.924 
     1446//      Variable/G gPhi_0 = 2.42e13 
     1447//      Variable/G gB = 0.0 
     1448//      Variable/G gC = -0.0243 
     1449//      Variable/G gGuide_loss = 0.924 
    13691450//       
    13701451//      //fwhm values (new variables) (+3, 0, -3, calibrated 2009) 
    1371         Variable/G gFwhm_narrow = 0.109 
    1372         Variable/G gFwhm_mid = 0.125 
    1373         Variable/G gFwhm_wide = 0.236 
     1452//      Variable/G gFwhm_narrow = 0.109 
     1453//      Variable/G gFwhm_mid = 0.125 
     1454//      Variable/G gFwhm_wide = 0.236 
    13741455//       
    13751456//      //source apertures (cm) 
    1376         Variable/G gA1_0_0 = 1.43 
    1377         Variable/G gA1_0_1 = 2.54 
    1378         Variable/G gA1_0_2 = 3.81 
    1379         Variable/G gA1_7_0 = 2.5                        // after the polarizer           
    1380         Variable/G gA1_7_1 = 5.0 
    1381         Variable/G gA1_7_1 = 0.95               // 
    1382         Variable/G gA1_def = 5.00 
     1457//      Variable/G gA1_0_0 = 1.43 
     1458//      Variable/G gA1_0_1 = 2.54 
     1459//      Variable/G gA1_0_2 = 3.81 
     1460//      Variable/G gA1_7_0 = 2.5                        // after the polarizer           
     1461//      Variable/G gA1_7_1 = 5.0 
     1462//      Variable/G gA1_7_1 = 0.95               // 
     1463//      Variable/G gA1_def = 5.00 
    13831464//       
    13841465        SetDataFolder root: 
     
    13991480        detStr = "B" 
    14001481        WAVE qTot_B = $(folderPath+instPath+detStr+":qTot_"+detStr) 
    1401  
    1402         min_b = WaveMin(qTot_B) 
    1403         max_b = WaveMax(qTot_B) 
    1404  
     1482        WAVE mask_B = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     1483 
     1484        Duplicate/O qTot_B tmp_B 
     1485        // for the minimum 
     1486        tmp_B = (mask_B == 0) ? qTot_B : 1e6 
     1487        min_b = WaveMin(tmp_B) 
     1488 
     1489        // for the maximum 
     1490        tmp_B = (mask_B == 0) ? qTot_B : -1e6 
     1491        max_b = WaveMax(tmp_B) 
     1492 
     1493        KillWaves/Z tmp_B 
    14051494 
    14061495        return(0) 
     
    14211510        detStr = "ML" 
    14221511        WAVE qTot_ML = $(folderPath+instPath+detStr+":qTot_"+detStr) 
     1512        WAVE mask_ML = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    14231513 
    14241514        detStr = "MR" 
    14251515        WAVE qTot_MR = $(folderPath+instPath+detStr+":qTot_"+detStr) 
     1516        WAVE mask_MR = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    14261517 
    14271518        detStr = "MT" 
    14281519        WAVE qTot_MT = $(folderPath+instPath+detStr+":qTot_"+detStr) 
     1520        WAVE mask_MT = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    14291521 
    14301522        detStr = "MB" 
    14311523        WAVE qTot_MB = $(folderPath+instPath+detStr+":qTot_"+detStr) 
    1432  
    1433         min_m = min(WaveMin(qTot_ML),WaveMin(qTot_MT),WaveMin(qTot_MR),WaveMin(qTot_MB)) 
    1434         max_m = max(WaveMax(qTot_ML),WaveMax(qTot_MT),WaveMax(qTot_MR),WaveMax(qTot_MB)) 
    1435  
     1524        WAVE mask_MB = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     1525 
     1526        Variable min1,min2,min3,min4 
     1527        Variable max1,max2,max3,max4 
     1528        // WaveMin(), WaveMax() will report NaN or inf 
     1529        // so for the min, set masked values to 1e6 
     1530        Duplicate/O qTot_ML tmp_ML 
     1531        tmp_ML = (mask_ML == 0) ? qTot_ML : 1e6 
     1532 
     1533        Duplicate/O qTot_MR tmp_MR 
     1534        tmp_MR = (mask_MR == 0) ? qTot_MR : 1e6 
     1535         
     1536        Duplicate/O qTot_MT tmp_MT 
     1537        tmp_MT = (mask_MT == 0) ? qTot_MT : 1e6 
     1538         
     1539        Duplicate/O qTot_MB tmp_MB 
     1540        tmp_MB = (mask_MB == 0) ? qTot_MB : 1e6 
     1541         
     1542        min1 = WaveMin(tmp_ML) 
     1543        min2 = WaveMin(tmp_MR) 
     1544        min3 = WaveMin(tmp_MT) 
     1545        min4 = WaveMin(tmp_MB) 
     1546 
     1547        // so for the max, set masked values to -1e6 
     1548        tmp_ML = (mask_ML == 0) ? qTot_ML : -1e6 
     1549        tmp_MR = (mask_MR == 0) ? qTot_MR : -1e6 
     1550        tmp_MT = (mask_MT == 0) ? qTot_MT : -1e6 
     1551        tmp_MB = (mask_MB == 0) ? qTot_MB : -1e6 
     1552         
     1553        max1 = WaveMax(tmp_ML) 
     1554        max2 = WaveMax(tmp_MR) 
     1555        max3 = WaveMax(tmp_MT) 
     1556        max4 = WaveMax(tmp_MB) 
     1557 
     1558//      print min1,min2,min3,min4 
     1559//      print max1,max2,max3,max4 
     1560                 
     1561        min_m = min(min1,min2,min3,min4) 
     1562        max_m = max(max1,max2,max3,max4) 
     1563 
     1564//      min_m = min(WaveMin(tmp_ML),WaveMin(tmp_MT),WaveMin(tmp_MR),WaveMin(tmp_MB)) 
     1565//      max_m = max(WaveMax(tmp_ML),WaveMax(tmp_MT),WaveMax(tmp_MR),WaveMax(tmp_MB)) 
     1566         
     1567        KillWaves/Z tmp_ML,tmp_MR,tmp_MT,tmp_MB 
    14361568 
    14371569        return(0) 
     
    14521584        detStr = "FL" 
    14531585        WAVE qTot_FL = $(folderPath+instPath+detStr+":qTot_"+detStr) 
    1454  
     1586        WAVE mask_FL = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     1587         
    14551588        detStr = "FR" 
    14561589        WAVE qTot_FR = $(folderPath+instPath+detStr+":qTot_"+detStr) 
     1590        WAVE mask_FR = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    14571591 
    14581592        detStr = "FT" 
    14591593        WAVE qTot_FT = $(folderPath+instPath+detStr+":qTot_"+detStr) 
     1594        WAVE mask_FT = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
    14601595 
    14611596        detStr = "FB" 
    14621597        WAVE qTot_FB = $(folderPath+instPath+detStr+":qTot_"+detStr) 
    1463  
    1464         min_f = min(WaveMin(qTot_FL),WaveMin(qTot_FT),WaveMin(qTot_FR),WaveMin(qTot_FB)) 
    1465         max_f = max(WaveMax(qTot_FL),WaveMax(qTot_FT),WaveMax(qTot_FR),WaveMax(qTot_FB)) 
    1466  
    1467  
     1598        WAVE mask_FB = $("root:Packages:NIST:VSANS:MSK:entry:instrument:detector_"+detStr+":data") 
     1599 
     1600        Variable min1,min2,min3,min4 
     1601        Variable max1,max2,max3,max4 
     1602        // WaveMin(), WaveMax() will report NaN or inf 
     1603        // so for the min, set masked values to 1e6 
     1604        Duplicate/O qTot_FL tmp_FL 
     1605        tmp_FL = (mask_FL == 0) ? qTot_FL : 1e6 
     1606 
     1607        Duplicate/O qTot_FR tmp_FR 
     1608        tmp_FR = (mask_FR == 0) ? qTot_FR : 1e6 
     1609         
     1610        Duplicate/O qTot_FT tmp_FT 
     1611        tmp_FT = (mask_FT == 0) ? qTot_FT : 1e6 
     1612         
     1613        Duplicate/O qTot_FB tmp_FB 
     1614        tmp_FB = (mask_FB == 0) ? qTot_FB : 1e6 
     1615 
     1616        min1 = WaveMin(tmp_FL) 
     1617        min2 = WaveMin(tmp_FR) 
     1618        min3 = WaveMin(tmp_FT) 
     1619        min4 = WaveMin(tmp_FB) 
     1620         
     1621        // so for the max, set masked values to -1e6 
     1622        tmp_FL = (mask_FL == 0) ? qTot_FL : -1e6 
     1623        tmp_FR = (mask_FR == 0) ? qTot_FR : -1e6 
     1624        tmp_FT = (mask_FT == 0) ? qTot_FT : -1e6 
     1625        tmp_FB = (mask_FB == 0) ? qTot_FB : -1e6 
     1626 
     1627 
     1628        max1 = WaveMax(tmp_FL) 
     1629        max2 = WaveMax(tmp_FR) 
     1630        max3 = WaveMax(tmp_FT) 
     1631        max4 = WaveMax(tmp_FB) 
     1632 
     1633//      print min1,min2,min3,min4 
     1634//      print max1,max2,max3,max4 
     1635                 
     1636        min_f = min(min1,min2,min3,min4) 
     1637        max_f = max(max1,max2,max3,max4) 
     1638         
     1639//      min_f = min(WaveMin(tmp_FL),WaveMin(tmp_FT),WaveMin(tmp_FR),WaveMin(tmp_FB)) 
     1640//      max_f = max(WaveMax(tmp_FL),WaveMax(tmp_FT),WaveMax(tmp_FR),WaveMax(tmp_FB)) 
     1641 
     1642        KillWaves/Z tmp_FL,tmp_FR,tmp_FT,tmp_FB 
    14681643        return(0) 
    14691644end 
Note: See TracChangeset for help on using the changeset viewer.