Changeset 1050
- Timestamp:
- Jun 30, 2017 12:28:55 PM (5 years ago)
- Location:
- sans/Dev/trunk/NCNR_User_Procedures/Reduction
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/EventModeProcessing.ipf
r1010 r1050 1551 1551 if(dataval == 0 && RemoveBadEvents == 1) 1552 1552 numRemoved += 1 1553 //Print "zero at ii= ",ii1553 // Print "zero at ii= ",ii 1554 1554 break //don't increment ii 1555 1555 endif -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Combine_1D.ipf
r1042 r1050 184 184 End 185 185 186 // TODO186 // 187 187 // x- verify that the proper waves exist for the binning type 188 188 // … … 203 203 204 204 205 // TODO:x- need to update this to make sure that the data waves are present before plotting. This205 // x- need to update this to make sure that the data waves are present before plotting. This 206 206 // currently looks in the ToTrim folder, but the binning could be wrong in the data folder 207 207 // and will be an error... … … 535 535 // take the waves, and convert to strings that can be added to the protocol 536 536 // 537 // TODO:537 // 538 538 // x- get the variables out of root:, and move it to Protocols 539 // -- get the waves out of root:, and move it to Protocols539 // x- get the waves out of root:, and move it to Protocols 540 540 // x- be sure that the variables are initialized (done in main initialization 541 // -- link this to the panel?541 // x- link this to the panel? 542 542 // 543 543 Function V_TrimWaves2String() -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_DataPlotting.ipf
r1044 r1050 109 109 End 110 110 111 // TODO111 // 112 112 // x- winStr is currently hard-wired, but this may not be an issue 113 113 Function V_Update1D_Graph(workType,binType) … … 115 115 Variable binType 116 116 117 // TODO:117 // 118 118 // x- "B" detector is currently skipped - Q is not yet calculated 119 119 String str,winStr="V_1D_Data",workPathStr … … 444 444 // V_1D_Data 445 445 // 446 // TODO446 // 447 447 // x- need to set binType 448 448 // x- currently hard-wired == 1 … … 620 620 // V_1D_Data 621 621 // 622 // TODO622 // 623 623 // x- need to set binType 624 624 // x- currently hard-wired == 1 … … 807 807 808 808 809 // TODO809 // 810 810 // x- need to set binType 811 811 // x- currently hard-wired == 1 … … 981 981 982 982 983 // TODO983 // 984 984 // x- need to set binType 985 985 // x- currently hard-wired == 1 … … 1174 1174 1175 1175 1176 // TODO1176 // 1177 1177 // x- need to set binType 1178 1178 // x- currently hard-wired == 1 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_EventModeProcessing.ipf
r1047 r1050 49 49 50 50 51 // TODO 52 // x- these dimensions are hard-wired (OK) 51 // 52 // x- these dimensions are hard-wired (OK for now, will need to be additional definitions for Back detector) 53 // 54 // XBINS is for an individual panel 55 // NTUBES is the total number of tubes = (4)(48)=192 53 56 // 54 57 Constant XBINS=48 … … 63 66 64 67 68 // Initialization of the VSANS event mode panel 65 69 Proc V_Show_Event_Panel() 66 70 DoWindow/F VSANS_EventModePanel … … 71 75 End 72 76 73 // TODO:77 // 74 78 // x- need an index table with the tube <-> panel correspondence 75 79 // NO, per Phil, the tube numbering is sequential: … … 127 131 128 132 129 // for decimation 130 Variable/G root:Packages:NIST:VSANS:Event:gEventFileTooLarge = 150 // 150 MB considered too large133 // for decimation (not used for VSANS - may be added back in the future 134 Variable/G root:Packages:NIST:VSANS:Event:gEventFileTooLarge = 1500 // 1500 MB considered too large 131 135 Variable/G root:Packages:NIST:VSANS:Event:gDecimation = 100 132 136 Variable/G root:Packages:NIST:VSANS:Event:gEvent_t_longest_decimated = 0 133 137 134 // for large file splitting 138 // for large file splitting (unused) 135 139 String/G root:Packages:NIST:VSANS:Event:gSplitFileList = "" // a list of the file names as split 136 140 137 // for editing 141 // for editing (unused) 138 142 Variable/G root:Packages:NIST:VSANS:Event:gStepTolerance = 5 // 5 = # of standard deviations from mean. See PutCursorsAtStep() 139 143 … … 142 146 143 147 144 148 // 149 // the main panel for VSANS Event mode 150 // -- a duplicate of the SANS panel, with the functions I'm not using disabled. 151 // could be added back in the future 152 // 145 153 Proc VSANS_EventModePanel() 146 154 PauseUpdate; Silent 1 // building window... … … 191 199 Button button1,pos={389,103},size={120,20},fSize=12,proc=V_ProcessEventLog_Button,title="Bin Event Data" 192 200 193 201 // NEW FOR VSANS 194 202 Button button21,pos={580,70},size={120,20},proc=V_SplitToPanels_Button,title="Split to Panels" 195 203 Button button22,pos={580,90},size={120,20},proc=V_GraphPanels_Button,title="Show Panels" … … 240 248 EndMacro 241 249 242 250 // 251 // takes the data that is loaded and binned as a fake 252 // (192 x 128) panel to the four LRTB panels, each with 48 tubes 253 // 243 254 Function V_SplitToPanels_Button(ba) : ButtonControl 244 255 STRUCT WMButtonAction &ba … … 257 268 End 258 269 270 271 // 272 // after splitting the data into the 4 panels, draws a simple graph to display the panels 273 // 259 274 Function V_GraphPanels_Button(ba) : ButtonControl 260 275 STRUCT WMButtonAction &ba … … 272 287 return 0 273 288 End 289 274 290 275 291 // mode selector … … 477 493 end 478 494 495 // 479 496 // for oscillatory mode 497 // 498 // Allocate the space for the data as if it was a single 192 x 128 pixel array. 499 // The (4) 48-tube panels will be split out later. this means that as defined, 500 // XBINS is for an individual panel 501 // NTUBES is the total number of tubes = (4)(48)=192 480 502 // 481 503 Function V_Osc_ProcessEventLog(ctrlName) … … 615 637 // - since I don't know if I've sorted or un-sorted. Osc mode always forces a re-sort and a re-index 616 638 // 639 // 640 // Allocate the space for the data as if it was a single 192 x 128 pixel array. 641 // The (4) 48-tube panels will be split out later. this means that as defined, 642 // XBINS is for an individual panel 643 // NTUBES is the total number of tubes = (4)(48)=192 644 // 617 645 Function V_Stream_ProcessEventLog(ctrlName) 618 646 String ctrlName … … 803 831 return(0) 804 832 End 833 805 834 806 835 // TODO … … 877 906 878 907 879 // TODO:880 // 908 // 909 // -- The "file too large" check has currently been set to 1.5 GB 881 910 // 882 911 // … … 887 916 Variable err=0 888 917 Variable fileref,totBytes 889 NVAR fileTooLarge = root:Packages:NIST:VSANS:Event:gEventFileTooLarge //limit load to 150 MB918 NVAR fileTooLarge = root:Packages:NIST:VSANS:Event:gEventFileTooLarge //limit load to 1500MB 890 919 891 920 SVAR filename = root:Packages:NIST:VSANS:Event:gEvent_logfile … … 910 939 endif 911 940 912 // TODO - decide if I want (or need) to keep this 941 // keep this , but set to 1.5 GB 942 // since I'm now in 64-bit space 913 943 /// Abort if the files are too large 914 //Open/R fileref as fileName915 //FStatus fileref916 //Close fileref917 // 918 //totBytes = V_logEOF/1e6 //in MB919 //if(totBytes > fileTooLarge)920 //sprintf abortStr,"File is %g MB, larger than the limit of %g MB. Split and Decimate.",totBytes,fileTooLarge921 //Abort abortStr922 //endif923 // 924 // Print "TotalBytes= ",totBytes944 Open/R fileref as fileName 945 FStatus fileref 946 Close fileref 947 // 948 totBytes = V_logEOF/1e6 //in MB 949 if(totBytes > fileTooLarge) 950 sprintf abortStr,"File is %g MB, larger than the limit of %g MB. Split and Decimate.",totBytes,fileTooLarge 951 Abort abortStr 952 endif 953 // 954 Print "TotalBytes (MB) = ",totBytes 925 955 926 956 … … 936 966 // assign to the proper panels 937 967 938 // TODO:939 // x- (YES - this is MUCH faster) whatif I do the JointHistogram first, then break out the blocks of the940 // 3D sliced data into the individual panels. Then the sort operation c ouldbe skipped,941 // since it wouldimplicitly be done during the histogram operation968 // 969 // x- (YES - this is MUCH faster) if I do the JointHistogram first, then break out the blocks of the 970 // 3D sliced data into the individual panels. Then the sort operation can be skipped, 971 // since it is implicitly be done during the histogram operation 942 972 // x- go back and redimension as needed to get the 128 x 192 histogram to work 943 973 // x- MatrixOp or a wave assignemt should be able to break up the 3D … … 947 977 Duplicate/O eventTime timePt 948 978 949 // TODO:979 // 950 980 // x- for processing, initially treat all of the tubes along x, and 128 pixels along y 951 981 // panels can be transposed later as needed to get the orientation correct … … 962 992 //s_toc() 963 993 964 965 994 // 966 995 // switch the "active" panel to the selected group (1-4) (5 concatenates them all together) … … 969 998 // and redimension them to be sure that they are double precision 970 999 // 971 1000 // 972 1001 // V_SwitchTubeGroup(1) 973 974 // 1002 // 1003 // 1004 975 1005 //tic() 976 1006 Wave timePt=timePt … … 981 1011 982 1012 NVAR gResol = root:Packages:NIST:VSANS:Event:gResol //timeStep in clock frequency (Hz) 1013 Printf "Time Step = 1/Frequency (ns) = %g\r",(1/gResol)*1e9 1014 983 1015 ///// 984 1016 // now do a little processing of the times based on the type of data … … 1004 1036 // MODE_TISANE 1005 1037 1038 1006 1039 // MODE_TOF 1007 1040 if(mode == MODE_TOF) // TOF mode - don't adjust the times, we get periodic t0 to reset t=0 … … 1028 1061 // -- MUCH faster to count the number of lines to remove, then delete (N) 1029 1062 // rather then delete them one-by-one in the do-loop 1063 // 1030 1064 Function V_CleanupTimes(xLoc,yLoc,timePt) 1031 1065 Wave xLoc,yLoc,timePt … … 1076 1110 1077 1111 1078 // TODO(DONE)1112 // (DONE) 1079 1113 // this "fails" for data sets that have 3 or 4 slices, as the ModifyImage command 1080 1114 // interprets the data as being RGB - and so does nothing. … … 1137 1171 // for 64-bit values: 1138 1172 // http://calc.penjee.com 1173 // 1174 // 1139 1175 // 1140 1176 // K0 = 536870912 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Read.ipf
r1044 r1050 259 259 End 260 260 261 // cut in JUNE 2017262 //// TODO- should be the file name as saved on disk, currently it's not261 // **cut in JUNE 2017 262 //// x- should be the file name as saved on disk, currently it's not 263 263 //Function/S V_getFile_name(fname) 264 264 // String fname … … 269 269 //End 270 270 271 // cut in JUNE 2017271 // **cut in JUNE 2017 272 272 //// 273 273 //Function/S V_getHDF_version(fname) … … 314 314 315 315 // list of user names 316 // TODO -- currently not written out to data file??316 // x- currently not written out to data file?? 317 317 Function/S V_getUserNames(fname) 318 318 String fname … … 330 330 // TODO -- for the control section, document each of the fields 331 331 332 // cut in JUNE 2017332 // **cut in JUNE 2017 333 333 //Function/S V_getCount_end(fname) 334 334 // String fname … … 339 339 //end 340 340 341 // cut in JUNE 2017341 // **cut in JUNE 2017 342 342 // 343 343 //Function/S V_getCount_start(fname) … … 381 381 end 382 382 383 // cut in JUNE 2017383 // **cut in JUNE 2017 384 384 // 385 385 //Function V_getIntegral(fname) … … 416 416 end 417 417 418 // cut in JUNE 2017419 // TODO- what are the enumerated types for this?418 // **cut in JUNE 2017 419 // - what are the enumerated types for this? 420 420 //Function/S V_getPreset(fname) 421 421 // String fname … … 434 434 //////// INSTRUMENT 435 435 436 // TODO -- this does not appear to be written out436 // x- this does not appear to be written out 437 437 Function/S V_getLocalContact(fname) 438 438 String fname -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Initialize.ipf
r1044 r1050 26 26 // TODO -- need to set up a separate file of "constants" or "globals" where the actual numbers are 27 27 //stored. If there are not a lot, that place could be here. InitFacilityGlobals() is currently in NCNR_Utils.ipf 28 29 30 31 //32 /// Search for TODO to clean up the missing pieces33 //34 35 28 36 29 … … 81 74 //it leaves data in them untouched 82 75 // 83 // TODO-- make sure that I have all of the folders that I need76 // x-- make sure that I have all of the folders that I need 84 77 // 85 78 Function V_InitFolders() … … 272 265 273 266 /////////////////////////////////////////////// 274 // 267 // TODO 275 268 ////////////// everything below needs to be re-written for VSANS 276 269 // … … 278 271 279 272 280 // TODO273 // 281 274 // do I need to make the protocols any longer for VSANS? (yes -- now 12 points) 282 275 // What other options for processing / averaging / saving are needed?? 283 // -TODO276 // TODO 284 277 // x- likely that I'll want to have #pts to cut from I(q) as input to NSORT within the protocol so that the 285 278 // entire reduction can be automatic 286 279 // 287 280 // 288 // -- creates the "base" protocols that should be available, after creating the data folder289 // -- all protocols are kept in the root:Packages:NIST:VSANS:Globals:Protocols folder, created here281 // x- creates the "base" protocols that should be available, after creating the data folder 282 // x- all protocols are kept in the root:Packages:NIST:VSANS:Globals:Protocols folder, created here 290 283 // 291 284 // -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MainPanel.ipf
r1048 r1050 14 14 15 15 16 // TODO 17 // 18 // -- update this to be VSANS-specific, eliminating junk that is SANS only or VAX-specific 19 // 20 21 22 // TODO-- decide whether to automatically read in the mask, or not 23 // -- there could be a default mask, or look for the mask that is speficied in the 16 // 17 // 18 // x- update this to be VSANS-specific, eliminating junk that is SANS only or VAX-specific 19 // 20 21 22 // 23 // x- decide whether to automatically read in the mask, or not (NO) 24 // x- there could be a default mask, or look for the mask that is speficied in the 24 25 // next file that is read in from the path 25 26 Proc PickPath_MainButtonProc(ctrlName) : ButtonControl … … 174 175 End 175 176 176 // TODO -- fill in with a proper reader that will display the mask(s) 177 // 178 // - fill in with a proper reader that will display the mask(s) 177 179 Proc ReadMask_MainButtonProc(ctrlName) : ButtonControl 178 180 String ctrlName -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MaskUtils.ipf
r1043 r1050 21 21 ///// LOADING 22 22 23 // TODO - when mask is loaded, need to be sure to clean up the "extra" waves that may be present 24 // - the overlay and the currentTube waves since these are not overwritten or killed when new mask 23 // TODO 24 // -- when mask is loaded, need to be sure to clean up the "extra" waves that may be present 25 // 26 // -- the overlay and the currentTube waves since these are not overwritten or killed when new mask 25 27 // data is read in from HDF. need to manually? check for these and delete then, or the data and 26 28 // mask overlay will be out of sync. … … 50 52 51 53 52 // TODO -- document the arrow keys moving the tube number and adding/deleting tubes from the mask 54 // TODO 55 // -- document the arrow keys moving the tube number and adding/deleting tubes from the mask 53 56 // this is done through a window hook function (LR moves tube number, up/down = add/delete) 54 57 // 55 // TODO -- make the arrow keys Igor 6 compatible - search for specialKeyCode or Keyboard Events in the help file 58 // TODO 59 // -- make the arrow keys Igor 6 compatible - search for specialKeyCode or Keyboard Events in the help file 56 60 // and what needs to be replaced for Igor 6 57 // TODO -- for L/R panels, the maksing of columns should be sufficient. Tubes are vertical. For the T/B panels 61 // TODO 62 // -- for L/R panels, the maksing of columns should be sufficient. Tubes are vertical. For the T/B panels 58 63 // the L/R panels cast a vertical shadow (=vertical mask) AND the tubes are horizontal, so the individual 59 64 // tubes will likely need to be masked in a horizontal line too, per tube. ADD this in... … … 106 111 107 112 // 108 // TODO - may need to adjust the display for the different pixel dimensions 113 // TODO 114 // -- may need to adjust the display for the different pixel dimensions 109 115 // ModifyGraph width={Plan,1,bottom,left} 110 116 // 111 // TODO -- need buttons for: 112 // -- quit 117 // TODO 118 // need buttons for: 119 // -- quit (to exit gracefully) 113 120 // -- help (button is there, fill in the content) 114 121 // … … 240 247 // Textbox /C/N=Message/W=KeyboardEventsGraph/A=MT/X=0/Y=15 text 241 248 242 // TODO: this isall Igor-7 ONLY249 // NOTE: these special keyCodes are all Igor-7 ONLY 243 250 244 251 // Note that I need to keep track of the index value since I'm intercepting the … … 584 591 // overlay the mask 585 592 // 586 // TODO593 // 587 594 // x- remove the old mask first 588 595 // x- make the mask "toggle" to remove it … … 716 723 // 717 724 // 718 // TODO -- make the number of pixels GLOBAL 719 // TODO -- there will be lots of work to do to develop the procedures necessary to actually generate the 725 // TODO 726 // -- make the number of pixels GLOBAL 727 // x- there will be lots of work to do to develop the procedures necessary to actually generate the 720 728 // 9 data sets to become the MASK file contents. More complexity here than for the simple SANS case. 721 729 // 722 // TODO -- this is currently random 0|1 values, need to write an editor730 // x- this is currently random 0|1 values, need to write an editor 723 731 // 724 732 // currently set up to use 1 = YES MASK == exclude the data … … 832 840 833 841 // TODO 834 // currently, there are no dummy fill values or attributes for the fake MASK file842 // -- currently, there are no dummy fill values or attributes for the fake MASK file 835 843 // 836 844 Proc Setup_VSANS_MASK_Struct() -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_MultipleReduce.ipf
r1043 r1050 119 119 //and ensures that files in returned list are RAW data , and can be found on disk 120 120 // 121 Function/S FullNameListFromFileList(list)121 Function/S V_FullNameListFromFileList(list) 122 122 String list 123 123 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Transmission.ipf
r1041 r1050 5 5 6 6 // TODO 7 // -- initialization7 // -- initialization 8 8 // x- link to main panel 9 9 // … … 58 58 EndMacro 59 59 60 // TODO -- fill in the details 60 // TODO 61 // -- fill in the details 61 62 // -- currently, I pick these from the Catalog, for speed 62 63 // -- ? is the catalog current? -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_TubeAdjustments.ipf
r1049 r1050 12 12 13 13 // 14 // TODO15 // -- need a way to generate the known, physical dimensions of the slots14 // 15 // x- need a way to generate the known, physical dimensions of the slots 16 16 // Make/O/D/N=5 peak_spacing_mm_ctr 17 17 // peak_spacing_mm_ctr = {-350,-190,0,190,350} (to be filled in with the correct measurements, 18 18 // possibly different for each panel) 19 19 // 20 // -- a 128 point wave "tube_pixel" (=p) is made in V_ArrayToTubes(), and is needed for the WM20 // x- a 128 point wave "tube_pixel" (=p) is made in V_ArrayToTubes(), and is needed for the WM 21 21 // procedures to identify the peak positions. 22 22 // 23 // -- fit with either gauss or lor function to get non-integer pixel values for the peak locations24 // 25 // -- do I fit each individually to "tweak" the located values, or fit all 5 at once with a23 // x- fit with either gauss or lor function to get non-integer pixel values for the peak locations 24 // 25 // x- do I fit each individually to "tweak" the located values, or fit all 5 at once with a 26 26 // custom fit function and guess some good starting values for peak height, location, etc. 27 27 // 28 28 // 29 // -- find a way to display all of the results - in a way that can quickly identify any fits29 // x- find a way to display all of the results - in a way that can quickly identify any fits 30 30 // that may be incorrect 31 31 // … … 93 93 // 94 94 95 // TODO96 // -- need a routine to set up the actual measurements of the slot positions97 // 98 // 99 // TODO100 // -- the slot positioning is different for the L/R and T/B detectors95 // 96 // x- need a routine to set up the actual measurements of the slot positions 97 // 98 // 99 // 100 // x- the slot positioning is different for the L/R and T/B detectors 101 101 // 102 102 Proc V_SetupSlotDimensions() … … 281 281 Variable ind 282 282 283 // TODO284 // -- hard-wired for 5 peaks283 // 284 // x- hard-wired for 5 peaks 285 285 286 286 Variable ii,lo,hi … … 410 410 411 411 412 413 412 //¥Duplicate tube1 tube1_mm 414 413 //¥tube1_mm = V_TubePix_to_mm(fit_coef[0][0],fit_coef[1][0],fit_coef[2][0],p) 415 416 417 414 418 415 … … 722 719 723 720 //////////////////////////// 724 721 // 722 // Main entry - open the panel and go through 723 // each of the steps for each of the detector panels 724 // 725 725 Proc V_TubeCoefPanel() : Panel 726 726 PauseUpdate; Silent 1 // building window... … … 763 763 764 764 765 // a simple display of the refined results 766 // 765 767 Function V_PeakPlotButton(ba) : ButtonControl 766 768 STRUCT WMButtonAction &ba … … 778 780 End 779 781 780 782 // generate the waves and the table 783 // 781 784 Function V_TableForPeaksButton(ba) : ButtonControl 782 785 STRUCT WMButtonAction &ba … … 794 797 End 795 798 796 799 // use the WM procedures to quickly identify the peak position (and height) 800 // to be used in the refining fits 801 // 797 802 Function V_IdentifyPeaksButton(ba) : ButtonControl 798 803 STRUCT WMButtonAction &ba … … 810 815 End 811 816 817 // generate the waves and the table 818 // 812 819 Function V_RefineTableButton(ba) : ButtonControl 813 820 STRUCT WMButtonAction &ba … … 825 832 End 826 833 834 // using the initial peak locations from WM, refine the values 835 // by fitting each individual peak 836 // 827 837 Function V_RefinePeaksButton(ba) : ButtonControl 828 838 STRUCT WMButtonAction &ba … … 840 850 End 841 851 852 // finally, with the peak positions, make waves and a table for the 853 // quadratic coefficients 854 // 842 855 Function V_QuadFitTableButton(ba) : ButtonControl 843 856 STRUCT WMButtonAction &ba … … 855 868 End 856 869 870 // fit all of the peak positions per tube vs. the actual mm locations to 871 // obtain the quadratic coefficients 872 // 857 873 Function V_QuadFitButton(ba) : ButtonControl 858 874 STRUCT WMButtonAction &ba … … 871 887 872 888 873 889 // fill the waves and table with the hard-wired slot positions (mm) 890 // 874 891 Function V_Setup_MasksButton(ba) : ButtonControl 875 892 STRUCT WMButtonAction &ba … … 888 905 889 906 890 907 // convert the named detector array to 48 individual tube waves 908 // 891 909 Function V_ArrayToTubesButton(ba) : ButtonControl 892 910 STRUCT WMButtonAction &ba … … 906 924 907 925 /////////////////////////// 908 909 926 // 927 // unused - a simple line graph for each tube is much simpler 928 // 910 929 Window Gizmo_refinedPositions() : GizmoPlot 911 930 PauseUpdate; Silent 1 // building window... … … 946 965 EndMacro 947 966 967 /////////////////////////// 968 // 969 // unused - a simple line graph for each tube is much simpler 970 // 948 971 Window Gizmo_DetPanel() : GizmoPlot 949 972 PauseUpdate; Silent 1 // building window... … … 1009 1032 End 1010 1033 1034 1035 /////////////// 1036 // 1037 // An easy way to see the fit results to check if the peak locations all make sense. 1038 // 1011 1039 Window V_PeakResultsGraph() : Graph 1012 1040 PauseUpdate; Silent 1 // building window... … … 1028 1056 EndMacro 1029 1057 1030 1058 // 1059 // cycle through the tubes 1060 // 1031 1061 Function V_TubePeakSetVarProc(sva) : SetVariableControl 1032 1062 STRUCT WMSetVariableAction &sva … … 1067 1097 // array is unchanged. Alternatively, the data could be pulled from the RawVSANS folder after a 1068 1098 // file catalog operation 1069 1099 // 1070 1100 Macro V_CopyDetectorsToRoot() 1071 1101 … … 1084 1114 End 1085 1115 1116 // 1117 // 1086 1118 Macro V_SaveDetectorsITX() 1087 1119 // binary save makes each wave an individual file. Igor text groups them all into one file. -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_Utilities_General.ipf
r1044 r1050 64 64 End 65 65 66 // TODO66 // 67 67 // 68 68 // very simple function to look for something in a work folder … … 222 222 223 223 224 // TODO:224 // 225 225 // x- this still does not quite work. If there are no sub folders present in the RawVSANS folder 226 226 // it still thinks there is (1) item there. 227 // -- if I replace the semicolon with a comma, it thinks there are two folders present and appears227 // x- if I replace the semicolon with a comma, it thinks there are two folders present and appears 228 228 // to delete the RawVSANS folder itself! seems very dangerous...this is because DataFolderDir returns 229 229 // a comma delimited list, but with a semicolon and \r at the end. need to remove these... 230 230 // 231 // -- for use with progress bar, kills only one folder, returns the new number of folders left232 // -- if n(in) = n(out), nothing was able to be killed, so return "done" code231 // x- for use with progress bar, kills only one folder, returns the new number of folders left 232 // x- if n(in) = n(out), nothing was able to be killed, so return "done" code 233 233 Function V_CleanOutOneRawVSANS() 234 234 … … 494 494 endif 495 495 496 // TODO496 // 497 497 // x- update the 1D plotting as needed. these are SANS calls (OK for now, but will need to be better) 498 498 //do the average and plot (either the default, or what is on the panel currently) … … 602 602 603 603 // 604 // TODOx- for VSANS Nexus files, how do I quickly identify if a file is604 // x- for VSANS Nexus files, how do I quickly identify if a file is 605 605 // RAW VSANS data? I don't want to generate any errors, but I want to quickly 606 606 // weed out the reduced data sets, etc. from file catalogs. … … 644 644 End 645 645 646 // TODOx- need to fill in correctly by determining this from the INTENT field646 // x- need to fill in correctly by determining this from the INTENT field 647 647 // 648 648 Function V_isTransFile(fname) … … 864 864 // - list is SEMICOLON-delimited 865 865 // 866 // TODO:decide how to do this...866 // decide how to do this... 867 867 // (1) 868 868 // checks each file in the directory to see if it is a RAW data file by … … 875 875 // (was .saN), now key on ".nxs.ngv"? 876 876 // 877 // called by PatchFiles.ipf, Tile_2D.ipf 877 // ** use method (2), reading each file is just way too slow 878 // 878 879 // 879 880 Function/S V_GetRawDataFileList() … … 916 917 917 918 // 918 // TODO:919 // -- does this need to be more sophisticated?919 // 920 // x- does this need to be more sophisticated? 920 921 // 921 922 // simple "not" of V_GetRawDataFileList() -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_VSANS_Preferences.ipf
r1031 r1050 2 2 3 3 4 /// TODO5 // -- update all to be only VSANS-specific6 // -- update all of the function names to be unique to VSANS so that there are no4 /// 5 // x- update all to be only VSANS-specific 6 // x- update all of the function names to be unique to VSANS so that there are no 7 7 // name clashes with the "duplicate" version that is in PlotUtils.ipf 8 8 // 9 // -- Make this a VSANS-only panel10 // -- eliminate the USANS tab11 // -- be sure the general tab is either unique, or eliminate it12 // -- be sure the Analysis tab is unique, or eliminate it9 // x- Make this a VSANS-only panel 10 // x- eliminate the USANS tab 11 // x- be sure the general tab is either unique, or eliminate it 12 // x- be sure the Analysis tab is unique, or eliminate it 13 13 // 14 14 // … … 33 33 34 34 35 // TODO -- there are more detector specific corrections here that need to be added35 // x- there are more detector specific corrections here that need to be added 36 36 // 37 37 // create the globals here if they are not already present
Note: See TracChangeset
for help on using the changeset viewer.