Extended IDL Help

This page was created by the IDL library routine MK_HTML_HELPARG. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? MK_HTML_HELPARG

at the IDL command line prompt.

Last modified: Wed Sep 17 15:48:32 2003.


List of Routines


Routine Descriptions

AAA_README

[Next Routine] [List of Routines]
 NAME:
        AAA_Readme

 PURPOSE:

	Documentation of general COMMON information and methods about
	classes and routines used with the specObj class.

 AUTHOR:

       Tanya M. Riseman, Ph.D.
       NIST Center for Neutron Research
       100 Bureau Drive
       Gaithersburg, MD 20899
       Phone: (301) 975-8379
       E-mail: tanya.riseman@nist.gov

 CATEGORY:

       Documentation and utility "HELP", "PRINT" and "SHOW" methods
       and the utility procedure "CHECK_HEAP".

 OBJECT CLASSES:
   specobj__define.pro
	 SPECOBJ__DEFINE_arguments
   focusObj__define.pro
	 FOCUSOBJ__DEFINE_arguments
   DAVE_tagContainer__define.pro
	 DAVE_TAGCONTAINER__DEFINE_arguments
   qtyobj__define.pro
	 QTYOBJ__DEFINE_arguments
   tagobj__define.pro
	 TAGOBJ__DEFINE_arguments

 HOW TO DOCUMENT A DIRECTORY:
	Required mark-up of the source code.
	To create a HTML file containing information marked in your 
	files starting and ending with ";+", "";-" and ";*", ";/" use:
	IDL> MK_HTML_HELPARG, 'yourPath', 'yourDoc.html', /verbose

 HOW TO DOCUMENT A FILE:
	Required mark-up of the source code.
	To create a HTML file containing information marked in your selected
	file starting and ending with ";+", "";-" and ";*", ";/" use:
	IDL> MK_HTML_HELPARG, 'yourFile', 'yourDoc.html', /verbose

 GENERIC "HELP" METHODS:
  "Generic" methods require a wrapper for each class (like 
  
  • QTYOBJ::HELP_OBJ which defines the keywords and parameters). The only code in the wrapper is a call to the generic code fragment using "@".
  • GENERIC__HELP_OBJ_FRAG.PRO Prints to screen or file unit number the TYPE of the object's contents and lists all methods avaiable (with keywords in UPPERCASE and parameters in lowercase). Preceding the methods listed is a number, with zero (0) indicating that the methods reside in the top most class definition. The higher the number the "deeper" the inherentance depth is.
  • GENERIC__PRINT_FRAG.PRO Prints to the screen or file unit number the contents of the object as either heap variable ID's or the actual contents if the /alsoPtrs keyword is used. One field in the class structure may be requested. The contents of pointers can be shown using the keyword /alsoPtrs. Note: In IDL, classes using inheritance basically construct one huge structure including all the data. The inherited methods have access to ALL of the data in the structure, not just the parts that are relevent to the inherited class. Therefore it is best to use generic code fragements for methods ::print_obj and ::help_obj ONLY FOR THE TOP MOST CLASS which has inherited classes. No inherited classes are currently used in the specObj class. EXAMPLES: GENERIC "HELP" METHODS: IDL> myObject = obj_new('qtyObj', name='qName', qty=[1,2,3], units='counts') IDL> myObject -> help_obj Class QTYOBJ has 10 tags of type: self.NAME STRING self.UNITS STRING self.TNAME STRING self.STYLEERR STRING self.RANK INT self.DIM INT[4] self.PTR_LEGEND POINTER UNDEF self.PTR_QTY POINTER INT[3] self.PTR_ERR POINTER UNDEF self.PTR_NERR POINTER UNDEF QTYOBJ using the methods: (lowercase:arguments UPPERCASE:keywords) 0 Method Procedures: 0 QTYOBJ::CLEANUP self 0 QTYOBJ::HELPCLASS self CLASS HELPFUNCSTR HELPPROSTR LEVEL LUN 0 QTYOBJ::HELP_OBJ self CLASS HELPFUNCSTR HELPPROSTR LEVEL LUN METHODSONLY 0 QTYOBJ::PRINT_OBJ self thisfield ALSOPTRS LUN 0 QTYOBJ::SHOW self HEAPNUM LEVEL LUN NOTRAILINGBLANK PREFIX RECURSIVE 0 STRARRAY 0 Method Functions: 0 QTYOBJ::APPEND self ERR LEGEND NERR OBJ PTR_ERR PTR_LEGEND PTR_NERR PTR_QTY 0 QTY 0 QTYOBJ::BIGGESTDIM self 0 QTYOBJ::CLONE self 0 QTYOBJ::COUNT self 0 QTYOBJ::GET self ALL ARGPRESENT AXISTITLE DIM ERR EVERYTHING LEGEND NAME 0 NERR PTR_ERR PTR_LEGEND PTR_NERR PTR_QTY QTY RANK SIZESTRING 0 SOME STYLEERR TNAME UNITS 0 QTYOBJ::GETDIMENSION self ARGPRESENT DIM RANK TNAME 0 QTYOBJ::GETONEVALUE self ARGPRESENT DESCRIPTITLE FORLEGEND FORPOS ONEERR 0 ONELEGEND ONENERR ONEQTY 0 QTYOBJ::GETSTRING self ALL ARGPRESENT AXISTITLE EVERYTHING NAME SIZESTRING 0 SOME STYLEERR UNITS 0 QTYOBJ::GETVALUE self ARGPRESENT ERR LEGEND NERR PTR_ERR PTR_LEGEND PTR_NERR 0 PTR_QTY QTY 0 QTYOBJ::HASERROR self 0 QTYOBJ::HASSTEP self 0 QTYOBJ::INIT self DIM ERR INITVALUE LEGEND NAME NERR PTR_ERR PTR_LEGEND 0 PTR_NERR PTR_QTY QTY RANK STYLEERR TNAME UNITS 0 QTYOBJ::ISCONSTANT self 0 QTYOBJ::ISNUMERIC self 0 QTYOBJ::ISSCALAR self 0 QTYOBJ::POSITIONLEGEND self thislegend thispos 0 QTYOBJ::REMOVE self FORLEGEND FORPOS 0 QTYOBJ::REMOVEALL self 0 QTYOBJ::SET self DIM ERR INITVALUE LEGEND NAME NERR PTR_ERR PTR_LEGEND 0 PTR_NERR PTR_QTY QTY RANK STYLEERR TNAME UNITS 0 QTYOBJ::SETDIMENSION self DIM INITVALUE RANK TNAME 0 QTYOBJ::SETONEVALUE self FORLEGEND FORPOS ONEERR ONELEGEND ONENERR ONEQTY 0 QTYOBJ::SETSTRING self NAME STYLEERR UNITS 0 QTYOBJ::SETVALUE self ERR LEGEND NERR PTR_ERR PTR_LEGEND PTR_NERR PTR_QTY QTY IDL> myObject = obj_new('qtyObj', name='qName', qty=[1,2,3], units='counts') IDL> myObject -> print_obj self.(0) = self.NAME= qName self.(1) = self.UNITS= counts self.(2) = self.TNAME= INT self.(3) = self.STYLEERR= self.(4) = self.RANK= 1 self.(5) = self.DIM= 3 0 0 0 self.(6) = self.PTR_LEGEND= self.(7) = self.PTR_QTY= self.(8) = self.PTR_ERR= self.(9) = self.PTR_NERR= IDL> myObject -> print_obj, 'ptr_qty', /alsoPtrs self.(7) = *(self.PTR_QTY) = 1 2 3 NON-GENERIC HELP METHODS: All classes in this directory have a similar SHOW method. Keyword options include "/recursive" for traveling down the limbs of a container class and an optional keyword for writing out to a file unit number. Classnames appear in curley brackets. EXAMPLES: NON-GENERIC HELP METHODS: IDL> myObject = obj_new('specObj', label='empty') IDL> myObject -> show .container = [2] FOCUSOBJ.header = [1] DVheader empty specObj::init FOCUSOBJ.data = [0] DVdata empty specObj::init All contents: self.STORE = {DAVE_TAGCONTAINER}[2] .[DVheader,empty,specObj::init]= {DAVE_TAGCONTAINER}[1] .[DVdata,empty,specObj::init]= {DAVE_TAGCONTAINER}[0] DEBUGGING UTILITY PROCEDURES:
  • CHECK_HEAP This routine prints the contents of all variables (recursively!) and file unit numbers left on the heap. IDL> CHECK_HEAP OTHER FILES AND ROUTINES USED: HELP_OBJ methods require the HELPCLASS method. SHOW methods require that objects contained within the class have a SHOW method, with keywords lun, heapNum, and possibly recusive (if appropriate). CHECK_HEAP routine requires COUNT method and GET method, with the keyword everything which returns a summary string. INCLUDE FILES: GENERIC__HELCLASS_FRAG.PRO GENERIC__HELP_OBJ_FRAG.PRO GENERIC__PRINT_FRAG.PRO MODIFICATION HISTORY: Tanya Riseman, July, 2003.
  • (See /home/tanya/idl/dave/programs/tas/specobj/AAA_readme.pro)


    CHECK_HEAP

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          check_heap
    
     PURPOSE:
    
    	This is a generic routine help find memory leaks. 
     It reports which objects, pointers and file unit numbers are still on the 
     heap, after all objects supposedly have been destroyed. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Debugging of objects, pointers and file I/O.
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED:
    	Objects on the heap are assumed to have the following methods:
    	ncount = (lostall[i])->count()
          	success = ((lostall[i])->get(everything=thisEverything))
    		The get method returns thisEverything as a summary string.
    
     EXAMPLE
    	...
    
     SEE ALSO:
    	
  • AAA_README MODIFICATION HISTORY: Created Spring, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/check_heap.pro)


    CHECK_HEAP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro check_heap, $
    	skip_help=thisSkip_help
    

    (See /home/tanya/idl/dave/programs/tas/specobj/check_heap.pro)


    COMBINETAGS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	combineTags
    
     PURPOSE:
    	Helper function for tagObj class.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    COMBINETAGS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function combineTags, $		; Returns array of 3 strings, e.g. ['', '', '']
    	class = thisClass, $		; INPUT. string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; INPUT. string "Counts"
    	codeSource = thisCodeSource, $	; INPUT. string "ICP", "PAN"
    	tags = thisTags		;; OUTPUT.string array of class, label, codeSource.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    COMBO_OBJ_NEW,_arguments[1]

    [Previous Routine] [Next Routine] [List of Routines]
    function combo_obj_new, $	; Returns an object of type ThisClass.
       thisMultiMethod, $		; Required method for combining the objects.
    				; defaults to 'SUM'. 
    				; Possible ones are  CONCATENATE, ZIP, & SUM.
       thisClass, $			; Required class type, probably 'SpecObj' of
       				; both the result and the intermediate objects.
    				; Defaults to 'specobj'.
       ;----------------------------------------------------------------
       usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;   usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;   			; MIGHT pop up an interactive diglaog box.
       ;----------------------------------------------------------------
       davePtr = thisDavePtr, $	; Optionally passed ID from above.
       ;----------------------------------------------------------------
       ; Use keywords combos (listDavePtr,/convert) or 
       ; (listInstrument, listPath, listFilename, dataReader, convert=0) BUT NOT COMBINED!
       ;----------------------------------------------------------------
       convert = thisConvert, $		; Boolean keyword. If true, convert
       					; the DavePtr. Otherwise, read files.
    					; Must be used with davePtr keyword.
       ;----------------------------------------------------------------
    ;   listDavePtr = thisListDavePtr, $	; Optionally create specObj from DAVE data
    ;   					; if filename not used. 
    ;					; Otherwise this is the davePtr handed from
    ;					; above.
       ;------------------------------------------------------------------
       ;  All *list* variables are arrays or single string converted to an array.
       ; e.g. listInstruments = ['bt4'] converts to ['bt4','bt4','bt4', ...]
       listInstrument=thisListInstrument, $		; Optional string. 
       					; Only used w/out davePtr keyword
       listPath = thisListPath, $			; String. path for ICP file.
       					; Only used w/out davePtr keyword.
       listFilename = thisListFilename, $		; String. ICP file to read from.
       					; Only used w/out davePtr keyword.
       dataReader = thisDataReader, $	; String. Data reader function's name
       					; Only used w/out davePtr keyword.
       ;----------------------------------------------------------------
       depField = thisDepField, $		; Optional.  
       					; depField = ['qtyObj', 'AvTemp', '*']
       					; Used by 'ZIP' method. 
       ;----------------------------------------------------------------
    ;Unused   Label = thisLabel, $			; String. label portion of tags.
    ;Unused   CodeSource = thisCodeSource, $	; String. CodeSource portion of tags.
       ;------------------------------------------------------------------
       wID = thisWID, $			; widget ID asscoated with object self
       errMsg = thisErrMsg			; Optional error message string
       ;------------------------------------------------------------------
    

    (See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)


    COMBO_OBJ_NEW,_arguments[2]

    [Previous Routine] [Next Routine] [List of Routines]
    function combo_obj_new, $	; Returns an object of type ThisClass.
       thisMultiMethod, $		; Required method for combining the objects.
    				; defaults to 'SUM'. 
    				; Possible ones are  CONCATENATE, ZIP, & SUM.
       thisClass, $			; Required class type, probably 'SpecObj' of
       				; both the result and the intermediate objects.
    				; Defaults to 'specobj'.
       ;----------------------------------------------------------------
       usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;   usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;   			; MIGHT pop up an interactive diglaog box.
       ;----------------------------------------------------------------
       davePtr = thisDavePtr, $	; Optionally passed ID from above.
       ;----------------------------------------------------------------
       ; Use keywords combos (listDavePtr,/convert) or 
       ; (listInstrument, listPath, listFilename, dataReader, convert=0) BUT NOT COMBINED!
       ;----------------------------------------------------------------
       convert = thisConvert, $		; Boolean keyword. If true, convert
       					; the DavePtr. Otherwise, read files.
    					; Must be used with davePtr keyword.
       ownerDavePtr = thisownerDavePtr, $	; If 'local', cleanup destroys self.davePtr.
       					; If 'main', cleanup skips self.DavePtr
    					; Defaults to 'main'.
       ;----------------------------------------------------------------
    ;   listDavePtr = thisListDavePtr, $	; Optionally create specObj from DAVE data
    ;   					; if filename not used. 
    ;					; Otherwise this is the davePtr handed from
    ;					; above.
       ;------------------------------------------------------------------
       ;  All *list* variables are arrays or single string converted to an array.
       ; e.g. listInstruments = ['bt4'] converts to ['bt4','bt4','bt4', ...]
       listInstrument=thisListInstrument, $		; Optional string. 
       					; Only used w/out davePtr keyword
       listPath = thisListPath, $			; String. path for ICP file.
       					; Only used w/out davePtr keyword.
       listFilename = thisListFilename, $		; String. ICP file to read from.
       					; Only used w/out davePtr keyword.
       dataReader = thisDataReader, $	; String. Data reader function's name
       					; Only used w/out davePtr keyword.
       ;----------------------------------------------------------------
       depField = thisDepField, $		; Optional.  
       					; depField = ['qtyObj', 'AvTemp', '*']
       					; Used by 'ZIP' method. 
       ;----------------------------------------------------------------
    ;Unused   Label = thisLabel, $			; String. label portion of tags.
    ;Unused   CodeSource = thisCodeSource, $	; String. CodeSource portion of tags.
       ;------------------------------------------------------------------
       wID = thisWID, $			; widget ID asscoated with object self
       errMsg = thisErrMsg			; Optional error message string
       ;------------------------------------------------------------------
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    COMBO_OBJ_NEW[1]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	combo_obj_new
    
     PURPOSE:
    	A fake object initialization method.
    	Initialize the object, using multiple raw data input files or mutiple
    	davePtrs, using a particular method.
    	Keywords based on those used with obj_new('specobj', ..). 
    
     SEE ALSO:
    	 
  • SPECOBJ::INIT,_arguments
  • SPECOBJ::CONCATENATE,_arguments
  • SPECOBJ::ZIP,_arguments
  • SPECOBJ::SUM,_arguments
  • (See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)


    COMBO_OBJ_NEW[2]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	combo_obj_new
    
     PURPOSE:
    	A fake object initialization method.
    	Initialize the object, using multiple raw data input files or mutiple
    	davePtrs, using a particular method.
    	Keywords based on those used with obj_new('specobj', ..). 
    
     SEE ALSO:
    	 
  • SPECOBJ::INIT,_arguments
  • SPECOBJ::CONCATENATE,_arguments
  • SPECOBJ::ZIP,_arguments
  • SPECOBJ::SUM,_arguments
  • (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    COMBO_RESTORE,_arguments[1]

    [Previous Routine] [Next Routine] [List of Routines]
    function combo_restore, $	; Returns an object of type ThisClass.
       thisMultiMethod, $		; Required method for combining the objects.
    				; defaults to 'SUM'. 
    				; Possible ones are  SINGLE, CONCATENATE, ZIP, & SUM.
       thisClass, $			; Required class type, probably 'SpecObj' of
       				; both the result and the intermediate objects.
    				; Defaults to 'specobj'.
       ;----------------------------------------------------------------
       usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;   usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;   			; MIGHT pop up an interactive diglaog box.
       ;----------------------------------------------------------------
       davePtr = thisDavePtr, $	; Optionally passed ID from above.
       ;----------------------------------------------------------------
       ; Use keywords combos (listDavePtr,/convert) or 
       ; (listInstrument, listPath, listFilename, dataReader, convert=0) BUT NOT COMBINED!
       ;----------------------------------------------------------------
       convert = thisConvert, $		; Boolean keyword. If true, convert
       					; the DavePtr. Otherwise, read files.
    					; Must be used with davePtr keyword.
       ;----------------------------------------------------------------
    ;   listDavePtr = thisListDavePtr, $	; Optionally create specObj from DAVE data
    ;   					; if filename not used. 
    ;					; Otherwise this is the davePtr handed from
    ;					; above.
       ;------------------------------------------------------------------
       ;  All *list* variables are arrays or single string converted to an array.
       ; e.g. listInstruments = ['bt4'] converts to ['bt4','bt4','bt4', ...]
       listInstrument=thisListInstrument, $		; Optional string. 
       					; Only used w/out davePtr keyword
       listPath = thisListPath, $			; String. path for ICP file.
       					; Only used w/out davePtr keyword.
       listFilename = thisListFilename, $		; String. ICP file to read from.
       					; Only used w/out davePtr keyword.
    ;   dataReader = thisDataReader, $	; String. Data reader function's name
    ;   					; Only used w/out davePtr keyword.
       ;----------------------------------------------------------------
       depField = thisDepField, $		; Optional.  
       					; depField = ['qtyObj', 'AvTemp', '*']
       					; Used by 'ZIP' method. 
       ;----------------------------------------------------------------
    ;Unused   Label = thisLabel, $			; String. label portion of tags.
       CodeSource = thisCodeSource, $	; String. CodeSource portion of tags.
       ;------------------------------------------------------------------
       wID = thisWID, $			; widget ID asscoated with object self
       errMsg = thisErrMsg			; Optional error message string
       ;------------------------------------------------------------------
    

    (See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)


    COMBO_RESTORE,_arguments[2]

    [Previous Routine] [Next Routine] [List of Routines]
    function combo_restore, $	; Returns an object of type ThisClass.
       thisMultiMethod, $		; Required method for combining the objects.
    				; defaults to 'SUM'. 
    				; Possible ones are  SINGLE, CONCATENATE, ZIP, & SUM.
       thisClass, $			; Required class type, probably 'SpecObj' of
       				; both the result and the intermediate objects.
    				; Defaults to 'specobj'.
       ;----------------------------------------------------------------
       usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;   usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;   			; MIGHT pop up an interactive diglaog box.
       ;----------------------------------------------------------------
       davePtr = thisDavePtr, $	; Optionally passed ID from above.
       ;----------------------------------------------------------------
       ; Use keywords combos (listDavePtr,/convert) or 
       ; (listInstrument, listPath, listFilename, dataReader, convert=0) BUT NOT COMBINED!
       ;----------------------------------------------------------------
       convert = thisConvert, $		; Boolean keyword. If true, convert
       					; the DavePtr. Otherwise, read files.
    					; Must be used with davePtr keyword.
       ownerDavePtr = thisownerDavePtr, $	; If 'local', cleanup destroys self.davePtr.
       					; If 'main', cleanup skips self.DavePtr
    					; Defaults to 'main'.
       ;----------------------------------------------------------------
    ;   listDavePtr = thisListDavePtr, $	; Optionally create specObj from DAVE data
    ;   					; if filename not used. 
    ;					; Otherwise this is the davePtr handed from
    ;					; above.
       ;------------------------------------------------------------------
       ;  All *list* variables are arrays or single string converted to an array.
       ; e.g. listInstruments = ['bt4'] converts to ['bt4','bt4','bt4', ...]
       listInstrument=thisListInstrument, $		; Optional string. 
       					; Only used w/out davePtr keyword
       listPath = thisListPath, $			; String. path for ICP file.
       					; Only used w/out davePtr keyword.
       listFilename = thisListFilename, $		; String. ICP file to read from.
       					; Only used w/out davePtr keyword.
    ;   dataReader = thisDataReader, $	; String. Data reader function's name
    ;   					; Only used w/out davePtr keyword.
       ;----------------------------------------------------------------
       depField = thisDepField, $		; Optional.  
       					; depField = ['qtyObj', 'AvTemp', '*']
       					; Used by 'ZIP' method. 
       ;----------------------------------------------------------------
    ;Unused   Label = thisLabel, $			; String. label portion of tags.
       CodeSource = thisCodeSource, $	; String. CodeSource portion of tags.
       ;------------------------------------------------------------------
       wID = thisWID, $			; widget ID asscoated with object self
       errMsg = thisErrMsg			; Optional error message string
       ;------------------------------------------------------------------
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    COMBO_RESTORE[1]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	combo_restore
    
     PURPOSE:
    	A fake object initialization method.
    	Initialize the object, using multiple DAVE save input files, 
           using a particular method.
    	Keywords based on those used with obj_new('specobj', ..). 
    
     SEE ALSO:
    	 
  • SPECOBJ::INIT,_arguments
  • SPECOBJ::CONCATENATE,_arguments
  • SPECOBJ::ZIP,_arguments
  • SPECOBJ::SUM,_arguments
  • (See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)


    COMBO_RESTORE[2]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	combo_restore
    
     PURPOSE:
    	A fake object initialization method.
    	Initialize the object, using multiple DAVE save input files, 
           using a particular method.
    	Keywords based on those used with obj_new('specobj', ..). 
    
     SEE ALSO:
    	 
  • SPECOBJ::INIT,_arguments
  • SPECOBJ::CONCATENATE,_arguments
  • SPECOBJ::ZIP,_arguments
  • SPECOBJ::SUM,_arguments
  • (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    CW_OW_BINARYOP

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_binaryOp
    
     PURPOSE:
    	This is a compound object widget which allows a binary operator to 
     act on two fields from an object of class specObj. User input values are
     allowed in lieu of the fields. The results are stored in the object.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_BINARYOP__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_OPER__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_binaryOp::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_binaryOp::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_binaryOp::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_binaryOp::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_BINARYOP__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_binaryOp__define
      define = {cw_ow_binaryOp, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	operWObj: obj_new(), $
    	where1WObj: obj_new(), $
    	where2WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)


    CW_OW_CLONE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_clone
    
     PURPOSE:
    	This is a compound object widget which allows a cloning of a field
     from an object of class specObj. A user input value is
     allowed in lieu of the field, in which case this would be better named
     cw_ow_new. The result is stored in the object.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_CLONE__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_clone::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_clone::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_clone::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_clone::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CLONE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_clone__define
      define = {cw_ow_clone, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)


    CW_OW_CONSTBKGD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_constBkgd
    
     PURPOSE:
     This is a compound object widget which does does a "constant background"
     correction to the intensity. By default, it creates a corrected neutron 
     	d = a - b = INTENSITY - # , 
     with the number # defaulting to zero.
     The user is allowed to use over-ride and use values for any of a or b
     Errors are propagated. 
     The FRESHEN button propagates the name, label and units.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • cw_ow_constBkgd__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July-August, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::FRESHENRESULTS_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::freshenResults
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::FRESHENWHERE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::FreshenWhere, $ 
    	inHeader = thisInHeader, $
    	inData = thisInData
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_constBkgd::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_constBkgd::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_constBkgd::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_constBkgd::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_CONSTBKGD__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_constBkgd__define	; d = a - b. Intensity corrected for constant bkgd.
      define = {cw_ow_constBkgd, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $		; Whether ornot to destroy specObj.
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	where1WObj: obj_new(), $	; a
    	where2WObj: obj_new() $	; b
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)


    CW_OW_FASTBKGD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_fastBkgd
    
     PURPOSE:
     This is a compound object widget which does does a "fast background"
     correction to the intensity. By default, it creates a corrected neutron 
     	d = a - b * c = INTENSITY - # * TIME, 
     with the number # defaulting to zero.
     The user is allowed to use over-ride and use values for any of a,b,c 
     Errors are propagated. 
     The FRESHEN button propagates the name, label and units.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_FASTBKGD__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July-August, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::FRESHENRESULTS_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::freshenResults
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::FRESHENWHERE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::FreshenWhere, $ 
    	inHeader = thisInHeader, $
    	inData = thisInData
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_fastBkgd::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_fastBkgd::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_fastBkgd::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_fastBkgd::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_FASTBKGD__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_fastBkgd__define	; d = a - b * c. Intensity corrected for fast bkgd.
      define = {cw_ow_fastBkgd, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $		; Whether ornot to destroy specObj.
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	where1WObj: obj_new(), $	; a
    	where2WObj: obj_new(), $	; b
    	where3WObj: obj_new() $		; c 
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)


    CW_OW_OPER

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	CW_OW_OPER
    
     PURPOSE:
    	This is a compound object widget which allows an operator or function
     to be selected, either from a pre-defined list or entered.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_OPER__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED: FSC_FIELD MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_oper::count
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::GETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper::getProperty, $
    	oper = thisOper			; return the operator selected 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_oper::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_oper::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_oper::init, $
    ;	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	operators = thisOperators, $	; List of operators. String array.
    	from = thisFrom, $	; optional. defaults to 'input'
    				; Acceptible values: 'input', 'operator',
    	field = thisField, $	; Optional pre-selection. 
    	destroy = thisDestroy	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_oper::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER::SETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper::setProperty, $
    	from = thisFrom, $	; Changes whcih is sensitized
    	oper = thisOper, $	; Goes to the droplist
    	value = thisValue	; Goes to the text entry box
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_OPER__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_oper__define
      define = {cw_ow_oper, $
    ;  	specObj:obj_new(), $	; don't destroy
    ;	destroy: 0, $
    	parentID:0l, $
    	tlbID:0l, $
    	fromMenu:['', ''], $	;['input', 'operator' ]
    	ifrom: 0, $
    	whereID:0L, $
    	opMenuPtr: ptr_new(), $; string array, like ['+', '-', '*', '/']
    	nOpMenu: 0, $
    	ioperator: 0, $			;integer position. Doesn't work
    	operator:'', $			; 1 string. Doesn't work
    	operatorID:0L, $
    	operatorSensitive: 0, $
    	value: ' ', $			; eventValue not triggered. So useless.
    	valueID:0L, $
    	valueObj: obj_new(), $		; returned from fsc_field.pro
    	valueSensitive:0 $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)


    CW_OW_REMOVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_remove
    
     PURPOSE:
    	This is a compound object widget which allows a field to be 
     selected from an object of class specObj. This field (and its data)
     is then removed from the object.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_REMOVE__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_remove::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_remove::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_remove::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $ ; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_remove::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_REMOVE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_remove__define
      define = {cw_ow_remove, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)


    CW_OW_RESULT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_result
    
     PURPOSE:
    	This is a compound object widget which allows the label, name,
     and units to be created for a new field in an object of class specObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_RESULT__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED: FSC_FIELD MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_result::count
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::GETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result::getProperty, $
    	label = thisLabel, $ 
    	name = thisName, $
    	units = thisUnits
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_result::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_result::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_result::init, $
    	thisParentID		; optional
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_result::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT::SETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result::setProperty, $
    	label = thisLabel, $ 
    	name = thisName, $
    	units = thisUnits
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULTVALUE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resultvalue
    
     PURPOSE:
    	This is a compound object widget which allows the quantity, errors, 
     and legend to be created for a new field in an object of class specObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_RESULTVALUE__DEFINE_arguments ; OTHER OBJECT CLASSES AND ROUTINES USED: FSC_FIELD MODIFICATION HISTORY: Created July, 2003. Tanya Riseman TMR. Aug 6, 2003. Changed file name from cw_ow_resultValue.pro to cw_ow_resultvalue.pro, to help RESOLVE_ALL in the BUILD process.
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_resultValue::count
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::GETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue::getProperty, $
    	qty = thisQty, $ 
    	err = thisErr, $
    	nerr = thisNErr, $
    	legend = thisLegend
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resultValue::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_resultValue::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_resultValue::init, $
    	thisParentID		; optional
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resultValue::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue::print_obj, $
      ; ThisField is parameter with Err of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE::SETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue::setProperty, $
    	Qty = thisQty, $ 
    	Err = thisErr, $
    	nErr = thisnErr, $
    	Legend = thisLegend
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULTVALUE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resultValue__define
      define = {cw_ow_resultValue, $
    ;  	specObj:obj_new(), $	; don't destroy
    ;	destroy: 0, $
    	parentID:0l, $
    	tlbID:0l, $
    	;---------------------------------------------------
    	qty: '', $	
    	qtyID :0L, $,
    	qtyObj: obj_new(), $	; object returned from fsc_field.pro
    	err: '', $	
    	errID :0L, $,
    	errObj: obj_new(), $	; object returned from fsc_field.pro
    	nerr: '', $	
    	nerrID :0L, $,
    	nerrObj: obj_new(), $	; object returned from fsc_field.pro
    	legend: '', $	
    	legendID :0L, $
    	legendObj: obj_new() $	; object returned from fsc_field.pro
    	;---------------------------------------------------
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)


    CW_OW_RESULT_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESULT__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_result__define
      define = {cw_ow_result, $
    ;  	specObj:obj_new(), $	; don't destroy
    ;	destroy: 0, $
    	parentID:0l, $
    	tlbID:0l, $
    	label: '', $	
    	labelID :0L, $,
    	labelObj: obj_new(), $	; object returned from fsc_field.pro
    	name: '', $	
    	nameID :0L, $,
    	nameObj: obj_new(), $	; object returned from fsc_field.pro
    	units: '', $	
    	unitsID :0L, $
    	unitsObj: obj_new() $	; object returned from fsc_field.pro
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)


    CW_OW_RESVOL

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resVol
    
     PURPOSE:
     This is a compound object widget which does a resolution volume correction.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • cw_ow_resVol__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July-August, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::FRESHENRESULTS_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::freshenResults
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::FRESHENWHERE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::FreshenWhere, $ 
    	inHeader = thisInHeader, $
    	inData = thisInData
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resVol::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_resVol::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_resVol::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_resVol::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_RESVOL__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_resVol__define	; 
      define = {cw_ow_resVol, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $		; Whether ornot to destroy specObj.
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $	; Corrected intensity
    	where1WObj: obj_new(), $	; Orig Intensity
    	where2WObj: obj_new(), $	; E_in
    	where3WObj: obj_new(), $	; E_out
    	where4WObj: obj_new(), $	; dspacing_mon (in)
    	where5WObj: obj_new() $		; dspacing_ana (out)
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)


    CW_OW_SCALEBYMONITOR

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_scalebymonitor
    
     PURPOSE:
    	This is a compound object widget which is ICP/triple axis specific.
     It performs the allows the quantity, errors, 
     and legend to be created for a new field in an object of class specObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_SCALEBYMONITOR___DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_scalebymonitor::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_scalebymonitor::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_scalebymonitor::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_scalebymonitor::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SCALEBYMONITOR__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_scalebymonitor__define
      define = {cw_ow_scalebymonitor, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    ;	resultWObj: obj_new(), $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)


    CW_OW_SETSTING

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setSting
    
     PURPOSE:
    	This is a compound object widget which modified the "string"
     portions (label, name, and units) of a field in an object of class specObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_SETSTRING__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman TMR. Aug 6, 2003. Changed file name to all lowercase to help BUILD's RESOLVE_ALL
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setString::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_setString::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_setString::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setString::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETSTRING__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setString__define
      define = {cw_ow_setString, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)


    CW_OW_SETVALUE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setValue
    
     PURPOSE:
    	This is a compound object widget which modified the mostly numeric
     portions (quantity, errors, and legend) of a field in an object of class 
     specObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_SETVALUE__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULTVALUE__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setValue::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_setValue::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_setValue::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_setValue::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_SETVALUE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_setValue__define
      define = {cw_ow_setValue, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultValueWObj: obj_new(), $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)


    CW_OW_UNITARYOP

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_unitaryOp
    
     PURPOSE:
    	This is a compound object widget which allows a unitary operator or 
     function to acts on one field from an object of class specObj. 
     A user input value is allowed in lieu of the field. The result is stored 
     in the object.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_UNITARYOP__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • CW_OW_RESULT__DEFINE_arguments
  • CW_OW_OPER__DEFINE_arguments
  • CW_OW_WHERE__DEFINE_arguments
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryOp::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryOp::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_unitaryOp::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_unitaryOp::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryOp::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_unitaryOp::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	destroy = thisDestroy, $	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	parentWobj = thisParentWobj ; parent object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_unitaryOp::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryOp::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryOp_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_UNITARYOP__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_unitaryop__define
      define = {cw_ow_unitaryop, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	parentWObj: obj_new(), $
    	tlbID:0l, $
    	resultWObj: obj_new(), $
    	operWObj: obj_new(), $
    	where1WObj: obj_new() $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)


    CW_OW_WHERE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_where
    
     PURPOSE:
    	This is a compound object widget which selects a field from an 
     object of class specObj. The field can come from either the "data"
     or "header" sections of the object. A user input value (scalar) are allowed
     in lieu of a field.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE Widgets
    
     OBJECT DEFINTION
     
  • CW_OW_WHERE__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED: FSC_FIELD
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created July, 2003. Tanya Riseman
  • (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::FRESHENWHERE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::freshenWhere, $
    	inHeader = thisInHeader, $
    	inData = thisInData
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::GETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::getProperty, $
    	from = thisFrom, $	; which is sensitized 'input', 'header' or 'data'
    	label = thisLabel, $	; Goes to the droplist
    	value = thisValue	; Goes to the text entry box
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_where::helpclass
    
     PURPOSE:
    	Helper method for cw_ow_where::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function cw_ow_where::init, $
    	thisSpecObj, $		; required
    	thisParentID, $		; optional
    	from = thisFrom, $	; optional. defaults to 'input'
    				; Acceptible values: 'input', 'header', 'data'
    	field = thisField, $	; Optional pre-selection. 
    	destroy = thisDestroy, $ ; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	noInput = thisNoInput, $   ; Don't have box to input a value
    	noData = thisNoData     ; Don't allow info from Data section
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	cw_ow_where::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE::SETPROPERTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where::setProperty, $
    	from = thisFrom, $	; Changes which is sensitized
    	label = thisLabel, $	; Goes to the droplist
    	value = thisValue	; Goes to the text entry box
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    CW_OW_WHERE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro cw_ow_where__define
      define = {cw_ow_where, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	parentID:0l, $
    	tlbID:0l, $
    	fromMenu:['', '', ''], $	;['input', 'header', 'data' ]
    	ifrom: 0, $
    	whereID:0L, $
    ;;;	whereSensitive: 0, $
    	inHeader:0, $
    	inData:0, $
    	headerMenuPtr: ptr_new(), $
    	nHeaderMenu: 0, $
    	dataMenuPtr: ptr_new(), $
    	nDataMenu: 0, $
    	tags:['', '', ''], $
    	ilabel: 0, $			;integer position. Doesn't work
    	label_header: '', $		; Improvement in future
    	label_data: '', $		; Improvement in future
    	label:'', $			; 1 string. Doesn't work
    	labelID:0L, $
    	labelSensitive: 0, $
    	noInput: 0, $
    	value:0.0, $
    	valueID:0L, $
    	valueObj: obj_new(), $
    	valueSensitive:0 $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)


    DAVEPTR_ADDTREATMENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro davePtr_addTreatment, thisDavePtr,$
       strArray
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_CLEANUP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro DavePtr_cleanup, $	; Old fashioned cleanup.
       thisDavePtr,$
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       derefSpecific = thisDerefSpecific, $	;Boolean keyword. Default is destroy obj.
       verbose = thisVerbose, $
       skipSpecObj = thisSkipSpecObj
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_CONTAINSSPECOBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function DavePtr_containsSpecObj, $ 	; returns 0/1 for false/true
     	DavePtr, $
    	errMsg = thisErrMsg
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_DESTROY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro DavePtr_destroy, $	; Destroys everything except the ptrID for thisDavePtr
    	thisDavePtr, $
       	destroySpecObj = thisDestroySpecObj	; Optional keyword.
    		
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_EMPTY,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro DavePtr_empty, $	; partially destroys things within the dave structure
       DavePtr, $
       derefSpecObj = thisDerefSpecObj	;Boolean keyword. Default is destroy obj.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_GETSPECOBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function DavePtr_getSpecObj, $ ; Returns an object of type specObj, if available
     	DavePtr, $
    	from=thisFrom	; Optional string indicating the calling routine.
     
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function davePtr_init, $
       DavePtr,$
       varName = thisVarName, $ ; Optional variable name. Defaults to 'DavePtr'
       file = thisFile, $	; Required. ICP triple axis data file to read in
       new = thisNew, $	; Optional Boolean keyword. Creates a new DavePtr.
       			; If not present, the current DavePtr contents are
    			; cleaned out.
      ;-------------------------
      tag_descri = thistag_descri, $ ; For (*davePtr).descriPtr
      tag_descrLegend = thistag_descrLegend; For (*davePtr).descriPtr
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_NULLSPECOBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro DavePtr_nullSpecObj, $ ; Sets an null object of type specObj in the davePtr.
     	DavePtr, $
    	from=thisFrom	; Optional string indicating the calling routine.
     
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_RESTORE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro DavePtr_restore, $
       ; Note: this means the callling routine can give the dave Pointer
       ; any name it wants. Assume that it is saved with the name davePtr.
     	origDavePtr, $		; Ptr ID for dave data structure.
     	filename, $		; string
    	ownerDavePtr = thisownerDavePtr ; Optional keyword. 'local' or 'main'. 
    				; Defaults to 'main'
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_SAVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro davePtr_save, DavePtr,$
       varName = thisVarName, $ ; Optional variable name. Defaults to 'DavePtr'
       file = thisFile	; Defaults to 'daveptr.dave'
    ; saves a DAVE pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro davePtr_show, thisDavePtr,$
       varName = thisVarName, $ ; Optional variable name. Defaults to 'DavePtr'
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       file = thisFile, $	; Optionally, write to a file. If absent, to screen
       partial=thisPartial, $
       full=thisFull
    ; Shows a DAVE pointer and what's beneath it.
    ; Shows the contents in the same order that it is cleanup in the 
    ; proceedure davePtr_cleanup. Might seem a bit backwards.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_SHOW_OLD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro davePtr_show_old, thisDavePtr,$
       varName = thisVarName, $ ; Optional variable name. Defaults to 'DavePtr'
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       file = thisFile, $	; Optionally, write to a file. If absent, to screen
       partial=thisPartial, $
       full=thisFull
    ; Shows a DAVE pointer and what's beneath it.
    ; Shows the contents in the same order that it is cleanup in the 
    ; proceedure davePtr_cleanup. Might seem a bit backwards.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVEPTR_UTILS.PRO

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	davePtr_utils.pro
    
     PURPOSE:
     	This is a collection of utilites that deal with the
     DAVE pointer data structure.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE utility routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created Jan 28-April 9, 2003. Tanya Riseman
    	Added routine davePtr_containsSpecObj. TMR Aug 5, 2003.
    	TMR. Aug 7, 2003. Removed routine davePtr_example.
    	TMR. Aug 7, 2003. Check for valid but empty pointer in davePtr_addTreatment
    	TMR. Aug 29, 2003. Updated filename handling in davePtr_restore.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    DAVESAVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           davesave
    
     PURPOSE:
    
    	This is the DAVE program button which does the functions
     OPEN/SAVE/REVIEW/CLOSE for DAVE data save files.
    
     AUTHOR:
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           DAVE application button.
    
     SEE ALSO:
     	
  • LAUNCH_DAVESAVE
  • DAVEPTR_UTILS MODIFICATION HISTORY: Tanya Riseman. Aug 6, 2003. TMR. Aug 29, 2003. Update so_filename field when saving to disk in davesave_save.
  • (See /home/tanya/idl/dave/programs/tas/specobj/davesave.pro)


    DAVE_TAGCONTAINER

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           dave_tagcontainer
    
     PURPOSE:
    
     A generalization of the IDL object class IDL_container,
     where items can be referred to by a "tag" string as an alternative
     to a positition integer.
     
     This object holds other objects, particularly the classes 
     DAVE_tagContainer and qtyObj.
     Destroying a DAVE_tagContainer destroys any objects that 
     have been added to the container via the Add method.
    
     I have found that it is preferable to make a container class
     DAVE_tagContainer with basically two trees in parallel,
     one for the basic "data" using the class qtyObj and 
     another for I/O and GUI issues using the class tagObj.
     This is specifically to avoid creating a new class which inherits
     qtyObj and tagObj. This has several purposes:
     	1. Avoid confusion by avoiding mixing the "pure" data and how the
    	   application manages it. 
    	2. Avoid as much as possible the use of EXTRA keywords parameters.
    	   Use the same methods and keywords as much as possible
    	   for different classes instead and use them explicitly.
    	   EXTRA and EXTRA_REF can not be mixed!
    	   EXTRA works fine for "input" keywords whose values are not modified.
    	3. Previously, I had problems with infinite loops in
     	   GUIs from calling get/set with inherited keywords 
    	   in complex inherited classes. This would occur when a 
    	   typo created too few valid keywords. Then some sub-classes methods
    	   would be called with no valid keywords. 
    
     METHODS:
    	For a list of methods, either
     	1. Use procedure "MK_HTML_HELPARG" to generate an HTML file
     	containing documention extracted from this file.
    	or 2. Run the method "HELP_OBJ" to list the contents of the
    	class and all methods (with keywords in UPPERCASE and parameters
    	in lowercase. 
    
     Key methods: INIT, ADD, COUNT, GET.
    	CALLMETHOD could be used for running GUI-selected methods.
    	CALLFUNCTION and CALLPROCEDURE can be used to "add" external 
    	methods without changing the basic definition of this class 
    	DAVE_tagContainer. For example, instrument-specific initialization
    	routines. Of course, all functions and procedures can only use
    	methods get/set to access the private data. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     OBJECT DEFINTION
    
  • DAVE_TAGCONTAINER__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED: IDL_CONTAINER
  • TAGOBJ__DEFINE_arguments OTHER ROUTINES USED: ... INCLUDE FILES: GENERIC__HELCLASS_FRAG.PRO GENERIC__HELP_OBJ_FRAG.PRO GENERIC__PRINT_FRAG.PRO MODIFICATION HISTORY: Tanya Riseman, Spring, 2003. TMR. Aug 6, 2003. changed file name to all lowercase to help BUILD's RESOLVE_ALL
  • (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::ADD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::Add
    
     PURPOSE:
    	Similar to  IDL_container::Add.
    	
    	Each object added must have a tag string array associated with it,
    	['','',''].
    
    	The optional keyword position has been extended to accept a
    	tag string ['','',''] or an index integer.
    
    	The optional keyword Esrrmsg returns an error message upon
    	error, while returning a NULL string '' upon success.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::ADD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::Add, $
    	; require BOTH tag thisTag and an object thisObject.
    	tags = thisTag, $	; Required keyword.
    				; string array tag ['','',''] for thisObject
    	contents=thisObject, $	 ; Required keyword. 
    				; Object to be added to container.
    	position = thisPosition, $ ; Optional location to place, 
    			; type integer (index) or string array (tag ['','','']).  
    			; Defaults to the end.
    	errMsg = thisErrMsg	; Optional keyword String. Returns error message.
    				; Null string '' if sucessful.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLFUNCTION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::callFunction
    
     PURPOSE:
     	Calls a function which MIGHT act on the self object, only via methods.
      Functions are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The function's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	If used as a "friend" method, the second argument should probably be
     object itself. E.g., 
     	result = myObject -> callFunction( 'SomeFunction', myObject, ...)
     Yes, that is a bit redundent, but means you can also call
     	result = myObject -> callFunction( 'SomeFunction', anotherObject, ...)
     and have the function do NOTHING at all with myObject's data!
     This might be useful for widget objects.
    
    	The methods DAVE_tagContainer::callFunction, 
     DAVE_tagContainer::callProcedure and DAVE_tagContainer::callMethod 
     could be used to impliment an user interface which allows the user to 
     select functions, procedures and methods to apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLFUNCTION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::callFunction, $; returns whatever functionName returns.
      functionName, $	; A string.  don't include *.pro extension
      thisArg1, $		; Any type. Might be an object for "friend" methods
      thisArg2, $		; Any type. 
      thisArg3, $		; Any type.
      _EXTRA = extraExtra	; call by value keywords.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLMETHOD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::callMethod
    
     PURPOSE:
     	Calls a method which acts on the "self" object. 
     If /isPro set, this function returns 1 (for true)
     If /isFunction is set, it returns the value that that function returns.
    
     	Methods are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The method's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	The methods DAVE_tagContainer::callFunction, 
     DAVE_tagContainer::callProcedure and
     DAVE_tagContainer::callMethod could be used to impliment an user interface 
     which allows the user to select functions, procedures and methods to
     apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLMETHOD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::callMethod, $	; if /isPro, returns 1.
    			; if /isFunction, returns whatever methodName returns.
      methodName, $			; A string. Name of method to use.  
      	; The method is assumed to be a function unless otherwise indicated
    	; with /isFunction. /isPro is provided for convenience.
      isFunction = thisIsFunction, $	; the default. 
      				; Indicates methodName has a return value.
      isPro = thisIsPro, $		; Indicates methodName has no return value.
      thisArg1, $			; Any type.
      thisArg2, $			; Any type.callMeth
      thisArg3, $			; Any type.
      _EXTRA = extraExtra		; call by value keywords. ONLY ONES CALL BY VALUE!
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLPROCEDURE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::callProcedure
    
     PURPOSE:
     	Calls a procedure which MIGHT act on the self object, only via methods.
      Procedures are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The procedures's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	If used as a "friend" method, the second argument should probably be
     object itself. E.g., 
     	myObject -> callProcedure, 'SomeProcedure', myObject, ...
     Yes, that is a bit redundent, but means you can also call
     	myObject -> callProcedure, 'SomeProcedure', anotherObject, ...
     and have the procedure do NOTHING at all with myObject's data!
     This might be useful for widget objects.
    
    	The methods DAVE_tagContainer::callFunction, 
     DAVE_tagContainer::callProcedure and
     DAVE_tagContainer::callMethod could be used to impliment an user interface 
     which allows the user to select functions, procedures and methods to
     apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CALLPROCEDURE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::callProcedure, $
      proName, $		; A string. don't include *.pro extension
      thisArg1, $		; Any type. Might be an object for "friend" methods.
      thisArg2, $		; Any type.
      thisArg3, $		; Any type.
      _EXTRA = extraExtra	; call by value keywords. ONLY ONES CALL BY VALUE!
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CLONE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::clone
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CONVERT2POSITION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::convert2Position
    
     PURPOSE:
     If the argument thisThing is a numeric type, assume that is already the 
     position and return it as came.
     Otherwise the argument thisThing is an array of type STRING and we assume
     that they are tags ['...','...','...'].
     Find the first matching tag in the container and
     return its position. Return negative number -1 if failure.
     If an array of tags, return an array of positions.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CONVERT2POSITION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::convert2Position, $; Returns an integer scalar or array.
    	thisThing	; tag string  or string array
    			; OR index integer or integer array	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CONVERT2TAG

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::convert2Tag
    
     PURPOSE:
     If the argument thisThing is a STRING type, assume that is already the 
     tag(s) and return it as came.
     Otherwise the argument thisThing is type INT or simular and we assume that
     it is the index or indices. Return it's corresponind tag(s).
     If an array of indices, return an array of tags.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::CONVERT2TAG,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::convert2Tag, $ ; Returns a tag string ['','',''] 
    					   ; or tag array
    	thisThing 	; integer or integer array or 
    			; tag string ['','',''] or tag array
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::COUNT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::count
    
     PURPOSE:
    	Returns the number of items stored in the container class. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::Count	; Returns integer.
    					; Returns # of objects in container.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GET

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::Get
    
     PURPOSE:
    	Similar to  IDL_container::Get.
    	
    	Each object added must have a tag string array associated with it,
    	['','',''].
    
    	The optional keyword position has been extended to accept a
    	tag string ['','',''] or an index integer.
    
    	The optional keyword Esrrmsg returns an error message upon
    	error, while returning a NULL string '' upon success.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::Get, $	; Returns object or 
    				; returns 1 (when keyword /everything used.)
    	; returns object or objects from self.contents.
    	all = thisAll, 	$ 	; Boolean keyword
    	ISA = thisISA, $ 	; String or string array keyword. 
    		; Only objects that inherit from class name(s) are returned.
    	;----- use keyword position for indices or by tag ----------
    	position = thisPosition, $ ; Keyword.
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
    	;---------------------------------------------------------
    	count = thisCount, $		; Keywords returns integer, 
    			; # of objects selected
    	everything = thisEverything, $	; Optional keyword which 
    			; returns info string in keyword instead of the object
    			; function returns 1 in this case.
    	verbose = thisVerbose	; Optional keyword. Reports on progress.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GETLABEL

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::getLabel
    
     PURPOSE:
    	Gets selected information about all the leaf nodes in the container.
     	Arrays returned via optional keywords class, label, codeSource,
    	sizeString and count.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GETLABEL,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::GetLabel, $	
    	; returns arrays of info for all objects in container.
      	argPresent = thisArgPresent, $	; Optional keyword, 
    		; anon structure of boolean. For internal use. 
    		; ARG_PRESENT() function does not work on 
       		; propagated keywords from other calling routines.
    		; Needed for get* methods.
    	;-------- use one or more of the following keywords ----
    	class = thisClass, $		; Optional keyword, returns string array
    					; of first string in tag ['','','']
    	label =thisLabel, $		; Optional keyword, returns string array
    					; for second string in tag ['','','']
    	codeSource = thisCodeSource, $	; Optional keyword, returns string array
    					; for third string in tag ['','','']
    	sizeString = thisSizeString, $	; Optional keyword, returns string array
    				; giving the size, based on rank and dimensions.
    	count = thisCount		; Optional keyword, returns integer array
    					; for # of objects in each leaf node.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GETTAG

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::GetTag
    
     PURPOSE:
    	See also DAVE_tagContainer::GetTag.
    
    	Returns the tag object (class tagObj) for object stored at postion 
    	given by the keyword thisPosition.
    	Or it returns an array of tag objects when the keyword /all
    	is used. Note: the tag object contains information in addition
    	to just the tags, which is useful for use interface.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::GETTAG,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::GetTag, $	; returns tag object(s) 
    			; used to label objects stored in this container.
    	all = thisAll, 	$ 	; Boolean keyword
    	;----- use keyword position for indices or by tag ----------
    	position = thisPosition, $ ; keyword
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
    	;---------------------------------------------------------
    	count = thisCount	; Keywords returns integer, # of objects selected
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::helpclass
    
     PURPOSE:
    	Helper method for DAVE_tagContainer::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::HELP_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::help_obj
    
     PURPOSE:
    	Prints to the screen or file unit number 
     1. The types of the data member of the object 
     2. All the methods associated with the object
     3. All the arguments and keywords associated with the object.
    
    	Uses @generic__help_obj_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::HELP_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::help_obj, $
      methodsOnly=methodsOnly,  $	; Ignore. Keyword only used by recursion call
      helpProStr=helpProStr, $	; Ignore. Keyword only used by recursion call
      helpFuncStr=helpFuncStr, $	; Ignore. Keyword only used by recursion call
      class=thisClass, $		; Ignore. Keyword only used by recursion call
      level=level, $		; Ignore. Keyword only used by recursion call
      lun=thisLun 			; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::INDEXINRANGE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::IndexInRange
    
     PURPOSE:
     	Method returns 1/0 (true/false) for if the scalar integer argument 
    	thisLocation is in the valid range of items stored in the container,
    	i.e. less than self -> count(). 
    	The argument thisLocation may also be an array of indices,
    	in which case the return value is true only if all elements
    	of thisLocation are valid indices.
    	In this case, the optional keyword inRange returns
    	a boolean array of the same length as thisLocation. 
    
    	 Use tagIsContained for searching by tag rather than location, 
    	if needed.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::INDEXINRANGE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::IndexInRange, $ ; Returns overall 0/1 for true/false
    	thisLocation, $ 	; integer. indicating position in container
    				; Might be scalar or array
      	verbose = thisVerbose, $;Optinal keyword.
    				;  Complains to screen if there is a problem.
    	inRange = thisInRange ; Optional keyword. 
    			; Returns array of 0/1 (true/false)  
    			; for individual elements of thisLocation.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::INIT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::init
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::ISCONTAINED

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::IsContained
    
     PURPOSE:
     	Method returns 1/0 (true/false) for if the argument thisObj 
    	is stored in self.contents, which is a container object. 
    	Optional keyword postion returns an integer containing the location 
    	in the container class of the object provided in the argument thisObj.
    	The value -1 is given when a match was not found.  
     	Specification is identical to the method IDL_Container::IsContained().
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::ISCONTAINED,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::IsContained, $	; Returns 0/1 for true/false
    	thisObj, $ 		; An object that might be in the container
    	position = thisPosition ; Optional keyword. Returns integer
    			; index position of object in the container.
    			; Returns -1 if object is not in the container.  
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::LINKTAGS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::linkTags
    
     PURPOSE:
    	If a tree hierarchy is created using DAVE_tagContainer objects
    	the add method sets self.myTags to the tag object used to label
    	that object in the layer above.
    
    	For internal use.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::LINKTAGS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::linkTags, $	
    	thisMyTagObj			;  object of class tagObj.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::MOVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::Move
    
     PURPOSE:
    	See IDL_container::Move.
    	The defintion has been extended so that tags of the form ['','','']
    	can be used instead of index positions for the two arguments
    	thisSource and thisDestination.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::MOVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::Move, $
    	thisSource, $	; either integer location or tag string array
    	thisDestination	; either integer location or tag string array
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::REMOVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::Remove
    
     PURPOSE:
    	See IDL_container::Remove.
    
    	Items in the container can be removed either by refering to their
    	position (keyword position) or passing the object itself as
    	an argument.
    
    	The defintion has been extended so that tags of the form ['','','']
    	can be used instead of index positions for the optional keyword 
    	position. 
    
    	Also, the optional boolean keyword destroy has been added.
    	if /destroy is used, then the object is destroyed when it is removed.
    	This is useful if the container contains the only reference to the
    	object. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::REMOVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::Remove, $
    	;--- Use either child_object parameter OR postion keyword OR all
    	child_Object, $		; optional
    	position = thisPosition, $; Optional. Tag string or index integer.
    	all  = thisALL, $	; Optional boolean keyword.
    			; Removed all objects from the container.
      	verbose = thisVerbose, $ ; Complains to screen if there is a problem.
    	destroy = thisDestroy	; Optional boolean keyword.
    			; Destroys objects as they are removed
    			; Default behavior is is to simply remove the reference.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::SETTAG

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::SetTag
    
     PURPOSE:
    	See also DAVE_tagContainer::GetTag.
    
    	Returns the tag object (class tagObj) for object stored at postion 
    	given by the keyword thisPosition.
    	Or it returns an array of tag objects when the keyword /all
    	is used. Note: the tag object contains information in addition
    	to just the tags, which is useful for use interface.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::SETTAG,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::setTag, $	; replaces tag object(s) 
    			; used to label objects stored in this container.
    	;----- use keyword position for indices or by tag ----------
    	position = thisPosition, $ ; keyword
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
    	;------------- Use tagObj or the Keywords for tagbobj::set
    	tagObj = thisTagObj, $	; New tag object
    	;------------- Keywords for tagbobj::set
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $		;; Boolean. /annotate is OK.
    	pendent = thisPendent		;; Will be C: constant, D: dependent, I: independent
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::SHOW

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::show
    
     PURPOSE:
    	Prints info to the screen or to a file unit number.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer::show, $
      	lun=thisLun, $ ; Optionally, write to a file. If absent, to screen
    	prefix = thisPrefix, $		; Optional keyword string.
    	level = thisLevel, $		; Optional keyword. Integer. 
    					; How deep in the show tree
    	recursive = thisRecursive, $	; Boolean keyword
    			; If keyword is set, then show nodes lower down in
    			; the tree hierarchicy (if applicable). 
     	heapNum = thisHeapNum		; Boolean keyword.
    			; Show the heap number via HELP for objects.
    			; Useful when looking for memory leaks. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::TAGISCONTAINED

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::TagIsContained
    
     PURPOSE:
     	Method returns 1/0 (true/false) for if all the tags in the 
    	argument thisTag have matches in the container class. 
     	Optional keyword ncontained returns the number of matching tags.
    	Optional keyword postion returns an array containing the location 
    	in the container class of the tag(s) provided in the argument thisTags.
    	 The value -1 is given when a match was not found.  
     	This method complements the method TagIsUnique.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::TAGISCONTAINED,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::TagIsContained, $	;Returns 0/1 for TRUE/FALSE
    	thisTag, $			 ; tag string ['','',''] or tag array
    	ncontained = thisNcontained, $	;Optional returned value. int
    		; The number of tags which match the contents of database.
    	position = thisPosition		;Optional returned val int or array
    				; Position in database of matching items.
    				; Items with no match provide a value of -1.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::TAGISUNIQUE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	DAVE_tagContainer::TagIsUnique
    
     PURPOSE:
     	Method returns 1/0 (true/false) for if all the tags in the argument 
    	thisTag are unique, i.e. not already present in the container class. 
     	Optional keyword nNew returns the number of new tags.
    	Optional keyword isNew returns an array of length numberOfTags(thisTag)
    	filled with the boolean values 0/1, indicating which ones are unique.
    	
     	This method complements the method TagIsContained.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER::TAGISUNIQUE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function DAVE_tagContainer::TagIsUnique, $ ; Boolean return value for TRUE/FALSE
    	thisTag, $		 ; tag string ['','',''] or tag array
    		 		; string or string array
    	nNew = thisNNew	, $	; Optional keyword. 
    				; Returns # of tags which are new.
            isNew = thisIsNew	; Optional keyword. Returns boolean array
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_TAGCONTAINER_EXAMPLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           DAVE_tagContainer_example
    
     PURPOSE:
    
    	To test the class DAVE_tagContainer.
    	IDL> DAVE_tagContainer_example, #		(1 - 6)
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/DAVE_tagContainer_example.pro)


    DAVE_TAGCONTAINER_EXAMPLE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer_example, $
    	whichexample		; Integer between 1-6. 0 means all
    

    (See /home/tanya/idl/dave/programs/tas/specobj/DAVE_tagContainer_example.pro)


    DAVE_TAGCONTAINER__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_tagContainer__define
    	; Both container classes will be the same length.
      define = {DAVE_tagContainer, $
    	tags: obj_new(), $	; class tagObj 
    	contents: obj_new(), $	; class IDL_Container (branching node) or 
    				; class qtyObj (leaf node).
    	myTags: obj_new() $	; class tagObj. Object reference of the tagObj
    			; up one level in the tree heirarchy.
    			; Void if the top of the tree.
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    DAVE_UNDEFINE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           dave_undefine
    
     PURPOSE:
    	To make up to 8 existing variables undefined.
    	This is useful for optional passed keyword parameters in procedures,
    	functions and methods, where the behavior depends on which keywords
    	are used (tested via n_elements(). This is an alternative
    	to the "delete" command, which only works at the main program level.
    
     AUTHOR:
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
           DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED:
    	None.
    
     EXAMPLE
           IDL> x = 3
    	IDL> y = 4
    	IDL> help, x, y
    	X               INT       =        3
    	Y               INT       =        4
    	IDL> DAVE_undefine, x, y, z
    	IDL> help, x
    	X               UNDEFINED = 
    	IDL> myProcedure, keywdY=y, keywrdX=x	; Note: keywrdX is not used
    						; because x is undefined.
    
     MODIFICATION HISTORY:
       Created July 16, 2003. Tanya Riseman
       TMR. Aug 6, 2003. changed file name to all lowercase to help BUILD's RESOLVE_ALL
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_undefine.pro)


    DAVE_UNDEFINE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro DAVE_undefine, $	; undefines scalar and vector variables. 
    			; Not intended for pointers and objects.
    	arg1, $		; If this is a defined variable, make it undefined.
    	arg2, arg3, arg4, arg5, arg6, arg7, arg8 ; Ditto. optional arguments
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_undefine.pro)


    DIALOG_OW_MENU

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_menu
    
     PURPOSE:
    	Main menu for displaying and modifying a specObj.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created June, 2003. Tanya Riseman
    	Add self.statePtr and self.cleanup. July 23, TR
    	Added Dave Ptr open, save, review and empty buttons. Aug 20, 2003. TMR
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::FRESHEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_menu::freshen
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_menu can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_menu::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_menu 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::FRESHEN,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_menu::freshen, $
    	text=thisText
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_menu::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_menu::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_menu::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_menu::init
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_menu can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_menu::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_menu. 
    
    	The programmer must obj_destroy the object upon return from init.
     The dialog widget is always blocking because the widgets it calls
     must also be blocking, since they are constructed on-the-fly from
     the contents of thisSpecObj, which is modified by the widgets.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_menu::init, $	; returns 0/1 for failure/success
    	thisSpecObj, $		; required
    	groupLeader = thisGroupLeader, $
    	no_block = thisNo_block, $	; Bad idea?.
    	destroy = thisDestroy, $; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    	statePtr = thisStatePtr, $; An optional state pointer can be passed
    				  ; to calling routine.
    	cleanup = thisCleanup	  ; cleanup for the statePtr and calling 
    				  ; routine reduceSpecObj.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_menu::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_menu::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_menu_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_MENU__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_menu__define
      define = {dialog_ow_menu, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	nOnOff: 0, $	; Number of widget IDS listed below in array.
    	onOffIDs: [0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L], $
    	readnameId: 0L, $
    ;	textID: 0L, $
    	statePtr: ptr_new(), $
    	cleanup: '' $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)


    DIALOG_OW_SELECTFILETYPE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_selectFileType
    
     PURPOSE:
    	Menu for selecting the triple axis instrument, data reader and
    	the operator (single, concatentate, sum or zip, etc.).
    	This, combined with a dialog_pickfile, is in prepration for  
    	creating a specObj attatched to the DavePtr.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created June, 2003. Tanya Riseman
    	Add self.statePtr and self.cleanup. July 23, TR
    	TMR> Aug 29, 2003. Fixed instrument filter default value.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_selectFileType::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_selectFileType::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_selectFileType::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_selectFileType::init
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_selectFileType can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_selectFileType::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_selectFileType. 
    
    	The programmer must obj_destroy the object upon return from init.
     The dialog widget is always blocking because the widgets it calls
     must also be blocking, since they are constructed on-the-fly from
     the contents of thisSpecObj, which is modified by the widgets.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_selectFileType::init, $
    	groupLeader = thisGroupLeader, $
    	instrOptions = thisInstrOptions, $		; Optional.
    	dataReaderOptions = thisDataReadOptions, $	; Optional.
    	actionOptions = thisActionOptions, $		; Optional.
    	statePtr = thisStatePtr, $; An optional state pointer can be passed
    				  ; to calling routine.
    	cleanup = thisCleanup	  ; cleanup for the statePtr and calling 
    				  ; routine reduceSpecObj.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_selectFileType::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_selectFileType::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_selectFileType_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_SELECTFILETYPE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_selectFileType__define
      define = {dialog_ow_selectFileType, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	instrID: 0L, $
    	instrOptions: ptr_new(), $;['bt2', 'bt7', 'bt9']
    	dataReaderID: 0L, $
    	dataReaderOptions: ptr_new(), $;['func_icp_data_init']
    	actionID: 0L, $
    	actionOptions: ptr_new(), $;['SINGLE', 'CONCATENATE', 
    		; 'COMPACTCONCATENATE','ZIP', 'SUM']; method for specObj
    	statePtr: ptr_new(), $
    	helpFocusObj: obj_new(), $
    	cleanup: '' $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)


    DIALOG_OW_TABICP

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabicp
    
     PURPOSE:
    	Menu for modifying a specObj in ways that are instrument
     	specific, in particular ICP-based triple axis.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created June, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::FRESHEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabICP::freshen
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_tabICP can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_tabICP::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_tabICP. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::FRESHEN,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabICP::freshen, $
    	where = thisWhere, $		; Update all calls to cw_ow_where
    	inHeader = thisInHeader, $	; Used by where
    	inData = thisInData, $		; used by where
    	status = thisStatus		; Update the status line when "process"
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabICP::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_tabICP::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabICP::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabICP::init
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_tabICP can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_tabICP::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_tabICP. 
    
     	If the keyword no_block is set, the widget is non-blocking and
     automatically the object of class dialog_ow_tabICP is destroyed upon 
     closing the dialog box. If not set, the programmer must obj_destroy 
     the object upon return from init. Don't use /no_block
     simulataneously with dialog boxes which depend on the
     contents of the specific object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_tabICP::init, $
    	thisSpecObj, $		; required
    	groupLeader = thisGroupLeader, $
    	destroy = thisDestroy	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabICP::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabICP::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabICP_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABICP__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabICP__define
      define = {dialog_ow_tabICP, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	scaleByMonitorWObj: obj_new(), $
    	constBkgdWObj: obj_new(), $
    	fastBkgdWObj: obj_new(), $
    	resVolWObj: obj_new(), $
    	statusID: 0L, $
    	macroID: 0L $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)


    DIALOG_OW_TABMODIFY

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabmodify
    
     PURPOSE:
    	Menu for modifying a specObj in ways that are not instrument
     	specific.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created June, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::FRESHEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabmodify::freshen
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_tabmodify can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_tabmodify::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_tabmodify. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::FRESHEN,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabmodify::freshen, $
    	where = thisWhere, $		; Update all calls to cw_ow_where
    	inHeader = thisInHeader, $	; Used by where
    	inData = thisInData, $		; used by where
    	status = thisStatus		; Update the status line when "process"
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabmodify::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_tabmodify::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabmodify::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabmodify::init
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_tabmodify can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_tabmodify::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_tabmodify. 
    
     	If the keyword no_block is set, the widget is non-blocking and
     automatically the object of class dialog_ow_tabmodify is destroyed upon 
     closing the dialog box. If not set, the programmer must obj_destroy 
     the object upon return from init. Don't use /no_block
     simulataneously with dialog boxes which depend on the
     contents of the specific object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_tabmodify::init, $
    	thisSpecObj, $		; required
    	groupLeader = thisGroupLeader, $
    	destroy = thisDestroy	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_tabmodify::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabmodify::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabmodify_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TABMODIFY__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_tabmodify__define
      define = {dialog_ow_tabmodify, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	binaryOpWObj: obj_new(), $
    	unitaryOpWObj: obj_new(), $
    	cloneWObj: obj_new(), $
    	setStringWObj: obj_new(), $
    	setValueWObj: obj_new(), $
    	removeWObj: obj_new(), $
    	statusID: 0L, $
    	macroID: 0L $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)


    DIALOG_OW_TEXTINFO::FRESHEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_textInfo::freshen
    
     PURPOSE:
    	Updates the contents of the compound widgets used by dialog_ow_textInfo.
    	In principle, could be called by another widget or dialog. 
    	Currently, dialog_ow_textInfo is used as blocking dialog box.
    	Eventually, we could have a single box open with text in it,
    	with different routines updating it.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::FRESHEN,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_textInfo::freshen, $
    	text=thisText, $
    	text_ptr=thisText_ptr, $
    	status = thisStatus
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_textInfo::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_textInfo::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_textInfo::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_textInfo::init
    
     PURPOSE:
      Allows the user to scroll through a write-protected text array and
      optionally write it to disk.
    
     The freshen method updates the contents of the compound widgets used by dialog_ow_textInfo.
    	In principle, could be called by another widget or dialog. 
    	Currently, dialog_ow_textInfo is used as blocking dialog box.
    	Eventually, we could have a single box open with text in it,
    	with different routines updating it.
    
     	If the keyword no_block is set, the widget is non-blocking and
     automatically the object of class dialog_ow_textInfo is destroyed upon 
     closing the dialog box. If not set, the programmer must obj_destroy 
     the object upon return from init. Don't use /no_block
     simulataneously with dialog boxes which depend on the
     contents of the specific object.
    
     When this is a blocking widget:
     "Realize" this object dialog by call the method createWidgets()
     right after you  intialize the object. Save the object reference
     and destroy it once you are finished with it, if it is still valid,
     in case the cleanup routine dialog_ow_textInfo_cleanup was not called
     automatically by the window manager.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_textInfo::init, $
    	text_ptr= thisText_ptr, $
    	filter = thisFilter, $
    	path= thisPath, $
    	filename=thisFilename, $
    	groupLeader = thisGroupLeader
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_textInfo::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_textInfo::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_textInfo_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_TEXTINFO__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_textInfo__define
      define = {dialog_ow_textInfo, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	textID: 0L, $
    	text_ptr: ptr_new(), $
    	filter:'', $
    	path:'', $
    	filename: '', $
    	statusID:0l $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)


    DIALOG_OW_WHERE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_where
    
     PURPOSE:
    	Very simple dialog box that only calls cw_ow_where()
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created Sept, 2003. Tanya Riseman
    	TMR. Sept 15, 2003. Removed call to createWidgets method.
    	Must be done on exterior. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::EVENTPROCESS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where::eventProcess, event=event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::FRESHEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_where::freshen
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_where can create 
     new fields, or remove fields in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_where::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_where. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::FRESHEN,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where::freshen, $
    	where = thisWhere, $		; Update all calls to cw_ow_where
    	inHeader = thisInHeader, $	; Used by where
    	inData = thisInData		; used by where
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_where::get, $	; return value of class field as selected by keyword
      selectedLabel = thisSelectedLabel, $
    ;  selectedField = thisSelectedField, $
      from = thisFrom, $
      groupLeader = boolGroupLeader, $
      no_block = boolNo_block
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_where::helpclass
    
     PURPOSE:
    	Helper method for dialog_ow_where::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_where::init
    
     PURPOSE:
    	The compound widgets cw_ow_*.pro used by dialog_ow_where can 
     select a field in the specific object self.specObj. 
     In order to update the droplists for all compound widgets, the 
     cw_ow* widgets call this method dialog_ow_where::freshen, which then 
     calls the methods cw_ow*::freshenWhere in all the compound widgets used 
     in dialog_ow_where. 
    
     	If the keyword no_block is set, the widget is non-blocking and
     automatically the object of class dialog_ow_where is destroyed upon 
     closing the dialog box. If not set, the programmer must obj_destroy 
     the object upon return from init. Don't use /no_block
     simulataneously with dialog boxes which depend on the
     contents of the specific object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_ow_where::init, $
    	thisSpecObj, $		; required
    	groupLeader = thisGroupLeader, $
    	label = thisLabel, $	; Default selection
    ;	field = thisField, $	; Default selection
    	from = thisFrom, $	; Header or data section for thisField
    	xyzfocus = thisxyzFocus, $	; Either 'x', 'y', or 'z'
    				; Stash the selected field tags in either
    				; the x, y, or z focus. Defaults to z focus.
    	title = thisLabelString, $ ; Optional string placed on GUI
    	destroy = thisDestroy	; destroy thisSpecObj when this GUI object is
    				; destroyed. The default is not to.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_ow_where::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $          ; string.
      lun=thisLun, $        ; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs      ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE_EVENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where_event, $
    	event
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_OW_WHERE__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro dialog_ow_where__define
      define = {dialog_ow_where, $
      	specObj:obj_new(), $	; don't destroy
    	destroy: 0, $
    	groupLeaderID : 0L, $
    	no_block: 0, $
    	tlbID:0l, $
    	whereWObj: obj_new(), $
    	selectedLabel: '',  $
    	from :'', $
    	labelString :'', $
    	xyzFocus: '' $
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)


    DIALOG_VIEWDATA

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_viewdata
    
     PURPOSE:
    	Menu for viewing the "data" section of a specObj.
    	Also allows the "focus" to be modified.
    	Is a traditional GUI, not a object widget.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created April, 2003. Tanya Riseman
    	TMR. Aug 29, 2003. Added keyword to "OK=specObj->updateDavePtr(sort=sort)"
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_viewdata.pro)


    DIALOG_VIEWDATA,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_viewData, $
    	group_leader=group_leader, $
    	name = thisName, $		; name, such as run number
    	davePtr = thisdavePtr, $
    	specObj = thisSpecObj, $
    	skipPlot = thisSkipPlot, $
    	drawIndex = thisDrawIndex, $		; window to direct plots to.
    	indexNum = thisIndexNum		; For multiple plot, use plot with 0
    					; use oplot with thisIndexNum > 0
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_viewdata.pro)


    DIALOG_VIEWHEADER

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	dialog_viewheader
    
     PURPOSE:
    	Menu for viewing the "header" section of a specObj.
    	Also allows the "focus" to be modified.
    	Is a traditional GUI, not a object widget.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE GUI main dialog routines
    
     OTHER OBJECT CLASSES AND ROUTINES USED:
    	...
    
     MODIFICATION HISTORY:
    	Created April, 2003. Tanya Riseman
     NOTE: TMR. Sept 5, 2003. The legend button selection for DESCRIP=
     does not work properly in IDL v6.0 possibly due to an array of length 1 
     (v 6.0) is being returned instead of a scalar (v 5.6). The DESCRIP
     field in the DAVE common structure is only used by Richard Azuah's
     DAVE Browser and not by Tanya Riseman's SpecObj. If the DESCRIP 
     field is abandonned, this DESCRIP selection feature could be removed.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_viewheader.pro)


    DIALOG_VIEWHEADER,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function dialog_viewheader, $
    	group_leader=group_leader, $
    	davePtr = thisdavePtr, $	; Use either davePtr or specObj
    	specObj = thisSpecObj
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dialog_viewheader.pro)


    EQARRAYS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          eqarrays
    
     PURPOSE:
    
     	Compares two arrays (vectors or matrices) of hopefully the same
     number of elements and returns true if every element of the two arrays 
     is the identical.
    
    	 The two arrays need not be structured the same. For example:	
    IDL> aa = [[1,2], [3, 4], [5, 6]]
    IDL> bb = [1, 2, 3, 4, 5, 6]
    IDL> print, eqarrays(aa, bb)
       1
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED:
    
     EXAMPLE
    	IDL> dave_tagcontainer_example, 5
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    	TMR. Sept 8, 2003. Allow pointers to arrays. Added tolerance parameter.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/eqarrays.pro)


    EQARRAYS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function eqArrays, $	; Returns 1 (true) if every element of the two arrays
    			; is the same. Returns 0 otherwise.
    	arrayA, $	; first array, any type. Or pointer to an array.
    	arrayB, $ 	; second array, any type. Or pointer to an array.
    	tol, $		; Optional tolerance factor. Only for numeric types.
    	verbose = thisVerbose	; 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/eqarrays.pro)


    FOCUSOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           focusObj
    
     PURPOSE:
    
    	There is a "basic" container class DAVE_tagContainer, based upon
     the class IDL_container. There is a DAVE-specific class called
     specObj, which has as its definition
      define = {specObj, $
      	target: obj_new(), $	; class specObj
      	store: obj_new(), $	; class DAVE_tagContainer
    	focus: obj_new(), $	; class focusObj 
    	davePtr: ptr_new(), $ ; DAVE pointer, including this object in specificPtr.
    	wID: 0L $ 		; Widget ID associated with this object.
    	}
     specObj has a nearly unorganized container called self.store
     which is an object of class DAVE_tagContainer.
     specObj also has a focus object of class focusObj, which indicates 
        1. which node of .store is currently the "header" section,
        2. which node of .store is currently the "data" section,
        3. which leafs in the "data" section are currently the x, y, and z arrays.
        4. which leaf in the "header" section is currently the desciptor.
        5. Some additional things (see definition of focusObj).
    
      The idea is that the specObj stores ALL the information one might 
     need as data, log files, for calculations, etc., for a generic data set,
     while the focus object specifies the most relevent information needed
     to produce a single plot.
     
     Note: There is NO cleanup routine for this class, even though it has object
     references. Cleanup should be done by the container class DAVE_tagContainer.
    
     Requires that the contained objects include the following methods:
    	get, getDimension, getOneValue, show
    
     Key methods: SET, GET. PLOT
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE aaplication programming.
    
     OBJECT DEFINTION
     
  • FOCUSOBJ__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED: .... INCLUDE FILES: GENERIC__HELCLASS_FRAG.PRO GENERIC__HELP_OBJ_FRAG.PRO GENERIC__PRINT_FRAG.PRO EXAMPLE SEE ALSO:
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Created February, 2003. Tanya Riseman TMR> Aug 6, 2003. changed file name to all lowercase to help BUILD's RESOLVE_ALL
  • (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::CLONE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	focusObj::clone
    
     PURPOSE:
    	Copy the object into another object.
    	Note: the object references thisContainer, thisHeaderObj and
    	dataObj must be provided for the new cloned specObj.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::CLONE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::clone, $
       target = thisTarget, $	; class specObj
       container = thisContainer, $	; class DAVE_tagsContainer
       headerObj = thisHeaderObj, $ ; class DAVE_tagsContainer
       dataObj = thisDataObj	; class DAVE_tagsContainer
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::count	; Returns integer value of 1 always.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function  focusObj::get, $	; returns 1 if any keywords used. 
    				; Returns 0 if no known keywords used.
       argPresent = thisArgPresent, $; ARG_PRESENT() function does not work on 
       		;propagated keywords from other calling routines.
    		; Needed for get* methods.
       container = thisContainer, $
       headerObj = thisHeaderObj, $
       dataObj = thisDataObj, $
       mainTitleTags = thisMainTitleTags, $	; optional.
       descripTags = thisDescripTags, $	; optional.
       DescripLegend = thisDescripLegend, $	; optional.
       cutTags = thisCutTags, $		; optional.
       xTags = thisXTags, $			; optional
       yTags = thisYTags, $			; optional
       zTags = thisZTags, $			; optional 
       xType = thisXType, $
       yType = thisYType, $
       everything = thisEverything
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::GETMINMAX,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::getMinMax, $	; Returns an integer array  [min, max] 
    	; for the range available in the focus or in specified field
    	; ------  Use 1 of the three following keywords ------------------
    	x = thisX, $		; Boolean Keyword.
    	y = thisY, $		; Boolean Keyword.
    	z = thisZ			; Boolean Keyword.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	focusObj::helpclass
    
     PURPOSE:
    	Helper method for tagObj::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::HELP_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	focusObj::help_obj
    
     PURPOSE:
    	Prints to the screen or file unit number 
     1. The types of the data member of the object 
     2. All the methods associated with the object
     3. All the arguments and keywords associated with the object.
    
    	Uses @generic__help_obj_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::HELP_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::help_obj, $
      methodsOnly=methodsOnly,  $	; Ignore. Keyword only used by recursion call
      helpProStr=helpProStr, $	; Ignore. Keyword only used by recursion call
      helpFuncStr=helpFuncStr, $	; Ignore. Keyword only used by recursion call
      class=thisClass, $		; Ignore. Keyword only used by recursion call
      level=level, $		; Ignore. Keyword only used by recursion call
      lun=thisLun 			; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::init, $
       target = thisTarget, $		; class specObj
       container = thisContainer, $		; class DAVE_tagContainer
       headerObj = thisHeaderObj, $		; class DAVE_tagContainer
       dataObj = thisDataObj, $		; class DAVE_tagContainer
       mainTitleTags = thisMainTitleTags, $	; optional.
       descripTags = thisDescripTags, $	; optional.
       DescripLegend = thisDescripLegend, $	; optional.
       cutTags = thisCutTags, $		; optional.
       xTags = thisXTags, $			; optional
       yTags = thisYTags, $			; optional
       zTags = thisZTags		; optional   
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::MAKECUTSTRING_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::makeCutString	; returns a string
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::MAKEDESCRIPSTRING_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::makeDescripString	; Returns a string
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::MAKEMAINTITLESTRING_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function focusObj::makeMainTitleString	; Returns a string
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PLOT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::plot, $
        over = over, $		; Draws over previous plot if set
        indexNum = thisIndexNum, $	; 0 for plot. 1 for oplot. 
        				; Can color code and vary the symbols using indexNum
        _EXTRA = extraExtra 	; extra keywords passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PLOTSXYZ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::plotsxyz, $
        thisOver, $		; Boolean. Draws over previous plot if set=1
        thisIndexNum, $	; Integer. 0 for plot. 1 for oplot. 
        			; Can color code and vary the symbols using indexNum
        _EXTRA = extraExtra ; extra keywords passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PLOTXYZ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::plotxyz, $
        xAbsent, $ 		; Boolean
        Yabsent, $		; Boolean
        thisOver, $		; Boolean. Draws over previous plot if set=1
        thisIndexNum, $	; Integer.  0 for plot. 1 for oplot. 
        			; Can color code and vary the symbols using indexNum
        _EXTRA = extraExtra ; extra keywords passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PLOTXZ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::plotxz, $
        xAbsent, $		; Boolean.
        thisOver, $		; Boolean. Draws over previous plot if set=1
        thisIndexNum, $	; Integer. 0 for plot. 1 for oplot. 
        			; Can color code and vary the symbols using indexNum
        _EXTRA = extraExtra ; extra keywords passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	focusObj::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $		; string.
      lun=thisLun, $	; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs	 ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::SCATTERXYZ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::scatterxyz, $
        thisOver, $		; Boolean. Draws over previous plot if set=1
        thisIndexNum, $	; Integer. 0 for plot. 1 for oplot. 
        			; Can color code and vary the symbols using indexNum
        _EXTRA = extraExtra ; extra keywords passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::SET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro  focusObj::set, $
       target = thisTarget, $		; instance of class specObj
       container = thisContainer, $		; instance of class dave_tagContainer
       headerObj = thisHeaderObj, $		; instance of class dave_tagContainer
       dataObj = thisDataObj, $		; instance of class dave_tagContainer
       mainTitleTags = thisMainTitleTags, $	; optional.
       descripTags = thisDescripTags, $	; optional.
       DescripLegend = thisDescripLegend, $	; optional.
       cutTags = thisCutTags, $		; optional.
       xTags = thisXTags, $			; optional
       yTags = thisYTags, $			; optional
       zTags = thisZTags			; optional   
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ::SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj::show, $		
    				; By default, show everything.
      lun=thisLun, $		; Optionally, write to a file. If absent, to screen
      strArray = thisStrArray, $	; Optionally, write to an array instead of file 
      heapNum = thisHeapNum, $	; Show the heap number via HELP
      recursive = thisRecursive	; Ignore this keyword.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FOCUSOBJ__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro focusObj__define
    
      infolabel = "focusObj__define >> "  
      define = {focusObj, $
      	target: obj_new(), $	; That specObj object that 
    				; the focus is upon.
      	container: obj_new(), $	; That DAVE_tagContainer object that 
    				; the focus is upon.
    	;------------------------------------
    	headerObj: obj_new(), $	; Current "header" section where to place 
    				; short things.
    	mainTitleTags: ['', '', ''], $	; class qtyObj. Short cut reference.
    	descripTags: ['', '', ''], $	; class qtyObj. Short cut reference.
    	DescripLegend: '', $	; Use if descrip is a vector to narrow down.
    	cutTags: ['', '', ''], $	; class qtyObj. Short cut reference.
            ;------------------------------------
    	dataObj: obj_new(), $	; Current "data" section where to place 
    				; long things.
    	xTags: ['', '', ''], $	; class qtyObj. Short cut reference.
    	yTags: ['', '', ''], $	; class qtyObj. Short cut reference.
    	zTags: ['', '', ''],  $	; class qtyObj. Short cut reference.
    	; Size of z is (nx, ny).
    	xType: '', $; "points" (size of x is nx) or "histo" (size of x is nx+1)
    	yType: '' $; "points" (size of y is ny) or "histo" (size of y is ny+1)
    }
    

    (See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)


    FORMAT_LIST

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          format_list
    
     PURPOSE:
    	Returns a string of format "#", "[#,#]" , "[#,#,#]" , "[#,#,#,#]". 
     corresponding to the number of dimensions and the size of those
     dimensions for an array.
    
    	The keyword array is used with arrays (passed by value).
     Use this only for small arrays, to avoid efficiency problems.
    
    	The keyword ptr_array is used with pointers to arrays 
     (passed by reference). Use this for large arrays.
    
    	The keyword dim_array is used when one already knows the size of 
     array, from the IDL command size(). In this case, zeros on the end of the
     array are stripped off. 
    
    	Examples:
          retString = 'OBJ' + format_list(array=thingy)
          retString = '{PTR}'  +  format_list(ptr_array=thingy)
          retString =   format_list(dim_array=[2,3,0,0])
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED: none
    
     EXAMPLE
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/format_list.pro)


    FORMAT_LIST,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function format_list, $		; returns string of form  * or [*,*,...]
      ; Use either  ptr_Array (pass by reference) or array (pass by value)
      anArray		; An input 1D array or scalar; String or numeric type
    

    (See /home/tanya/idl/dave/programs/tas/specobj/format_list.pro)


    FORMAT_SIZE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          format_size
    
     PURPOSE:
    	Returns a string of format "[#]", "[#,#]" , "[#,#,#]" , "[#,#,#,#]". 
     corresponding to the number of dimensions and the size of those
     dimensions for an array.
    
    	The keyword array is used with arrays (passed by value).
     Use this only for small arrays, to avoid efficiency problems.
    
    	The keyword ptr_array is used with pointers to arrays 
     (passed by reference). Use this for large arrays.
    
    	The keyword dim_array is used when one already knows the size of 
     array, from the IDL command size(). In this case, zeros on the end of the
     array are stripped off. 
    
    	Examples:
          retString = 'OBJ' + format_size(array=thingy)
          retString = '{PTR}'  +  format_size(ptr_array=thingy)
          retString =   format_size(dim_array=[2,3,0,0])
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED: none
    
     EXAMPLE
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/format_size.pro)


    FORMAT_SIZE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function format_size, $		; returns string of form [#] for 1D, [#,#] for 2D, etc.
      dim_array, $			; # or [#,#] or [#,#,#], etc.
      ptr_Array = ptr_Array,  $	; Pointer to an array for which we format the array size.
      Array = anArray		; An array for which we format the array size.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/format_size.pro)


    FSC_FIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
       FSC_FIELD
    
     PURPOSE:
    
       The purpose of this compound widget is to provide an alternative
       to the CW_FIELD widget offered in the IDL distribution. One weakness
       of the CW_FIELD compound widget is that the text widgets do not
       look editable to the users on Windows platforms. This program
       corrects that deficiency and adds some features that I think
       will be helpful. For example, you can now assign an event handler
       to the compound widget, ask for positive numbers only, and limit
       the number of digits in a number, or the number of digits to the
       right of a decimal point. The program is written as a widget object,
       which allows the user to call object methods directly, affording
       even more flexibility in use. This program replaces the earlier
       programs FSC_INPUTFIELD and COYOTE_FIELD.
    
       The program consists of a label widget next to a one-line text widget.
       The "value" of the compound widget is shown in the text widget. If the
       value is a number, it will not be possible (generally) to type
       alphanumeric values in the text widget. String values behave like
       strings in any one-line text widget.
    
     AUTHOR:
    
       FANNING SOFTWARE CONSULTING
       David Fanning, Ph.D.
       1645 Sheely Drive
       Fort Collins, CO 80526 USA
       Phone: 970-221-0438
       E-mail: davidf@dfanning.com
       Coyote's Guide to IDL Programming: http://www.dfanning.com/
    
       Minor Modification by Tanya Riseman, Ph.D.-- 
    		addition of kill_notify, and kbrd_focus_events and no_events
       NIST Center for Neutron Research
       100 Bureau Drive, Stop 8562
       Gaithersburg MD 20899-8562
    
     CATEGORY:
    
       General programming.
    
     TYPICAL CALLING SEQUENCE:
    
       fieldID = FSC_FIELD(parent, Title="X Size:", Value=256, Object=fieldObject, Digits=3)
    
     INPUT PARAMETERS:
    
       parent -- The parent widget ID of the compound widget. Required.
    
     INPUT KEYWORDS:
    
       COLUMN        Set this keyword to have the Label widget above the Text widget.
                     The default is to have the Label widget in a row with the Text widget.
    
       CR_ONLY       Set this keyword if you only want Carriage Return events returned to
                     your event handler. If this keyword is not set, all events are returned.
                     Setting this keyword has no effect unless either the EVENT_PRO or
                     EVENT_FUNC keyword is used.
    
       DECIMAL       Set this keyword to the number of digits to the right of the decimal
                     point in floating point or double precision numbers. Ignored for STRING values.
    
       DIGITS        Set this keyword to the number of digits permitted in integer numbers.
    
       EVENT_FUNC    Set this keyword to the name of an event handler function. If this
                     keyword is undefined and the Event_Pro keyword is undefined,
                     all compound widget events are handled internally and not
                     passed on to the parent widget.
    
       EVENT_PRO     Set this keyword to the name of an event handler procedure. If this
                     keyword is undefined and the Event_Func keyword is undefined,
                     all compound widget events are handled internally and not
                     passed on to the parent widget.
    
       FIELDFONT     The font name for the text in the text widget.
    
       FRAME         Set this keyword to put a frame around the compound widget.
    
       LABEL_LEFT    Set this keyword to align the text on the label to the left.
    
       LABEL_RIGHT   Set this keyword to align the text on the label to the right.
    
       LABELFONT     The font name for the text in the label widget.
    
       LABELSIZE     The X screen size of the label widget.
    
       NAME          A string containing the name of the object. The default is ''.
    
       NOEDIT        Set this keyword to allow no user editing of the input text widget.
    
       NONSENSITIVE  Set this keyword to make the input text widget non-sensitive.
    
       POSITIVE      Set this keyword if you want only positive numbers allowed.
    
       SCR_XSIZE     The X screen size of the compound widget.
    
       SCR_YSIZE     The Y screen size of the compound widget.
    
       TITLE         The string text placed on the label widget.
    
       UNDEFINED     Set this keyword to the value to use for "undefined" values. If
                     not set, then !Value.F_NAN is used for numerical fields and a
                     NULL string is used for string fields. This applies to values
                     obtained with the GET_VALUE method or the GET_VALUE function.
    
       UVALUE        A user value for any purpose.
    
       VALUE         The "value" of the compound widget. Any type of integer, floating, or string
                     variable is allowed. The data "type" is determined automatically from the
                     value supplied with this keyword. Be sure you set the type appropriately for
                     your intended use of the value.
    
       XSIZE         The X size of the text widget in the usual character units.
    
       KILL_NOTIFY   Name of user-provided KILL_NOTIFY procedure to be called
    		  to cleanup the user provided UVALUE.
    
       KBRD_FOCUS_EVENTS Standard widget keyword (value 0,1), passed to widget_text.
    		  When event.enter = 0 (losing the keyboard focus) or 
    		  there is a carriage return, trigger an event.
    		  This means that carriage return or TABbing or mouse clicks 
    		  to new fields triggers an event on the field that 
    		  previously had the focus. Individual key strokes do not
    		  trigger an event. Using this for all fields on a menu
    		  menas that an APPLY button is not necessary.
                     Setting this keyword has no effect unless either the EVENT_PRO or
                     EVENT_FUNC keyword is used.
    
       NO_EVENTS     No events are returned. Idea: use APPLY button and CANCEL 
    		  buttons instead.
    
      ***NOTE***:    Use only one of the three keywords CR_ONLY, KBRD_FOCUS_EVENTS
    		  NO_EVENTS
    
     OUTPUT KEYWORDS:
    
       OBJECT        Set this keyword to a named variable to receive the compound widget's
                     object reference. This is required if you wish to call methods on the object.
                     Note that the object reference is also available in the event structure
                     generated by the widget object. Note that the object reference will be
                     necessary if you want to get or set values in the compound widget.
    
     COMMON BLOCKS:
    
       None.
    
     RESTRICTIONS:
    
       None.
    
     EVENT STRUCTURE:
    
       All events are handled internally unless either the Event_Pro or Event_Func
       keywords are used to assign an event handler to the compound widget. By
       default all events generated by the text widget are passed to the assigned
       event handler. If you wish to receive only Carriage Return events, set the
       CR_Only keyword.
    
       event = { FSC_FIELD_EVENT, $   ; The name of the event structure.
                 ID: 0L, $            ; The ID of the compound widget's top-level base.
                 TOP: 0L, $           ; The widget ID of the top-level base of the hierarchy.
                 HANDLER: 0L, $       ; The event handler ID. Filled out by IDL.
                 OBJECT: Obj_New(), $ ; The "self" object reference. Provided so you can call methods.
                 VALUE: Ptr_New(), $  ; A pointer to the widget value.
                 TYPE:""              ; A string indicating the type of data in the VALUE field.
               }
    
       Note that if the field is "empty", the VALUE will be a pointer
       to an undefined variable. You should check this value before you
       use it. You code will look something like this:
    
         IF N_Elements(*event.value) EQ 0 THEN $
             Print, 'Current Value UNDEFINED.' ELSE $
             Print, 'Current Value: ', *event.value
    
     GETTING and SETTING VALUES:
    
       Almost all the properties of the widget can be obtained or set via
       the object's GetProperty and SetProperty methods (described below).
       Traditional compound widgets have the ability to get and set the "value"
       of the compound widget identifier (e.g., fieldID in the calling
       sequence above). Unfortunately, it is impossible to retreive a variable
       in this way when the variable is undefined. In practical terms, this
       means that the undefined variable must be set to *something*. You can
       determine what that something is with the UNDEFINED keyword, or I will set
       it to !VALUES.F_NAN for numerical fields and to the null string for string
       fields. In any case, you will have to check for undefined variables before
       you try to do something with the value. For a numerical field, the code
       might look something like this:
    
          fieldID = FSC_FIELD(parent, Title="X Size:", Value=256, Object=fieldObject, Digits=3)
          currentValue = fieldObject->Get_Value()
          IF Finite(currentValue) EQ 0 THEN Print, 'Value is Undefined' ELSE Print, currentValue
    
       Additional examples are provided in the numerical example fields in Example Program below.
    
       Setting the value of the compound widget is the same as calling the Set_Value
       method on the object reference. In other words, these two statements are equivalent.
    
            fieldObject->Set_Value, 45.4
            Widget_Control, fieldID, Set_Value=45.4
    
       The data type of the value is determined from the value itself. Be sure you set it appropriately.
    
     OBJECT PROCEDURE METHODS:
    
       GetProperty -- This method allows various properties of the widget to be
           returned via output keywords. The keywords that are available are:
    
           CR_Only -- A flag, if set, means only report carriage return events.
           DataType -- The data type of the field variable.
           Decimal -- Set this keyword to the number of digits to the right of the decimal
                  point in FLOATVALUE and DOUBLEVALUE numbers.
           Digits -- Set this keyword to the number of digits permitted in INTERGERVALUE and LONGVALUE numbers.
           Event_Func -- The name of the event handler function.
           Event_Pro -- The name of the event handler function.
           Name -- A scalar string name of the object.
           NoEdit -- A 1 means the widget is non-editable.
           NonSensitive -- A 1 means the widget is non-sensitive.
           NonSensitive -- Set this keyword to make the widget non-sensitive.
           Positive -- Indicates if the Positive number flag is set (1) or not (0).
           UValue -- The user value assigned to the compound widget.
           Kill_notify -- The name of the procedure for cleaning up the
    		user value assigned to the compound widget.
           Kbrd_focus_events -- Standard widget keyword value (0,1), passed to widget_text.
           No_events -- A Flag, if set, means that no events are returned. 
    
           Value -- The "value" of the compound widget.
    
       MoveTab -- This method moves the focus to the widget identified in the "next" field,
            which must be set with the SetTabNext method. No parameters. Called automatically
            when a TAB character is typed in the text widget.
    
       Resize -- This method allows you to resize the compound widget's text field.
            The value parameter is an X screen size for the entire widget. The text
            widget is sized by using the value obtained from this value minus the
            X screen size of the label widget.
    
              objectRef->Resize, screen_xsize_value
    
       Set_Value -- This method allows you to set the "value" of the field. It takes
           one positional parameter, which is the value.
    
              objectRef->Set_Value, 5
    
    
       SetEdit -- This procedure turns editing on (value of 1) or off (value of 0).
    
       SetProperty -- This method allows various properties of the widget to be
           set via input keywords. The keywords that are available are:
    
           CR_Only -- Set this keyword if you only want Carriage Return events.
           Decimal -- Set this keyword to the number of digits to the right of the decimal
                  point in FLOATVALUE and DOUBLEVALUE numbers.
           Digits -- Set this keyword to the number of digits permitted in INTERGERVALUE and LONGVALUE numbers.
           Event_Func -- Set this keyword to the name of an Event Function.
           Event_Pro -- Set this keyword to the name of an Event Procedure.
           LabelSize --  The X screen size of the Label Widget.
           Name -- A scalar string name of the object. (default = '')
           NoEdit -- Set this keyword to make the widget non-editable.
           NonSensitive -- Set this keyword to make the widget non-sensitive.
           Positive -- Set this keyword to indicate only positive numbers are allowed.
           Scr_XSize -- The X screen size of the text widget.
           Scr_YSize -- The Y screen size of the text widget.
           Title -- The text to go on the Label Widget.
           UValue -- A user value for any purpose.
           kill_notify -- The name of the procedure for cleanup of the user value.
           Kbrd_focus_events -- Standard widget keyword value (0,1), passed to widget_text.
           No_events -- A Flag, if set, means that no events are returned. 
           Value -- The "value" of the compound widget.
           XSize -- The X size of the Text Widget.
    
       SetSensitive -- This procedure turns text widget sensitivity on (value of 1) or off (value of 0).
    
     OBJECT FUNCTION METHODS:
    
          Get_Value -- Returns the "value" of the field. No parameters. Will be undefined
              if a "number" field is blank. Should be checked before using:
    
              IF N_Elements(objectRef->Get_Value()) NE 0 THEN Print, Value is: ', objectRef->Get_Value()
    
          GetID -- Returns the widget identifier of the compound widget's top-level base.
             (The first child of the parent widget.) No parameters.
    
          GetLabelSize -- Returns the X screen size of the label widget. No parameters.
    
          GetTextID -- Returns the widget identifier of the compound widget's text widget.
             No parameters.
    
          GetTextSize -- Returns the X screen size of the text widget. No parameters.
    
    
     PRIVATE OBJECT METHODS:
    
       Although there is really no such thing as a "private" method in IDL's
       object implementation, some methods are used internally and not meant to
       be acessed publicly. Here are a few of those methods. I list them because
       it may be these private methods are ones you wish to override in subclassed
       objects.
    
          MoveTab -- This method moves the cursor to end of the text in the widget identified
            by the nexttab field. (This will be set with the SetTabNext method.)
    
          Text_Events -- The main event handler method for the compound widget. All
            text widget events are processed here.
    
          ReturnValue -- This function method accepts a string input value and converts
            it to the type of data requested by the user.
    
          Validate -- This function method examines all text input and removes unwanted
            characters, depending upon the requested data type for the field. It makes it
            impossible, for example, to type alphanumeric characters in an INTEGER field.
    
     EXAMPLE:
    
       An example program is provided at the end of the FSC_FIELD code. To run it,
       type these commands:
    
          IDL> .Compile FSC_Field
          IDL> Example
    
     MODIFICATION HISTORY:
    
       Written by: David Fanning, 18 October 2000. Based heavily on an earlier
          FSC_INPUTFIELD program and new ideas about the best way to write
          widget objects.
       Added LABEL_LEFT, LABEL_RIGHT, and UNDEFINED keywords. 29 Dec 2000. DWF.
       Modified the way the value is returned in the GET_VALUE method and the
          GET_VALUE function. Modified Example program to demonstrate. 30 Dec 2000. DWF.
       Added NOEDIT and NONSENSITIVE keywords, with corresponding SETEDIT and SETSENNSITIVE
          methods. 19 Jan 2001. DWF.
       Actually followed through with the changes I _said_" I made 29 Dec 2000. (Don't ask....) 13 June 2001. DWF.
       Added GetTextSize and GetLabelSize methods for obtaining the X screen
          size of the text and label widgets, respectively. 21 July 2001. DWF.
       Fixed a problem in SetProperty method where I was setting self.xsize, which doesn't exist. 24 April 2002. DWF.
       Added KILL_NOTIFY and KBRD_EVENTS keywords. October 28, 2002. Tanya Riseman.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/fsc_field.pro)


    FUNC_ICP_DATA_INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           func_icp_data_init
    
     PURPOSE:
    
     	This is a fake method for the object self, of type specObj, 
    	which is the first parameter to func_icp_data_init
     	Because it is not a true method, any operations performed upon 
     	self must be done via's its methods within this code.
    
    	This code reads in the data columns for ICP data for triple axis data
    	into the object self.
    	This code also reads in the header information by calling
    	func_icp_header_init.
    	The initialization method for the calss specObj
    	can either initialize using a pre-exisiting Dave Pointer,
    	or it can call a fake method with a data file name.
    	In the case of triple axis data, the specObj is initialized by:
    
         oSpec = obj_new('specObj', $	; create from a TAS data file 
      	label=fileName, $
    	codeSource='Dimeo_example', $
    	instrument='bt7', $
      	path = filePath, $
    	filename = fileName, $
    	datareader='func_icp_data_init', $
    	wID = wID)
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
           
  • SPECOBJ::INIT,_arguments MODIFICATION HISTORY: Written by Tanya Riseman, Spring, 2003. Check for eof(unit) then reading data columns. TMR. Sept 3, 2003.
  • (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_data_init.pro)


    FUNC_ICP_HEADER_INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           func_icp_header_init
    
     PURPOSE:
    
     	This is a fake method for the object self, of type specObj, 
    	which is the first parameter to func_icp_header_init
     	Because it is not a true method, any operations performed upon 
     	self must be done via's its methods within this code.
    
    	This code reads in the ICP header for triple axis data into
    	the object self. This code is called by func_icp_data_init.
    	In the future, it may also be called by itself, to initialized 
    	a specObj with only the header infomation, as a planning tool.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • SPECOBJ::INIT,_arguments MODIFICATION HISTORY: Written by Tanya Riseman, Spring, 2003.
  • (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_header_init.pro)


    FUNC_ICP_MAKE_RESVOLUME,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function func_icp_make_resvolume, $	; Returns 0/1 for failure/success
    				; Fake method for specObj class.
     	self, $			; instance of class specObj
    ;	noTreatmentHistory = thisNoTreatmentHistory, $
    	;--------------------------------------------------------------	
    	; The following are tags for the things needed in the calculation.
    	; If not provided, they default to values appropriate for triple axis ICP data..
    	rawIntensity = thisRawIntensity, $; defaults to ['*','INTENSITY', '*']
    	E_in = thisE_in, $		; defaults to ['*','E_in', '*']
    	E_out = thisE_Out, $		; defaults to ['*','E_out', '*']
    	dspacing_mon = thisDspacing_mon, $; defaults to ['*','dspacing_mon ', '*']
    	dspacing_ana = thisDspacing_ana, $; defaults to ['*','dspacing_ana ', '*']
    	restags = thisResTags, $; defaults to ['*','INTENSITY_ResVol', '*']
    	resName = thisResName, $
    	resUnits = thisResUnits, $
    	;--------------------------------------------------------------	
    	errMsg = thisErrMsg		; Optional error message string.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_make_resvolume.pro)


    FUNC_ICP_MAKE_RESVOLUME[1]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           func_icp_make_resvolume
    
     PURPOSE:
    
    	Fake method for specObj class and associated functions.
    
    	Creates data items Ei and Ef from delta E and E_fixed.
    	Creates neutron wavelength lambda_i (monchrometer) 
    	and lambda_f (analyzer).
    	Creates the normalized resolution volume.  
    	Creates the normalized nuetron scattering intensity using the 
    	resolution volume.  
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
           
  • SPECOBJ::INIT,_arguments MODIFICATION HISTORY: Written by Tanya Riseman, Aug, 2003.
  • (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_make_resvolume.pro)


    FUNC_ICP_MAKE_RESVOLUME[2]

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	func_icp_make_resvolume
    
     PURPOSE:
    	Fake method for specObj class.
    
    	Creates data items Ei and Ef from delta E and E_fixed.
    	Creates neutron wavelength lambda_i (monchrometer) 
    	and lambda_f (analyzer).
    	Creates the normalized resolution volume.  
    	Creates the normalized nuetron scattering intensity using the 
    	resolution volume.  
    

    (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_make_resvolume.pro)


    FUNC_ICP_SUBS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           func_icp_subs
    
     PURPOSE:
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/func_icp_subs.pro)


    GENERIC__HELCLASS_FRAG.PRO

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	generic__helclass_frag.pro
    
     PURPOSE:
     	Fragment of method code for all classes	 ::helpclass
    	 This is an internal method used only by ::help_obj.
    	 Insert in your class definition:
    
    	pro YourClass::helpClass, $
    	  ; Note: The following keywords are only used by internal recrusion call.
    	   helpProStr=helpProStr, helpFuncStr=helpFuncStr, $
    		class=thisClass, level=level
    
    	  @generic__helpClass_frag.pro
    	end
    
     	This avoids cut and paste proliferation of code, perhaps.
    
    	Note again: this code fragment is only used by YourClass::help_obj.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     SEE ALSO:
    	
  • AAA_README MODIFICATION HISTORY: Written by Tanya Riseman, Feb 4, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/generic__helpClass_frag.pro)


    GENERIC__HELP_OBJ_FRAG.PRO

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	generic__help_obj_frag.pro
    
     PURPOSE:
     	Fragment of method code for all classes	 ::help_obj
     	Insert in your class defintion.
    
    	pro YourClass::help_obj, $
    	  ; Note: The following keywords are only used by internal recrusion call.
    	  methodsOnly=methodsOnly,  helpProStr=strProArray, $
    		helpFuncStr=strFuncArray, class=thisClass
    
    	  @generic__help_obj_frag.pro
    	end
    	
     	This avoids cut and paste proliferation of code, perhaps.
    
    	This code fragment requires YourClass::helpClass.
    
    	Note: In IDL, classes using inheritance basically construct
     one huge structure including all the data. The inherited methods
     have access to ALL of the data in the structure, not just the parts that
     are relevent to the inherited class. Therefore it is best to use these
     generic code fragements for methods ::print_obj and ::help_obj
     ONLY FOR THE TOP MOST CLASS which has inherited classes.
    
     I have found that it is preferable to make a container class 
     DAVE_tagContainer with basically two trees in parallel,
     one for the basic "data" using the class qtyObj and 
     another for I/O and GUI issues using the class tagObj.
     This is specifically to avoid creating a new class which inherits
     qtyObj and tagObj. 
    
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     SEE ALSO:
    	
  • AAA_README MODIFICATION HISTORY: Written by Tanya Riseman, Feb 4, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/generic__help_obj_frag.pro)


    GENERIC__PRINT_FRAG.PRO

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
    	 generic__print_frag.pro
    
     PURPOSE:
     	Fragment of method code for all classes	 ::print
     	Insert in your class defintion  
    
    	pro YourClass::print, $
    	  ; ThisField is parameter with name of object struct's desired tag.
    	  ; Only the data associated with the tag is printed, if present.
      	  thisField, $	; string
      	  lun=thisLun, $; Optionally, write to a file. If absent, to screen
    	  alsoPtrs=alsoPtrs ; Optionally print contents of pointers.
    
    	  @generic__print_frag.pro
    	end
    	
     	This avoids cut and paste proliferation of code, perhaps.
    
    	Note: In IDL, classes using inheritance basically construct
     one huge structure including all the data. The inherited methods
     have access to ALL of the data in the structure, not just the parts that
     are relevent to the inherited class. Therefore it is best to use these
     generic code fragements for methods ::print_obj and ::help_obj
     ONLY FOR THE TOP MOST CLASS which has inherited classes.
    
     I have found that it is preferable to make a container class 
     DAVE_tagContainer with basically two trees in parallel,
     one for the basic "data" using the class qtyObj and 
     another for I/O and GUI issues using the class tagObj.
     This is specifically to avoid creating a new class which inherits
     qtyObj and tagObj. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     SEE ALSO:
    	
  • AAA_README MODIFICATION HISTORY: Written by Tanya Riseman, Feb 4, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/generic__print_frag.pro)


    HELPER_CW_OW_FRESHENRESULTS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro helper_cw_ow_freshenResults, $	; Used by cw_ow_resol.pro, etc.
    	thisWhereWObj, $			; cw_ow_where GUI object
    	thisSpecObj, $			; database object class specObj.
    	from=thisFrom, $	; which is sensitized 'input', 'header' or 'data'
    	value = thisValue, $	; Goes to the text entry box
    	label = thisLabel, $	; Goes to the droplist
    	tags = thisTags, $
       	name = thisName, $
    	units = thisUnits
    

    (See /home/tanya/idl/dave/programs/tas/specobj/helper_cw_ow_freshenresults.pro)


    ICP_STYLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	icp_style
    
     PURPOSE:
    	Returns 'b', 'q' or 'i' from header of the ICP triple axis data file,
     indicating the "style" of the data format.
     Might be appropriate for  other data file types.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     MODIFICATION HISTORY:
    
           Written by Tanya Riseman, Spring, 2003.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/icp_style.pro)


    ICP_STYLE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function icp_style, $ 		; Returns character 'b', 'q' or 'i'
       newFile			; filename, just for peeking
    

    (See /home/tanya/idl/dave/programs/tas/specobj/icp_style.pro)


    JULIAN_DATE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function julian_date, $
    	date_string
    ; This function converts the date string into a Julian date
    ; Decompose the date string into individual elements based on
    ; the separating white spaces.
    ; Is the primary delimiter a hyphen or a space?
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    LAUNCHSPECOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           launchspecobj
    
     PURPOSE:
    
    	This is the launch manager for DAVE program button which launches 
     the specObj reduction methods.
    
     AUTHOR:
    	Richard Azuah, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
    
     CATEGORY:
    
           DAVE application button.
    
     SEE ALSO:
     	
  • REDUCESPECOBJ
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Richard Azuah and Tanya Riseman, July 23, 2003. TMR. Sept 8, 2003. Call REDUCE_FRGD_BKGD_SPECOBJ instead of REDUCESPECOBJ TMR. Sept 10, 2003. renamed REDUCE_FRGD_BKGD_SPECOBJ REDUCESPECOBJ.
  • (See /home/tanya/idl/dave/programs/tas/specobj/launchspecobj.pro)


    LAUNCHSPYSPECOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           launchSpyspecobj
    
     PURPOSE:
    
    	This is the launch manager for DAVE program button which launches 
     the specObj reduction methods, for a pre-exising DavePtr.
     This allows spying on the specific area.
    
     AUTHOR:
    	Richard Azuah, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
    
     CATEGORY:
    
           DAVE application button.
    
     SEE ALSO:
     	
  • REDUCE_FRGD_BKGD_SPECOBJ
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Richard Azuah and Tanya Riseman, Aug 1st, 2003. TMR. Sept 8, 2003. Call REDUCE_FRGD_BKGD_SPECOBJ instead of REDUCESPYSPECOBJ TMR. Sept 10, 2003. renamed REDUCE_FRGD_BKGD_SPECOBJ REDUCESPECOBJ.
  • (See /home/tanya/idl/dave/programs/tas/specobj/launchspyspecobj.pro)


    LAUNCH_DAVESAVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           launch_davesave
    
     PURPOSE:
    
    	This is the launch manager for DAVE data save file OPEN/SAVE/REVIEW/CLOSE.
    
     AUTHOR:
    	Tanya Riseman, Ph.D. and Richard Azuah, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
    
     CATEGORY:
    
           DAVE application button.
    
     SEE ALSO:
    	
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Tanya Riseman and Richard Azuah. Aug 6, 2003.
  • (See /home/tanya/idl/dave/programs/tas/specobj/launch_davesave.pro)


    MK_HTML_HELPARG

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
    	MK_HTML_HELPARG
    
     PURPOSE:
    	Given a list of IDL procedure files (.PRO), VMS text library 
           files (.TLB), or directories that contain such files, this procedure 
           generates a file in the HTML format that contains the documentation 
           for those routines that contain a DOC_LIBRARY style documentation 
           template.  The output file is compatible with World Wide Web browsers.
    
     CATEGORY:
    	Help, documentation.
    
     CALLING SEQUENCE:
    	MK_HTML_HELPARG, Sources, Outfile
    
     INPUTS:
         Sources:  A string or string array containing the name(s) of the
    		.pro or .tlb files (or the names of directories containing 
                   such files) for which help is desired.  If a source file is 
                   a VMS text library, it must include the .TLB file extension.  
                   If a source file is an IDL procedure, it must include the .PRO
                   file extension.  All other source files are assumed to be
                   directories.
         Outfile:	The name of the output file which will be generated.
    
     KEYWORDS:
         TITLE:	If present, a string which supplies the name that
    		should appear as the Document Title for the help.
         VERBOSE:	Normally, MK_HTML_HELPARG does its work silently.
    		Setting this keyword to a non-zero value causes the procedure
    		to issue informational messages that indicate what it
    		is currently doing. !QUIET must be 0 for these messages
                   to appear.
         STRICT:   If this keyword is set to a non-zero value, MK_HTML_HELPARG will 
                   adhere strictly to the HTML format by scanning the 
                   the document headers for characters that are reserved in 
                   HTML (<,>,&,").  These are then converted to the appropriate 
                   HTML syntax in the output file. By default, this keyword
                   is set to zero (to allow for faster processing).
    
     COMMON BLOCKS:
    	None.
    
     SIDE EFFECTS:
    	A help file with the name given by the Outfile argument is
    	created.
    
     RESTRICTIONS:
    	The following rules must be followed in formatting the .pro
    	files that are to be searched.
    		(a) The first line of the documentation block contains
    		    only the characters ";+", starting in column 1.
    		(aa) The first line of the argument block contains
    		    only the characters ";*", starting in column 1.
                   (b) In the document block, 
    		    there must be a line which contains the string "NAME:",
                       which is immediately followed by a line containing the
                       name of the procedure or function being described in
                       that documentation block.  If this NAME field is not
                       present, the name of the source file will be used.
                   (bb) In the argument block, the FIRST line following the ";*"
    		    must contains the string "pro ", or "function ", 
                       which is immediately followed by a "word" containing the
                       name of the procedure or function being described in
                       that documentation block.  
    		(c) The last line of the documentation block contains
    		    only the characters ";-", starting in column 1.
    		(cc) The last line of the argument block contains
    		    only the characters ";/", starting in column 1.
    		(d) Every other line in the documentation block contains
    		    a ";" in column 1.
    		(dd) Every other line in the argument block contains
    		    whatever it wants. Usually, the arguments,
    		    keywords and documenting comments. 
    
           Note that a single .pro file can contain multiple procedures and/or
           functions, each with their own documentation blocks. If it is desired
           to have "invisible" routines in a file, i.e. routines which are only
           for internal use and should not appear in the help file, simply leave
           out the ";+", ";-", ";*", and ";/" lines in the documentation block 
    	for those routines.
    
    	No reformatting of the documentation is done.
    
     MODIFICATION HISTORY:
           July 5, 1995, DD, RSI. Original version.
           July 13, 1995, Mark Rivers, University of Chicago. Added support for
                   multiple source directories and multiple documentation
                   headers per .pro file.
           July 17, 1995, DD, RSI. Added code to alphabetize the subjects;
                   At the end of each description block in the HTML file,
                   added a reference to the source .pro file.
           July 18, 1995, DD, RSI. Added STRICT keyword to handle angle brackets.
           July 19, 1995, DD, RSI. Updated STRICT to handle & and ".
                   Changed calling sequence to accept .pro filenames, .tlb
                   text librarie names, and/or directory names.
                   Added code to set default subject to name of file if NAME
                   field is not present in the doc header.
     	May 9, 2003. Tanya Riseman, NIST.
     	  copied $Id: specobj.html,v 1.2 2003/09/17 19:47:30 tanya Exp $
    	  Added searches for ";*" and ";/" around each function, procedure 
    	  and method's argument and keyword list. In between, all lines
    	  are copied as is.
    	  
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/mk_html_helparg.pro)


    MK_HTML_HELPARG,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    PRO MK_HTML_HELPARG, $	; No value returned.
      sources, $		; file name or path of input IDL *.pro files or *.tbl files
      outfile, $		; file name of HTML output
      VERBOSE=verbose, $	; Boolean keyword. If set, reports on progress.
      TITLE=title, $	; Optional title of HTML file. Defaults to file name. 
      STRICT=strict		; Boolean keyword. 
      			; If set, converts reserved HTML characters <,>,&,".
    

    (See /home/tanya/idl/dave/programs/tas/specobj/mk_html_helparg.pro)


    MN_TNAME_2_TCODE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	mn_tname_2_tcode
    
     PURPOSE:
    
    	Converts the type name to the type code
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED:
    
     EXAMPLE
    	IDL> print, mn_tname_2_tcode('INT')
    		2
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/mn_tname_2_tcode.pro)


    MN_TNAME_2_TCODE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function mn_tname_2_tcode, $	; returns integer containing the IDL type code
       tname			; string code for the IDL data type. E.g., 'INT'
    

    (See /home/tanya/idl/dave/programs/tas/specobj/mn_tname_2_tcode.pro)


    NICESORT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	nicesort
    
     PURPOSE:
    	This routine sorts an array or pointer to an array. It 
     returns indexing arrays via keywords. 
     It also provides additional indexing arrays to find the start and stop 
     ranges of duplicated entries. 
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    	DAVE utilites
    
     MODIFICATION HISTORY:
    	Created Sept, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/nicesort.pro)


    NICESORT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro nicesort, $
    	; Requires EITHER array (qty) or pointer to array (ptr_qty)
    	qty = thisQty, $	; Input parameter. The array to sort.
    	ptr_qty = thisPtr_qty, $; Input. Pointer to the array to sort.
    	index = thisIndex, $	; Output int array. Index for sorting the array.
    				; Contains duplicates
    	start = thisStart, $	; Output int array. Index for the index, giving
    				; the first occurances.
    	stop = thisStop, $	; Output int array. Index for the index, giving
    				; the last occurances.
    	dupl = thisDupl		; Output int array. Number of duplicates
    

    (See /home/tanya/idl/dave/programs/tas/specobj/nicesort.pro)


    NUMBEROFTAGS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function NumberOfTags, $ ; Returns the number of tags with form ['','','']
    	thisTag		 ; An string array of size [3] or [nelem,3] 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)


    PRINTARGPRESENT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          printArgPresent
    
     PURPOSE:
    
    	Helper function for debuging the methods ::get*
     which use the anonymous structure argPresent..
    
    	The IDL function arg_present(yourKeyword) returns reasonable 0/1
     values for the use of a keywords, but if the keyword is then passed
     down to other  methods, functions and procedures, it then becomes
     always true. This means that items are unnecessarily calculated when
     not needed, slowing down the code. In the case of objects which we 
     didn't expect to make, it creates a memory leak because they are 
     not destroyed.
    
    	The work around is to use a structure called ArgPresent, which
     is passed onto the lower routines. See example section.
    
    	This routine gets passed an anonymous structure ArgPresent. 
     The routine prints out the labels (which correspond to the names of the 
     keywords) for all members which have the value TRUE. This routine is NOT 
     dependent on knowing the names of the keywords or the field names of the 
     structure argPresent ahead of time.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED: None
    
     EXAMPLE
       WRONG WAY:
     	Ok = topGet(key1 = name)
    
    	function topGet, key1=thisKey1, key2=thisKey2, key3=thisKey3
    	  OKleft = leftGet(key2=thisKey2)
    	  OKright = rightGet(key1=thisKey1, key3=thisKey3
    	  if (n_elements(thisKey1)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  if (n_elements(thisKey2)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  if (n_elements(thisKey3)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  ;; Note: All three keys now exists and will be printed.
    	  return (OKleft OR OKright)
           end
    
       RIGHT WAY:
     	Ok = topGet(key1 = name)
    
    	function topGet, $
    	  	argPresent = thisArgPresent, $; ARG_PRESENT() function does not work on 
       		;propagated keywords from other calling routines.
    		; Needed for get* methods.
    		key1=thisKey1, key2=thisKey2, key3=thisKey3
    
    	  if (NOT arg_present(thisArgPresent)) then begin  
       		ArgPresent = {$	; make this be anonymous structure
    			key1 : arg_present(thisKey1), $
    			key2 : arg_present(thisKey2), $
    			key3 : arg_present(thisKey3)}
    	  endif else begin
    	    ArgPresent = thisArgPresent
      	  endelse
    
    	  printArgPresent, ArgPresent
    
    	  if (argPresent.key2) then begin
    	    OKleft = leftGet(argPresent=argPresent, key2=thisKey2)
    	  endif
    	  if ((argPresent.key1) OR (argPresent.key3)) then begin
    	    OKright = rightGet(argPresent=argPresent, key1=thisKey1,key3=thisKey3
    	  endif
    	  if (n_elements(thisKey1)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  if (n_elements(thisKey2)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  if (n_elements(thisKey3)GT 0) then begin
    		print, "thisKey1 Created. ", thisKey1
    	  endif
    	  ;; Note:  Only key1 now exists and will be printed.
    	  return (OKleft OR OKright)
           end
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/printargpresent.pro)


    PRINTARGPRESENT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro printArgPresent, $
    	ArgPresent, $	; Anonymous structure containing fields corresponding
    		; to keywords and boolean values (0/1) indicating if
    		; those keywords are being used. 
    	showValues=thisShowValues	; Boolean keyword. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/printargpresent.pro)


    PSTATE_CLEANUP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro pstate_cleanup, thisPState,$
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       derefSpecific = thisDerefSpecific, $	;Boolean keyword. Default is destroy obj.
       derefExtra = thisDerefExtra		;Boolean keyword. Default is destroy obj.
    ; Destroys a DAVE pState pointer and what's beneath it.
    ; Note: pstate_Show shows the pState pointer in the same order that it is 
    ; cleanup in this proceedure pstate_cleanup.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    PSTATE_SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro pstate_show, thisPState,$
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       full = thisFull	
    ; Shows a DAVE pState pointer and what's beneath it.
    ; Shows the pState pointer in the same order that it is cleanup in the 
    ; proceedure pstate_cleanup. Might seem a bit backwards.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    QTYOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           qtyObj
    
     PURPOSE:
    
    	This object qtyObj contains values, with associated units and errors.
     It is intended as a container class for holding scalar, 1D and 2D data
     of any IDL numeric, or string type. Of course, the errors
     only make sense for numeric types. It is intended to be the building
     block for database class "DAVE_tagContainer", which is used in term by
     the class "specObj" (containing the database plus its focus objects).
     
    	This qtyObj is an object MINIMALLY containing the 
    	  1. self.name, a string
    	  2. self.units, a string
    	  3. self.ptr_qty which is a pointer to an array of quantities.
    	  4. self.rank gives the number of dimensions of the array
    	     that self.ptr_qty points to. 0, 1, 2, 3, 4 are OK. 
    		and self.n_rows which specify if
    	    the contents of self.ptr_qty are scalar, 1D or 2D.
    		self.dim  array of the sizes of the dimensions.
    	  5. self.dim is an array [#,#,#,#] containing the dimensions
    	     of the array that self.ptr_qty points to. It is only used up 
    	     to the length self.rank, the rest is zero-filled.
    	     For example, a 2D data set might have [2, 128, 0,0].
    	  6. selt.tname which is the type of the quantities that are 
    	     pointed to by self.ptr_qty.
    	     The type is allowed to be numeric (INT, FLOAT, etc.) or STRING. 
    	     Note: self.ptr_err and self.ptr_nerr need not be the
    	     the same type. For example, self.ptr_qty might point to UNSIGNED INT
    	     while self.ptr_err might point to float.
    
    	Optionally, qtyObj uses 
    	  1. self.ptr_err for symmteric errors or the positive portion of
    	     asymmetric errors. Its contents must have the same dimensions 
                as self.ptr_qty or be NULL. Test using ptr_valid(self.ptr_err).
    	     It need not have the same type as self.ptr_qty.
    	  2. self.ptr_nerr for negative errors.
    	     Its contents must have the same dimesions as self.ptr_qty or be NULL.
    	     It need not have the same type as self.ptr_qty.
    	  3. self.ptr_legend, a list of STRINGs which is an alternative
    	     method of referring to the contents of the other pointers,
    	     the alternative being by column and row.
    	     Its contents must have the same dimensions are self.ptr_qty or be NULL.
    	     It is intended to be of type STRING, but other types seem to work.
    	  4. self.StyleErr has values of 
    	     '' 		Default. Assumed to be Gaussian errors.
    	     'poisson'		Poisson errors (e.g. counting statistics).
    	     'center_step' 	Using self.ptr_err as a step size. For ICP files.
    	     'start_step' 	Using self.ptr_err as a step size. For ICP files.
    	     'cov_matrix'	self.ptr_err has dimensions of dim^2 rather than dim
    ;
    	 Quick example: self.ptr_qty might point to an array of unsigned longs
     which correspond to detected events while the self.ptr_err would containing
     FLOATs equal to sqrt(float(*(self.ptr_qty))). 
     self.ptr_err would not need any more accuracy than FLOAT provides.
     self.ptr_nerr=ptr_new() would just be a null pointer, as it is unneeded.
     
    .........................................................................
     Note: array size temp = size(myarray) returns
     temp[1] = n_cols and temp[2] = n_rows (as per IDL documentation)
     But when you print it out, it looks like [rows, cols].
     To access internals of the array, in sepcObj, use the keywords 
     	position = [icol, irow]	or
    	position = "thatLegend"
     
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE aaplication programming.
    
     OBJECT DEFINTION
    	 
  • QTYOBJ__DEFINE_arguments PRIVATE FUNCTION AND PROCEEDURES: function qtyObj_remove1d, iwhere, $ ; Helper function for REMOVE method. OTHER FILES AND ROUTINES USED: function mn_tname_2_tcode, tname ; File mn_tname_2_tcode.pro function format_size, ptr_Array = ptr_Array, Array = anArray ; File format_size.pro pro qtyObj_example, whichexample ; for testing pro test_IS, thisObj ; for testing pro check_heap ; for testing function whatsIt COMMON BLOCKS: common QTYOBJ_DIMS, DIM_MAX, DIM_WARN INCLUDE FILES: GENERIC__HELCLASS_FRAG.PRO GENERIC__HELP_OBJ_FRAG.PRO GENERIC__PRINT_FRAG.PRO EXAMPLE ... MODIFICATION HISTORY: Written by Tanya Riseman, Feb, 2003. Changed from descripObj class (scalar only) to Descrip2DObj (0D, 1D, or 2D.) ;- BUILD can not resolve this function whatsIt, due to it being late in the alphabet. Rename whatsIt to AAA_whatsIt. TMR. Aug 1st, 2003. Changed name from AAA_whatsIt to whatits. TMR. Aug 6, 2003. TMR Aug 6, 2003. Added ptr_valid's to scalar case for GETONEVALUE TMR Sept 5, 2003. Added routines qtyObj__prepErrors and qtyObj__BinaryOp. and qtyObj_UnitaryOp.
  • (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::APPEND

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::append
    
     PURPOSE:
     	Append to the end of arrays more things
     	This MIGHT only work properly with 1-D arrays.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::APPEND,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::Append, $	; Returns 0/1 for failure/success.
      ;----------------------- 
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $	; Optional error on the values
      err = thiserr, $		; Optional error on the values
      ptr_nerr = thisptr_nerr, $	; Optional negative error on the values
      nerr = thisnerr, $		; Optional negative error on the values
      ptr_legend = thisptr_legend, $; shares memory using the same pointer.
      legend = thislegend, $	; shares memory using new pointer.
      obj=thisObj 			; Copy contents of same kind of object into self
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::BIGGESTDIM_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::biggestDim	
    	; Returns integer with the largest dimension of multi-minensional data.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::CLEANUP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj::Cleanup
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::CLONE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::clone		; Returns an object which is a copy of self
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::COUNT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::count
    
     PURPOSE:
    	 Stupider than qtyObj::GetDimension(rank=thisrank, dim=thisDim)
     as it returns the equivalent 1D number of elements for multi-dimensional arrays.
     Compatible with count method in IDL_container and DAVE_tagContainer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::count	; Returns integer with n_elements(*(self.ptr_qty))
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::Get, $		; Returns 0/1 for failure/success.
       argPresent = thisArgPresent, $	; Optional anonymous structure.
       	; ARG_PRESENT() function does not work on propagated keywords 
    	; from other calling routines. Needed for get* methods.
      ; use at least one of the following keywords:
      ;------------ qtyObj::GetString
      name = thisname, $		; String
      units = thisunits, $		; String
      StyleErr = thisStyleErr, $	; String
      axisTitle = thisAxisTitle, $ 	; Returns string for plot axis label. 
    	  		; Includes name, legend? and units.
      sizeString = thisSizeString, $ ; Returns string for dimensions. 
      			; '[0]', '[4]', '[#,#]', etc.. 
      some=thisSome, $	; Returns string. 
      			; 1 line summary of one qtyObj Object. No vectorvalues.
      all=thisAll, $  	; Returns string.
      			; 1 line summary of one qtyObj Object
      everything=thisEverything, $	; Returns string.
      			; String array containing all contents of one qtyObjObObject
      ;------------ qtyObj::GetDimension
      rank=thisrank, $ 	; Integer. Number of dimensions. 0 for scalar.
      			; 1 for 1-D, 2 for 2-D, etc.
      dim=thisDim, $ 	; Integer or integer array. 
      			; 0, or ([#]or #?) or [#,#] or [#,#,#], etc.
      tname = thisTName, $ 	; String. Data type ('INT', 'FLOAT', etc.) of *(self.ptr_qty)
      ;----- qtyObj::GetValue 
      ptr_qty = thisptr_qty, $	; Pointer to numeric or string scalar or array.	
      qty = thisqty, $		; Numeric or string scalar or array.
      ptr_err = thisptr_err, $	; Pointer to Numeric scalar or array.
      				; Optional error on the values
      err = thiserr, $		; Numeric scalar or array.
      				; Optional error on the values
      ptr_nerr = thisptr_nerr, $	; Pointer to Numeric scalar or array.
      				; Optional negative error on the values
      nerr = thisnerr, $		; Numeric scalar or array.
      				; Optional negative error on the values
      ptr_legend = thisptr_legend, $; Pointer to String scalar or array. Optional.
      				; shares memory using the same pointer.
      legend = thislegend		; String scalar or array. Optional.
      				; shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETDIMENSION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::getDimension
    
     PURPOSE:
    	Helper method for qtyObj::get.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETDIMENSION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::GetDimension, $ ; Returns 0/1 for failure/success.
       argPresent = thisArgPresent, $	; anonymous structure.
       	; ARG_PRESENT() function does not work on propagated keywords 
    	; from other calling routines. Needed for get* methods.
      ;-----------------------------------------
      rank=thisrank, $ 	; Integer number of dimensions. 0 for scalar.
      			; 1 for 1-D, 2 for 2-D, etc.
      dim=thisDim, $ 	; Integer array. 0, or ([#]or #?) or [#,#] or [#,#,#], etc.
      tname = thisTName 	; String. Data type ('INT', 'FLOAT', etc.) of *(self.ptr_qty)
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETONEVALUE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::GetOneValue, $  ; Returns 0, 1 for failure, success
    	  ; Doesn't make a lot of sense for scalars.
       argPresent = thisArgPresent, $	; Optional anonymous structure.
       	; ARG_PRESENT() function does not work on propagated keywords 
    	; from other calling routines. Needed for get* methods.
      ;--------
      forPos=thisForPos, $		; Integer or integer array. E.g. # or [#,#]
      forLegend=thisForLegend, $	; String, alternative to forPos
      ;------ Use at least one of the following keywords:
      descripTitle = thisDescripTitle, $ ; Returns string for descriptive purposes. 
    	  ; Includes name, legend, scalar qty, error, and units.
      oneQty = thisOneQty, $		; Optional. Returns string or numeric.
      oneErr = thisOneErr, $		; Optional. Returns numeric.
      oneNErr = thisOneNErr, $		; Optional. Returns numeric.
      oneLegend = thisOneLegend		; Optional. Returns string.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETSTRING

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::getString
    
     PURPOSE:
    	Helper method for qtyObj::get.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETSTRING,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::GetString, $		; Returns 0/1 for failure/success.
       argPresent = thisArgPresent, $	; anonymous structure.
       	; ARG_PRESENT() function does not work on propagated keywords 
    	; from other calling routines. Needed for get* methods.
      ;-----------------------------------------
      name = thisname, $		; Returns string. self.name, suitable for plot
      units = thisunits, $ 		; Returns string. self.units, units for qty, err, nerr.
      StyleErr = thisStyleErr, $    ; Returns string. for self.styleErr
      			; '' is the default. Options 'center_step', 'start_step'
      axisTitle = thisAxisTitle, $ 	; Returns string for plot axis label. 
    			  	; Includes name, and units.
      sizeString = thisSizeString, $; Returns string in format [#,#] 
      				; based on self.rank and self.dim
      some=thisSome, $	; 1 line summary of one qtyObj Object. No vectorvalues.
      all=thisAll, $  	; 1 line summary of one qtyObj Object
      everything=thisEverything	; String array containing all contents of one qtyObj Object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::GETVALUE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::GetValue, $	; Returns 0/1 for failure/success.
       argPresent = thisArgPresent, $	; anonymous structure.
       	; ARG_PRESENT() function does not work on propagated keywords 
    	; from other calling routines. Needed for get* methods.
      ;----------------------- 
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $		; Optional error on the values
      err = thiserr, $			; Optional error on the values
      ptr_nerr = thisptr_nerr, $		; Optional negative error on the values
      nerr = thisnerr, $			; Optional negative error on the values
      ptr_legend = thisptr_legend, $	; Optional. shares memory using the same pointer.
      legend = thislegend			; Optional. shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HASERROR_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::hasError
    	; Returns 1 (true) if (self.ptr_err) is not a null pointer. 0 otherwise.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HASSTEP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::hasStep
    	; Returns 1 (true) if (self.ptr_err) is not a null pointer. 0 otherwise.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::helpclass
    
     PURPOSE:
    	Helper method for qtyObj::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HELP_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::help_obj
    
     PURPOSE:
    	Prints to the screen or file unit number 
     1. The types of the data member of the object 
     2. All the methods associated with the object
     3. All the arguments and keywords associated with the object.
    
    	Uses @generic__help_obj_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::HELP_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj::help_obj, $
      methodsOnly=methodsOnly,  $	; Ignore. Keyword only used by recursion call
      helpProStr=helpProStr, $	; Ignore. Keyword only used by recursion call
      helpFuncStr=helpFuncStr, $	; Ignore. Keyword only used by recursion call
      class=thisClass, $		; Ignore. Keyword only used by recursion call
      level=level, $		; Ignore. Keyword only used by recursion call
      lun=thisLun 			; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::init, $	; Returns 0/1 for failure/success
      name = thisname, $		; String
      units = thisUnits, $		; String. Units
      rank = thisrank, $		; Integer. number of dimensions
      dim = thisDim, $		; actuals dimensions. Use # or [#,#], etc.
      tname = thisTname, $		; type 'INT', 'FLOAT', 'STRING', 'OBJREF', etc.
      initValue = thisInitValue, $  ; Initial value for array *(self.ptr_qty)
      StyleErr = thisStyleErr, $    ; String. '' is the default. 
      				; Options 'center_step', 'start_step'
    	; qty and ptr_qty both get stored in self.ptr_qty.
    	; keyword qty is pass by value.
    	; keyword ptr_qty is pass by reference.
    	; qty and *(ptr_qty) can be any numeric type or string. 
    	; Size of *(ptr_qty) must agree with self.rank and self.dim.
      ptr_qty = thisptr_qty, $	; shares memory using the same pointer.
      qty = thisqty, $		; shares memory using new pointer.
    	; err and ptr_err both get stored in self.ptr_err.
    	; err and *(ptr_err) can be any numeric type,
    	; or not initialized (NULL). If not NULL,
    	; size of *(ptr_err) must agree with self.rank and self.dim.
      ptr_err = thisptr_err, $	; Optional error on the values
      err = thiserr, $		; Optional error on the values
    	; nerr and ptr_nerr both get stored in self.ptr_nerr.
    	; nerr and *(ptr_nerr) can be any numeric type, 
    	; or not initialized (NULL). If not NULL,
    	; size of *(ptr_nerr) must agree with self.rank and self.dim.
      ptr_nerr = thisptr_nerr, $	; Optional negative error on the values
      nerr = thisnerr, $		; Optional negative error on the values
    	; legend and ptr_legend both get stored in self.ptr_legend.
    	; legend and *(ptr_legend) must be STRING type, 
    	; or not initialized (NULL). If not NULL,
    	; size of *(ptr_legend) must agree with self.rank and self.dim.
      ptr_legend = thisptr_legend, $; shares memory using the same pointer.
      legend = thislegend		; shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::ISCONSTANT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::isConstant	; returns 0/1 for TRUE/FALSE
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::ISNUMERIC_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::isNumeric	; Returns 0/1 for TRUE/FALSE
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::ISSCALAR_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::isScalar		; Returns 0/1 for TRUE/FALSE
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::POSITIONLEGEND

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::positionLegend
    
     PURPOSE:
    	Returns position thisPos of thisLegend in array *(self.ptr_legend) 
     Function returns 0 for failure and 1 for success. 
     Returns -2 (false) for trivial matches, or if the requested legend is 
     not available. 
     Error if no match or an error (like self.ptr_legend is empty).
     Note: Only returns first item found with the legend thisLegend.
     Case insensitive.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::POSITIONLEGEND,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::positionLegend, $	; returns 0/1 for failure/success
      thisLegend, $		; Input string
      thisPos		; Output Array. 0 for scalar, # for 1D, [#,#] for 2-D, etc. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $		; string.
      lun=thisLun, $	; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs	 ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::REMOVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::remove, $	 ; Returns 0/1 for failure/success.
     ;-------- use one of the two following keywords
      forPos=thisforPos, $	; [#] or [#,#], etc.
      forLegend=thisforLegend 	; alternative to forPos
      		; Give name of legend corresponding to item's position.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::REMOVEALL_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::removeAll	; Returns 0/1 for failure/success.
    		; Only leaves self.name, self.units, self.tname left.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::set, $		; Returns 0/1 for failure/success.
    	  ; use at least one of the following keywords:
      ;--- setString( *** keywords below *** ) -------------------
      name = thisname, $		; String.
      units = thisunits, $		; String. Units of qty, err, nerr.
      StyleErr = thisStyleErr, $	; String. Indicates errors or step or covariance matrix
      ;--- setDimensions( *** keywords below *** ) -------------------
      rank = thisRank, $		; Integer.  0,1,2,3,4-D
      dim = thisDim, $		; Integer or integer array. E.g.  # or [#,#]	
      tname = thisTName, $		; String. Type of *(self.ptr_qty).
      initValue = thisInitValue, $	; Numeric or string.
      ;--- setValue( *** keywords below *** ) -------------------
      ptr_qty = thisptr_qty, $	; Pointer to numeric or string scalar or array.
      qty = thisqty, $		; Numeric or string scalar or array.
      ptr_err = thisptr_err, $	; Pointer to Numeric scalar or array.
      				; Optional error on the values
      err = thiserr, $		; Numeric scalar or array.
      				; Optional error on the values
      ptr_nerr = thisptr_nerr, $	; Pointer to Numeric scalar or array.
      				; Optional negative error on the values
      nerr = thisnerr, $		; Numeric scalar or array.
      				; Optional negative error on the values
      ptr_legend = thisptr_legend, $; Pointer to String scalar or array. Optional.
      				; shares memory using the same pointer.
      legend = thislegend		; String scalar or array. Optional.
      				; shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETDIMENSION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::setDimension
    
     PURPOSE:
    	Helper method for qtyObj::set.
    
     	This function overrides the current size and type of *(self.ptr_qty).
     Useful when initializing data using init method, but don't have the
     data handy yet. Won't be generally used, otherwise.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETDIMENSION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::setDimension, $; Returns 0/1 for failure/success.
      rank=thisRank, $ 	; Integer. 0, 1, 2, 3, or 4-D
      dim=thisDim, $ 	; Integer. 0, or ([#]or #?) or [#,#] or [#,#,#], etc.
      tname = thisTName, $	; String. Data type ('INT', 'FLOAT', etc.) of *(self.ptr_qty)
      initValue = thisInitValue	; Initial value for array *(self.ptr_qty)
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETONEVALUE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::setOneValue, $  ; Returns 0, 1 for failure, success
    	  ; Doesn't make a lot of sense for scalars.
      ;-------- Need to location position in storage array using forPos or forLegend.
      forPos=thisForPos, $		; Integer or integer array. E.g. # or [#,#]
      forLegend=thisForLegend, $	; String, alternative to forPos
      ;------ Use at least one of the following keywords: 
      oneQty = thisOneQty, $	; String or numeric, 
      				; matching current type of *(self.ptr_qty).
      oneErr = thisOneErr, $	; Numeric, matching current type of *(self.ptr_err).
      oneNErr = thisOneNErr, $	; Numeric, matching current type of *(self.ptr_nerr).
      oneLegend = thisOneLegend	; String.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETSTRING

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj::setString
    
     PURPOSE:
    	Helper method for qtyObj::set.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETSTRING,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::setString, $	; Returns 0/1 for failure/success.
      name = thisname, $		; String. self.name, suitable for plot
      units = thisunits, $		; String. self.units, units for qty, err, nerr.
      StyleErr = thisStyleErr	; String. for self.styleErr
      			; '' is the default. Options 'center_step', 'start_step'
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SETVALUE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj::setValue, $; Returns 0/1 for failure/success.
      ;----------------------- 
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $		; Optional. Error on the values
      err = thiserr, $			; Optional..Error on the values
      ptr_nerr = thisptr_nerr, $		; Optional. Negative error on the values
      nerr = thisnerr, $			; Optional. Negative error on the values
      ptr_legend = thisptr_legend, $	; Optional. Shares memory using the same pointer.
      legend = thislegend			; Optional. Shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ::SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj::show, $
      lun=thisLun, $ 	; Optionally, write to a file. If absent, to screen
      strArray = thisStrArray, $	; Optionally, write to an array instead of file 
      noTrailingBlank = thisNoTrailingBlank, $
      prefix = thisPrefix, $
      level = thisLevel, $		; how deep in tree
      recursive = thisRecursive, $	;; ignore. End of the tree here.
      heapNum = thisHeapNum		;  ignore. End of the tree here.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ_EXAMPLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           qtyObj_example
    
     PURPOSE:
    
    	To test the class qtyObj.
    	IDL> qtyobj_example, #		(1 - 13, 22)
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj_example.pro)


    QTYOBJ_EXAMPLE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj_example, $
    	whichexample		; Integer (1 - 12, 22). 0 means all
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj_example.pro)


    QTYOBJ_REMOVE1D

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	qtyObj_remove1D
    
     PURPOSE:
     	Helper function for REMOVE method.
     	Removes 1 item from a 1D array.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ_REMOVE1D,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj_remove1D, $		; Returns 1 upon success, 0 for failure.
    	iwhere, $			; Integer
    	original_ptr, $
    	new_ptr
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__BINARYOP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj__BinaryOp, $	; returns object of type qtyObj.  Null obj if error.
    	; returns (thisObj1 thisOp thisObj2)
    	thisObj1, $		; Either obj in class qtyObj or scalar
    	thisOp, $		; '+', '-', '*', '/'
    	thisObj2, $ 		; Either obj in class qtyObj or scalar
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;----------------------------------------------
    	estimate = thisEstimate, $	; Estimate the errors if operator not recognized
    	errMsg = thisErrMsg		; Optional error message if failure
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro qtyObj__define
      infolabel = "qtyObj__define >> "  
      define = {qtyObj, $
        name: '', $	; Long name or description wuitable for plot axis.
        		; Example: "Sample temperature" 
        units:'', $	; Units
        tname: '', $; Type of data ('INT', 'FLOAT', 'DOUBLE', 'STRING',, etc.
        		; Not allowed: 'POINTER' and  'OBJREF'.
    		; This is the type of *(self.ptr_qty).
    		; The errors  *(self.ptr_err) and  *(self.ptr_nerr), 
    		; might be of another type.
        		; Only need to specify self.tname upon init when want to 
    		; initialize with 0/null values. Othersize, if self.ptr_qty is 
    		; non-trivially initialized (e.g. not a null pointer)
    		; then self.tname is automatically determined by
    		; the type of what self.ptr_qty is pointing to.
        StyleErr: '', $ ; '' Default normal-Gaussian errors.
        		; 'poisson'
        		; 'center_step'. The ptr_err is really a step size.
    		; 'start_step'. The ptr_err is really a step size.
    		; 'cov_matrix'. ptr_err has dimensions of dim^2 rather than dim
        rank: 0, $	; Number of dimensions size(*(self.ptr_qty), /n_dimensions)
        		; 0 for scalar. 1 for 1-D, 2 for 2-D, etc.
        dim: [0,0,0,0], $ ; Pointer to an array containing
        		; size(*(self.ptr_qty), /dimensions)
    		; [0,0,0,0] for scalar,
    		; [#,0,0,0] for 1-D,
    		; [#,#,0,0] for 2-D, etc.
        ptr_legend: ptr_new(), $ ; Pointer to array of type string.
        		; Holds some descriptive info, e.g. 'Average Temp' or 'Quench'
                    ; Note: use null ptr if legends are not needed.
        ptr_qty: ptr_new(), $ ; Pointer to array of type self.tname.
        		; Size of array is given by self.rank and self.dim.
    		; Note; data is stored via this pointer, but in methods
    		; SET and GET you can use the keywords ptr_qty (by reference)
    		; or qty (by value).
        ptr_err: ptr_new(), $ ; symmetric errors or positive errors (if use ptr_nerr)
        		; Only makes sense for numerical types, but no restriction. 
    		; Need not have the same type as *(self.ptr_qty).
    		; Note: use null ptr if errors are not needed.
        		; Size of array is given by self.rank and self.dim.
    		; Note; data is stored via this pointer, but in methods
    		; SET and GET you can use the keywords ptr_err (by reference)
    		; or err (by value).
        ptr_nerr: ptr_new() $ ; Optional negative errors.
        		; Only makes sense for numerical types, but no restriction. 
    		; Need not have the same type as *(self.ptr_qty).
    		; Note: use null ptr if errors are not needed.
        		; Size of array is given by self.rank and self.dim.
    		; Note; data is stored via this pointer, but in methods
    		; SET and GET you can use the keywords ptr_nerr (by reference)
    		; or nerr (by value).
        }
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__LISTBINARYOP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj__listBinaryOp		; returns list of recognized operators
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__LISTUNITARYOP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj__listUnitaryOp		; returns list of recognized operators
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__PREPERRORS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj__prepErrors, $	; returns 0/1 for failure/success
    	thisObj1, $		; Either obj in class qtyObj or scalar
    	;----------------------------------------------
    	ptr_qty=ptr_qty1, $		; output
    	ptr_err=ptr_err1, $		; output. Returns symmetric errors.
    	ptr_legend=ptr_leg1, $		; output
    	units=units1, $ 		; output
    	name=name1, $ 			; output
    	;----------------------------------------------------
    	errMSg = ErrMsg1		; output. If there has been an error
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    QTYOBJ__UNITARYOP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function qtyObj__UnitaryOp, $	; returns object of type qtyObj.  Null obj if error.
    	; returns (thisObj1 thisOp thisObj2)
    	thisOp, $		;  '-', 'cos', 'sin', 'exp', 'alog'
    	thisObj1, $		; Either obj in class qtyObj or scalar
    	; Operates upon item stored at field1.
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;-------------------------------------------------
    	estimate = thisEstimate,$	; Estimate the errors if operator not recognized
    	;----------------------------------------------
    	errMsg = thisErrMsg		; Optional error message if failure
    

    (See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)


    REDUCESPECOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           reduceSpecObj
    
     PURPOSE:
    
    	This is the DAVE program button which launches the specObj reduction
     programs, for either raw triple axis ICP data or for pre-existing DAVE files.
     The pre-existing DAVE files may either be saved reduced triple axis ICP data
     (containing the specific object in the specific area) or other dave files
     which may or may not have a specific object. 
    
     AUTHOR:
    	Richard Azuah, Ph.D. and
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           DAVE application button.
    
     SEE ALSO:
     	
  • LAUNCHSPECOBJ
  • SPECOBJ__DEFINE_arguments MODIFICATION HISTORY: Richard Azuah and Tanya Riseman, July 23, 2003. If no files selected, return control to main DAVE. TMR Aug 1, 2003. TMR. Aug 29, 2003. Changed "state={...instr: 'bt2'..", to "state={...instr: '*.bt*'.." to help pickfile filter. TMR. Sept 10, 2003. Renamed reduce_frgd_bkgd_specobj.pro reducespecobj.pro. Now this does both raw data files and DAVE files. TMR. Sept 15, 2003. changed usingGUI (0/1) to usingGroupLeader (0/#)
  • (See /home/tanya/idl/dave/programs/tas/specobj/reducespecobj.pro)


    REPORT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           report_obj
    
     PURPOSE:
    
    	This is a generic routine to report information about an object
     to the screen or a file.
     It reports on the structure of the object, its methods and their arguments,
     and upon the contents of the object. 
    
    	Since the object in question is the first argument, this routine
     can be considered a "friend" method for all objects.
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED:
    	Requires that the object have the following methods defined:
    		print_obj
    		help_obj
    		show
    
     EXAMPLE
    	...
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    

    (See /home/tanya/idl/dave/programs/tas/specobj/report_obj.pro)


    REPORT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro report_obj, $
      thisObj, $			; Object to report on. 
      newfile, $			; String. Output info to this file.
      heapNum = thisHeapNum		; Boolean keyword. 
      				; If set, show the heap number via HELP
    

    (See /home/tanya/idl/dave/programs/tas/specobj/report_obj.pro)


    SINGLETON_SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro singleton_show,  $	; (opposite of structure_show)
    	thisRec, $	; anything except a structure. 
    	theName, $	; string name of thisrec
    	lun=thisLun, $	; Optionally, write to a file. If absent, to screen
    	partial=ThisPartial, $
    	full=ThisFull, $
    	isNULL =thisIsNull
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    SPECOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
            specObj
    
     PURPOSE:
    
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     OBJECT DEFINTION
    	 
  • SPECOBJ__DEFINE_arguments OTHER OBJECT CLASSES AND ROUTINES USED:
  • FOCUSOBJ__DEFINE_arguments
  • DAVE_TAGCONTAINER__DEFINE_arguments
  • TAGOBJ__DEFINE_arguments
  • QTYOBJ__DEFINE_arguments (usually) OTHER ROUTINES USED: ... INCLUDE FILES: GENERIC__HELCLASS_FRAG.PRO GENERIC__HELP_OBJ_FRAG.PRO GENERIC__PRINT_FRAG.PRO EXAMPLE IDL> SPECOBJ_EXAMPLE MODIFICATION HISTORY: Tanya Riseman, Spring, 2003. specobj::Append renamed specObj::Concatenate. July 23, 2003. TR COMBO_OBJ_NEW routine written . TMR Aug 9, 2003 COMBO_RESTORE routine written . TMR Aug 20, 2003 COMPACT, MakeLists rotuiens written. TMR. Sep 2, 2003 ::BinaryOP and ::UnitaryOP now call qtyObj_binaryOp and qtyObj_unitaryOp. TMR Sept 8, 2003 ::FRGD_BKGD routine written. TMR Sept 8, 2003 TMR. Sept 15, 2003. changed usingGUI (0/1) to usingGroupLeader (0/#) TMR. Sept 17, 2003. Added self.ownerDavePtr to object definition. Only cleanup self.davePtr if self.ownerDavePtr = 'local'.
  • (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::ADD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::Add
    
     PURPOSE:
    	Similar to IDL_container::Add and DAVE_tagContainer::Add.
    
    	Each object added must have a tag string array associated with it,
    	['','',''].
    
    	The optional keyword position has been extended to accept a
    	tag string ['','',''] or an index integer.
    
    	The optional keyword Esrrmsg returns an error message upon
    	error, while returning a NULL string '' upon success.
    	
    	The first level of the hiarachical tree has at least 2 containers,
    	one of which is identified as the "header" and the other as the "data"
    	containers. This as been done by use of the focusObj in self.focus.
    	The object added by  DAVE_tagContainer::Add
    	automatically gets placed down one level.
    	If /inHeader is specified, the objects gets placed in the header node.
    	If /inData is specified, the objects gets placed in the data node.
    	If neither /inHeader not /inData is specified, the object gets
    	placed automatically, with "small" objects placed in the header node
    	and "larger" objects in the data node. The size cut-off is a size of
    	4 for the largest dimension. The keyword DataMinSize can be used to 
    	over-ride this cut-off criterion.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::ADD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro specObj::add, $
    	; The following keywords are passed to  DAVE_tagContainer::Add
      tags = thisTag, $	  	; Required keyword.
    				; string array tag ['','',''] for thisObject
      contents=thisObject, $	; Required keyword. 
    				; Object to be added to container.
      position = thisPosition, $  $ ; Optional location to place, 
    				; type integer (index) or string array (tag ['','','']).  
    			  	; Defaults to the end.
      errMsg = thisErrMsg, $  	; Optional keyword String. Returns error message.
    				; Null string '' if sucessful.
      ;------ where to put it ----------------- 
      ; If neither keyword appears, decide on basis of the dimensions of contents.
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $ 		; Boolean keyword
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore, $			; Boolean keyword.
      		; If used, keywords inHeader and inData and DataMinSize ignored
      ;------ Criterion for where to put it.  ----------------- 
      DataMinSize = thisDataMinSize		; Optional keyword integer.
      			; If neither /inHeader or /inData appear,
    			; over-ride criterion of 4 for placing the data. 
    			; Small objects go into header.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::APPENDFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::appendField, $		; Returns 0/1 for failure/success
    	; returns 0/1 from self.contents by calling qtyObj's append.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
      thisPosition, $ ; This is the "field"
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------from where in container class ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ;----- qtyObj::append
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $		; Optional error on the values
      err = thiserr, $			; Optional error on the values
      ptr_nerr = thisptr_nerr, $		; Optional negative error on the values
      nerr = thisnerr, $			; Optional negative error on the values
      ptr_legend = thisptr_legend, $	; shares memory using the same pointer.
      legend = thislegend, $		; shares memory using new pointer.
      obj=thisObj 			; Copy contents of same kind of object into self
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::BINARYOP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::BinaryOp, $	; returns 0/1 for failure/success
    	; Operates upon items stored at field1 and field2 using qtyObj__binaryOp. 
    ;;;;	self, $			; specObj class
    	thisOp, $			; '+', '-', '*', '/'
    	;-----------------------------------------
    	tags1 = thistags1, $	; initial value. Text array ['','',''] or float.
    	from1 = thisFrom1, $	; 'header', 'data', 'input'
    	;-----------------------------------------
    	tags2 = thistags2, $
    	from2 = thisFrom2, $	; 'header', 'data', 'input'
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;---------------------------------------
    	resTags = thisTags, $	; new tags. If not present, use tags1 modified.
    	codeSource = thisCodeSource, $ ; Optional codesource for tag.
      	inHeader = thisinHeader,$	; Where place the  results
    	inData = thisInData, $	; where place the results
    	;----------------------------------------------
    	estimate = thisEstimate, $	; Estimate the errors if operator not recognized
    	errMsg = thisErrMsg		; Optional error message if failure
    	;----------------------------------------------
    ;	verbose = thisVerbose
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::BINARYOP_OLD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::BinaryOp_old, $	; returns 0/1 for failure/success
    	; Operates upon items stored at field1 and field2. 
    ;;;;	self, $			; specObj class
    	thisOp, $			; '+', '-', '*', '/'
    	;-----------------------------------------
    	tags1 = thistags1, $	; initial value. Text array ['','',''] or float.
    	from1 = thisFrom1, $	; 'header', 'data', 'input'
    	;-----------------------------------------
    	tags2 = thistags2, $
    	from2 = thisFrom2, $	; 'header', 'data', 'input'
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;---------------------------------------
    	resTags = thisTags, $	; new tags. If not present, use tags1 modified.
    	codeSource = thisCodeSource, $ ; Optional codesource for tag.
      	inHeader = thisinHeader,$	; Where place the  results
    	inData = thisInData, $	; where place the results
    	;----------------------------------------------
    	estimate = thisEstimate, $	; Estimate the errors if operator not recognized
    	errMsg = thisErrMsg		; Optional error message if failure
    	;----------------------------------------------
    ;	verbose = thisVerbose
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLFUNCTION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::callFunction
    
     PURPOSE:
     	Calls a function which MIGHT act on the self object, only via methods.
      Functions are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The function's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	If used as a "friend" method, the second argument should probably be
     object itself. E.g., 
     	result = myObject -> callFunction( 'SomeFunction', myObject, ...)
     Yes, that is a bit redundent, but means you can also call
     	result = myObject -> callFunction( 'SomeFunction', anotherObject, ...)
     and have the function do NOTHING at all with myObject's data!
     This might be useful for widget objects.
    
    	The methods specObj::callFunction, specObj::callProcedure and
     specObj::callMethod could be used to impliment an user interface 
     which allows the user to select functions, procedures and methods to
     apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLFUNCTION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function specObj::callFunction, $	; returns whatever functionName returns.
      functionName, $	; A string.  don't include *.pro extension
      thisArg1, $		; Any type. Might be an object for "friend" methods.
      thisArg2, $		; Any type. 
      thisArg3, $		; Any type.
      _EXTRA = extraExtra	; call by value keywords. ONLY ONES CALL BY VALUE!
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLMETHOD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::callMethod
    
     PURPOSE:
     	Calls a method which acts on the "self" object. 
     If /isPro set, this function returns 1 (for true)
     If /isFunction is set, it returns the value that that function returns.
    
     	Methods are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The method's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	The methods specObj::callFunction, specObj::callProcedure and
     specObj::callMethod could be used to impliment an user interface 
     which allows the user to select functions, procedures and methods to
     apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLMETHOD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::callMethod, $	; if /isPro, returns 1.
    			; if /isFunction, returns whatever methodName returns.
      methodName, $				; A string. Name of method to use.  
      	; The method is assumed to be a function unless otherwise indicated
    	; with /isFunction. /isPro is provided for convenience.
      isFunction = thisIsFunction, $	; the default. 
      				; Indicates methodName has a return value.
      isPro = thisIsPro, $		; Indicates methodName has no return value.
      thisArg1, $			; Any type.
      thisArg2, $			; Any type.
      thisArg3, $			; Any type.
      _EXTRA = extraExtra		; call by value keywords. ONLY ONES CALL BY VALUE!
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLPROCEDURE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::callProcedure
    
     PURPOSE:
     	Calls a procedure which MIGHT act on the self object, only via methods.
      Procedures are currenty limited to a maximum of 3 arguments 
      (thisArg1, thisArg2, thisArg3). The procedures's keywords values can 
      NOT be modified by function, a limitation of passing them using
      the _EXTRA keyword. 
    
    	If used as a "friend" method, the second argument should probably be
     object itself. E.g., 
     	myObject -> callProcedure, 'SomeProcedure', myObject, ...
     Yes, that is a bit redundent, but means you can also call
     	myObject -> callProcedure, 'SomeProcedure', anotherObject, ...
     and have the procedure do NOTHING at all with myObject's data!
     This might be useful for widget objects.
    
    	The methods specObj::callFunction, specObj::callProcedure and
     specObj::callMethod could be used to impliment an user interface 
     which allows the user to select functions, procedures and methods to
     apply. 
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CALLPROCEDURE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::callProcedure, $
      proName, $		; A string. don't include *.pro extension
      thisArg1, $		; Any type. Might be an object for "friend" methods.
      thisArg2, $		; Any type.
      thisArg3, $		; Any type.
      _EXTRA = extraExtra	; call by value keywords. ONLY ONES CALL BY VALUE!
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CLEANUP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::Cleanup			; , $
    ;	skipDavePtr = thisSkipDavePtr		; Soon to be obsolete
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CLONEFIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::cloneField
    
     PURPOSE:
    		This method "jumps" down the heirarchical tree, to the leaf node
     	specified by the argument thisPosition (either an integer or a string "tag")
    	in the section /inHeader or /inData. If neither /inHeader or /inData
    	is specified, it looks in both areas. It then clones that item,
    	overiding its  name and tags.
    	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CLONEFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::cloneField, $		; Returns 0/1 for failure/success
    	; returns 0/1 from self.contents by calling qtyObj's get.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
      thisPosition, $ ; This is the "field". required.
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------from where in container class ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ;------------ qtyObj::GetString
      name = thisname, $	; Optional string. overrides the name
      tags = thisTags, $	; Optional string array ['', '', '']. overrides the tags
      label = thisLabel, $	; Optional string. overrides the label portion of the tags
      units = thisUnits; Optional string. overrides the units
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CLONE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::clone		; Returns a copy of self
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::COMPACT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::compact, $		; Returns 0/1 for failure/success
    	; Sorts all fields in the data section by the values of sortField, if dimensions
    	; match. Then averages all duplicate values.
    	; Assumes triple axes data, with all fields in data section 1D and the same length.
    	; Does not test for numbers that are very close, eq. no tolerance in the test.
    	sortField = thisSortField, $	; Recommended keyword (not quite required!). 
    			; If not provided, uses 1st data field with pendent='D'.
    	noTreatmentHistory = thisNoTreatmentHistory, $
            usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;	usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;					; GUI pops up to modify thisIntensity
    	errMsg = thisErrMsg		; Optional error message string.
    ;-
    
    
    ;;	noTreatmentHistory = thisNoTreatmentHistory, $
    ;;	rawCounts = thisRawCounts, $	; Defaults to ['qtyObj', 'COUNTS', '*']
    ;;	rawTime = thisRawTime, $	; Defaults to ['qtyObj', 'MIN', '*']
    ;;	rawMonitor = thisRawMonitor, $	; Defaults to ['qtyObj', 'MONITOR', '*'] in header
    ;;	thisByMonitor, $ 		; Optional new value of monitor. Defaults to 1.
    ;	newIntensity = thisNewIntensity, $ ; Defaults to ['qtyObj', 'INTENSITY', '*']
    ;	newTime = thisNewTime		; Defaults to ['qtyObj', 'TIME', '*']
    
      debug = 0
      debug2 = 1
      
      thisErrMsg = ''
    
      infolabel = "specObj::compact >> "
      
      OK = 1
       
      
      sortField_Used = 1
      if (n_elements(thisSortField) EQ 0) then begin
        ; Which variables are independent or dependent or constant. 
        self -> makeLists, $	; Returns lists of tags regarding fields in data section
    	independList = theIndependentList, $	; Output keyword. 
    					; List of independent fields in data section.
    	nIndep = theNIndep, $		; Number in independent list.
    	dependList = theDependentList, $; Output keyword. 
    					; List of dependent fields in data section.
    	nDep = theNDep, $		; Number in dependent list.
    	constantList = theConstantList, $; Output keyword. 
    					; List of constant fields in data section.
    	nConst = theNConst, $		; Number in constant list.
    	nOther = theNOther		; number not characterized by 'I', 'D' or 'C'.
    
    
        thisSortField = theIndependentList[0:2]	; pick off the first one.
        sortField_Used = 0
      endif
    
      ;------------------------------------------------------------------
      if (debug2) then begin
          print, '~~~~~~  ', infolabel, " n_elements(usingGroupLeader) = ", $
          	 n_elements(thisusingGroupLeader)
      endif
    
      if (n_elements(thisUsingGroupLeader) NE 0) then begin
    
        if (debug2) then begin
          print, '~~~~~~  ', infolabel, " usingGroupLeader = ",  thisusingGroupLeader
        endif
    
       if (thisUsingGroupLeader NE 0) then begin
    ;  if (keyword_set(thisUsingGUI)) then begin
        ; Allow the user to change the selection thisSortField from the GUI if in interactive mode.
        message, /info, string("Orig field = ", format_list(thisSortField))
        ; This updates the zfocus with the new selection
        whereGUIObj = obj_new('dialog_ow_where', self, $
            groupLeader = thisUsingGroupLeader, $
        	from='data', $
    	label = thisSortField[1], $
    	xyzFocus = 'x')
        OK = whereGUIObj -> createWidgets()
    
        message, /info, string("Old sort tags = ", $
        	format_list(thisSortField))
    	
        ; Copy over the new zfocus to the string array thisIntensity
        OK = self -> getFocus(xtags = thisSortField)
    
        message, /info, string(OK, "=OK. New sorting tags and focus = ", $
        	format_list(thisSortField))
    
       if (obj_valid(whereGUIObj)) then begin 
         obj_destroy, whereGUIObj
       endif
      endif
     endif 
    
      if ((n_elements(thisSortField) EQ 0) OR $
      	(round(total(strcmp(thisSortField, ['', '', '']))) EQ 3) ) then begin
        thisErrMsg = "Requires one independent field to sort by"
        message, /info, "Requires one independent field to sort by"
        return, 0
      endif 
    
     ;----------------------------------------------------------------------------------- 
     
    ;  if (debug) then message, /info, string("thisSortField = ", format_list(thisSortField))
      
      OK = self -> getField(thisSortField, /inData, $
      	qty = sortqty, $
            rank = sortrank, $
    	dim = sortdim)
    
      if (debug) then begin
        message, /info, string(sortField_Used, $
    	"=used. sorting field = ", format_list(thisSortField))
       message, /info, string( OK, "=OK. Sorting rank, dim=", sortRank, $
    	      ' ', format_list(sortDim)) 
       print
      endif
      
    
    
      if (NOT OK) then begin
        thisErrMsg = "Did not find the sorting field " + format_list(thisSortField)
        goto, the_end
      endif
    
      nicesort, qty=sortQty, $
    	index = qIndex, $
    	start = iStart, $
    	stop = iStop, $	
    	dupl = qDupl
    
      nuniq = n_elements( iStart)
         
      nFields= self-> count(/inData)  
      OK = 1
      for iField = 0, (nFields-1) do begin
        DAVE_undefine, targetQty, targetErr, targetNErr, targetLegend
        DAVE_undefine, newQty, newErr, newLegend	; newNerr not used.
        iOK = self -> getField(iField, /inData,$
      	qty = targetqty, $
            err=targeterr, nerr=targetnerr, $
    	legend = targetlegend, $
            rank = targetrank, $
    	dim = targetdim)    
    
        if (eqarrays(sortdim, targetdim)) then begin
          if (debug) then begin
            print, ifield, "Size matches. ", format_list(sortdim)
    	print, "Sorted now, but before duplicity is checked:"
          endif
          ; This is useful if only need to sort but no duplicates. Otherwise,
          ; we will write over the arrays.
          newqty =  targetqty[qIndex[istart]]		; Copy all unique ones over, in sorted order
          if (n_elements(targeterr) GT 0) then begin 
            weight = make_array(/double, nuniq)
            ; new errors will be all symmetric. Don't define newnerr.
            if ((n_elements(targeterr) GT 0) AND (n_elements(targetnerr) EQ 0)) then begin 
              newerr =  targeterr[qIndex[istart]]		; Copy all unique ones over, in sorted order
    	endif else begin
              if ((n_elements(targeterr) GT 0) AND (n_elements(targetnerr) GT 0)) then begin 
    	    newerr = 0.5*(targeterr[qIndex[istart]] + targetnerr[qIndex[istart]]) 
    	  endif
    	endelse
            if (debug) then begin
              print, "newqty=", newqty, " +- ", newerr
            endif
          endif else begin
            if (debug) then begin
              print, "newqty=", newqty
            endif
          endelse
          if (n_elements(targetlegend) GT 0) then begin
            newlegend = targetlegend[qIndex[istart]]
          endif
    
    
          if (debug) then begin
            help, newqty
    ;	print, ifield, " newqty = ", newqty
    	help, newerr
    	help, newlegend
    	print
          endif
          
          ;-----------------------------------------	  
          for i = 0, (nuniq-1) do begin
            ; Check for duplicates. Average duplicates as appropriate.
           if (qDupl[i] GT 1) then begin
    	    i1 = istart[i]
    	    i2 = istart[i] + (qDupl[i]-1)
                if (n_elements(targeterr) EQ 0) then begin 
    	      tgterr_arr = make_array(/double, qDupl[i], value = 1.0d0)
    	    endif else begin
                  if ((n_elements(targeterr) GT 0) AND $
    	      	(n_elements(targetnerr) EQ 0)) then begin 
    	        tgterr_arr = targeterr[qindex[i1:i2]]
    	      endif else begin
                    if ((n_elements(targeterr) GT 0) AND (n_elements(targetnerr) GT 0)) then begin 
    	          tgterr_arr = 0.5*(targeterr[qindex[i1:i2]] $
    			+ targetnerr[qindex[i1:i2]]) 
    		endif
    	      endelse
    	    endelse
    	    weight_arr = 1.0d0 / (tgterr_arr^2)
    	    newqty[i] = total(targetQty[qindex[i1:i2]] * weight_arr)
    	    newqty[i] = newqty[i] / total(weight_arr)
    	    if (n_elements(targeterr) GT 0) then begin
    	      newerr[i] = sqrt(1.0d0 / total(weight_arr))
    	    endif    
           endif		; if (qDupl[i] GT 1) then begin
          endfor 		; for i = 0, (nuniq-1) do begin
    
           print
         endif
    
         if (debug) then begin
           if (n_elements(newerr) GT 0) then begin
             astring = string(ifield, " qty=", format_list(newqty), $
    		 " +- ", format_list(newerr))
           endif else begin
             astring = string(ifield, " qty=", format_list(newqty))
           endelse
    	 if (n_elements(astring) GT 1) then begin
    	   astring = astring[0] + '...'
    	 endif
             message, /info, astring
         endif
    
        if (iOK) then begin
          if (n_elements(targetnerr) GT 0) then begin 
            ; Not sure if this will work properly to discard the use of nerr.
            iOK = iOK and self -> setField(iField, /inData,$
      	  qty = newqty, $
              err=newerr, $
    	  ptr_nerr = ptr_new(), $	; void pointer. Don't use asymmetric errors.
    	  styleErr = '', $	; Discard 'poisson'
    	  legend = newlegend)
          endif else begin
         ; The vast majority of cases will come here, due to symmetric errors.
            iOK = iOK and self -> setField(iField, /inData,$
      	  qty = newqty, $
              err=newerr, $
    	  styleErr = '', $	; Discard 'poisson'
    	  legend = newlegend)
          endelse
        endif else begin
          message, /info, string("Problem with ", iField)
        endelse
        OK = OK AND iOK
    
      endfor
    
      ;-------------------------------------------
      if (NOT keyword_set(thisNoTreatmentHistory)) then begin
        treatString = "OK = specObj -> Compact(  $"
        if (sortFiel_Used) then begin
          treatString = [treatstring,  $
            string("sortField = ", format_list(thisSortField))]
        endif
        treatString = [treatString, ")"]
        OK = SpecObj -> appendField( /inHeader, $
      	['qtyObj', 'SpecObjTreatment', 'specObj::init'],$
    	qty= treatString ) 
    
      endif
    
      ;-------------------------------------------
      the_end:
      return, OK
      
    end	;
    
    ;=========================================================================================
    ;*
    pro specObj::makeLists, $	; Returns lists of tags regarding fields in data section
    	independList = thisIndependList, $	; Output keyword. 
    					; List of independent fields in data section.
    	nIndep = thisNIndep, $		; Number in independent list.
    	dependList = thisDependentList, $; Output keyword. 
    					; List of dependent fields in data section.
    	nDep = thisNDep, $		; Number in dependent list.
    	constantList = thisConstantList, $; Output keyword. 
    					; List of constant fields in data section.
    	nConst = thisNConst, $		; Number in constant list.
    	nOther = thisNOther		; number not characterized by 'I', 'D' or 'C'.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::COMPACTCONCATENATE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::CompactConcatenate, $		; Returns 0/1 for failure/success
    		; Combination of methods concatenate and compact.
    	appendages, $			; Array of specObj.
    	depField = thisdepField, $	; Optional keyword. Passed to compact
    	noTreatmentHistory = thisNoTreatmentHistory, $
            usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;	usingGUI = thisUsingGUI, $	; IGNORED keyword_set(thisUsingGUI) for now
    	errMsg = thisErrMsg		; Optional error message string.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CONCATENATE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::concatenate, $		; Returns 0/1 for failure/success
    	appendages, $			; Array of specObj.
    	depField = thisdepField, $	; Optional keyword. Ignored.
    	noTreatmentHistory = thisNoTreatmentHistory, $
     	usingGroupLeader = thisUsingGroupLeader, $;  IGNORED
    ;	usingGUI = thisUsingGUI, $	; IGNORED keyword_set(thisUsingGUI) for now
    	errMsg = thisErrMsg		; Optional error message string.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CONVERT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::convert
    
     PURPOSE:
     	This routine fills an object of class SpecObj from the information in davePtr.
    	This includes:
     		1. The contents of the structure that specficPointer points to.
    		2. The contents of histPtr
     	It replaces the specific pointer's anonymous structure 
    	with either one only containing the new object (if keyword /replace is used)
    	or it then places that object at the end of the structure.
     	If the keyword "/replace" is used, the structure is only only {specObj:SpecObj}
     	and the original contents are removed.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::CONVERT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function  specObj::convert, $	; Returns boolean 0/1 for failure/success
      thisDavePtr, $
      currentCodeSource, $
      replace = thisReplace		; Optional boolean keyword.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::COUNT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::Count, $	:Returns an integer with the # items in header or data.
      inHeader = thisInHeader,  $	; Optional boolean keyword
      inData = thisInData, $	; Optional boolean keyword
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore		; Boolean keyword.
      				; If used, keywords inHeader and inData ignored
      	; Default is the count of DAVE_tagContainer objects in self.store
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::FRGD_BKGD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::FRGD_BKGD, $		; Returns 0/1 for failure/success
    		; subtracts and adds together "intensity" field of two data objects
    	appendages, $			; Array of specObj. (Assumed to be length 2!)
    	depField = thisdepField, $	; Optional keyword. Ignored.
    	noTreatmentHistory = thisNoTreatmentHistory, $
    	errMsg = thisErrMsg, $		; Optional error message string.
            usingGroupLeader = thisUsingGroupLeader, $; If (thisUsingGroupLeader NE 0L) then 
       		; MIGHT pop up an interactive diglaog box. Sept 15, 2003. TMR.
    ;	usingGUI = thisUsingGUI, $	; If keyword_set(thisUsingGUI) then 
    ;					; GUI pops up to modify thisIntensity
    	intensity = thisIntensity 	; Defaults to ['qtyObj', 'INTENSITY', '*']
    	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GET

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::get
    
     PURPOSE:
    	Similar to DAVE_tagContainer::get and IDL_container::get.
    
    	Returns object or an array of objects from either the "header" section 
    	(use /inHeader) or the "data" section (use /inData) of the container.
    	The objects are identitified by either /all, isa or position keywords.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::Get, $	; returns an object or object array.
    	; returns object or objects from self.contents.
    	all = thisAll, 	$ 	; Boolean keyword
    	ISA = thisISA, $ 	; class names(S). string or string array
    	;----- use keyword position for indices or by tag ----------
    	position = thisPosition, $ ; 
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
    	;---------------------------------------------------------
    	count = thisCount, $		; # of objects selected
    	everything = thisEverything, $	; Optional keywords, returns an info string
      ;------ where to get from ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $		; Boolean keyword
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore, $			; Boolean keyword.
      				; If used, keywords inHeader and inData ignored
      ;---------------------------------------------------------
      verbose = thisVerbose	; Optional keyword. Reports on progress.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETDAVEPTR

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::GetDavePtr
    
     PURPOSE:
    	Returns a pointer to the traditional Dave data structure.
    
     	The specObj class has a pointer to a DAVE data structure: self.davePtr
    	The DAVE data contains a "specific" pointer to anonymous structure,
    	which includes an object of class specObj. This is a circular 
    	data structure that allows you to either handle the data as
    	a traditional DAVE data strucutre or as a object-oriented specObj object.
    	Think of it as Dr. Jekyll and Mr. Hyde.
    
    	See also specObj::CreateDavePtr
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETDAVEPTR_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::GetDavePtr	; returns pointer to the DAVE data structure. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETFIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::getField
    
     PURPOSE:
    		This method "jumps" down the heirarchical tree, to the leaf node
     	specified by the argument thisPosition (either an integer or a string "tag")
    	in the section /inHeader or /inData. If neither /inHeader or /inData
    	is specified, it looks in both areas.  
    
    	The leaf node is assumed to be an object of class qtyObj (or have
    	the same interface or inherited qtyObj). One or more of the 
    	keywords (name, units, styleErr, acisTitle, sizeString, rank, dim, tname
    	ptr_qty, qty, ptr_err, err, ptr_nerr, nerr, ptr_legend, legend, isScalar,
    	isNumeric, isConstant, hasError, and  hasStep) are used to return 
    	information about the leaf node.
    	
    	Note: ptr_qty, ptr_err, ptr_nerr and ptr_legend are "pass by reference"
    	and should be used for large data sets where efficiency is desired.
    	Make sure you don't modify the contents by accident.
    	qty, err, nerr, and legend are "pass by value".
    	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::getField, $		; Returns 0/1 for failure/success
    	; returns 0/1 from self.contents by calling qtyObj's get.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
      thisPosition, $ ; This is the "field"
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------from where in container class ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ;----------------------- 
       argPresent = thisArgPresent, $; ARG_PRESENT() function does not work on 
       	;propagated keywords to inherited classes.
      ;------------ qtyObj::GetString
      name = thisname, $
      units = thisunits, $
      StyleErr = thisStyleErr, $
      axisTitle = thisAxisTitle, $ 	; Returns string for plot axis label. 
    	  	; Includes name, legend? and units.
      sizeString = thisSizeString, $ ; Returns string for dimensions. 
      			;; '[0]', '[4]', '[#,#]', etc.. 
      some=thisSome, $; 1 line summary of one qtyObj Object. No vectorvalues.
      all=thisAll, $  ; 1 line summary of one qtyObj Object
      everything=thisEverything, $	; String array containing all contents of one qtyObjObObject
      ;------------ qtyObj::GetDimension
      rank=thisrank, $ 		; Number of dimensions. 0 for scalar.
      				; 1 for 1-D, 2 for 2-D, etc.
      dim=thisDim, $ 		; 0, or ([#]or #?) or [#,#] or [#,#,#], etc.
      tname = thisTName, $ 		; Data type ('INT', 'FLOAT', etc.) of *(self.ptr_qty)
      ;----- qtyObj::GetValue 
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $		; Optional error on the values
      err = thiserr, $			; Optional error on the values
      ptr_nerr = thisptr_nerr, $		; Optional negative error on the values
      nerr = thisnerr, $			; Optional negative error on the values
      ptr_legend = thisptr_legend, $	; shares memory using the same pointer.
      legend = thislegend, $		; shares memory using new pointer.
      ;--------------------------
      isScalar = thisIsScalar, $
      isNumeric = thisIsNumeric, $
      isConstant = thisIsConstant, $
      hasError = thisHasError, $
      hasStep = thisHasStep
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETFOCUS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::getFocus
    
     PURPOSE:
    	See focusObj::get and focusObj::define
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETFOCUS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::GetFocus, $	; Returns 0/1 for failure/success.
    				; Returns focusObj if no keywords are provided.
       argPresent = thisArgPresent, $	; Optional keyword, 
    		; anon structure of boolean. For internal use. 
    		; ARG_PRESENT() function does not work on 
       		; propagated keywords from other calling routines.
    		; Needed for get* methods.
       container = thisContainer, $
       headerObj = thisHeaderObj, $
       dataObj = thisDataObj, $
       mainTitleTags = thisMainTitleTags, $	; optional.
       descripTags = thisDescripTags, $	; optional.
       DescripLegend = thisDescripLegend, $	; optional.
       cutTags = thisCutTags, $
       xTags = thisXTags, $			; optional
       yTags = thisYTags, $			; optional
       zTags = thisZTags, $			; optional   
       xType = thisXType, $
       yType = thisYType, $
       everything = thisEverything
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETLABEL

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::getLabel
    
     PURPOSE:
    	Gets selected information about all the leaf nodes specified by
    	either /inHeader or /inData 
     	Arrays returned via optional keywords class, label, codeSource,
    	sizeString and count.
     	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETLABEL,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::GetLabel, $	; returns string arrays of the labels, size, etc..
      	argPresent = thisArgPresent, $	; Optional keyword, anon structure of boolean.
    		; For internal use. 
    		; ARG_PRESENT() function does not work on 
       		;propagated keywords from other calling routines.
    	class = thisClass, $		; Optional keyword, returns the string array
    					; for first string in tag ['','','']
    	label = thisLabel, $		; Optional keyword, returns the string array
    					; for second string in tag ['','','']
    	codeSource = thisCodeSource, $	; Optional keyword, returns the string array
    					; for third string in tag ['','','']
    	sizeString = thisSizeString, $; Optional keyword, returns the string array
    				; giving the size, based on rank and dimensions.
    
    	;---------------------------------------------------------
    	count = thisCount, $		; Optional keyword, returns integer array.
    					; for # of objects in aech leaf node in 
    					; section selected
      ;------ where to remove from ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore			; Boolean keyword.
      				; If used, keywords inHeader and inData ignored
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETMINMAX,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::getMinMax, $	; Returns an integer array  [min, max] 
    	; for the range available in the focus or in specified field
    	; ------  Use 1 of the three following keywords ------------------
    	x = thisX, $		; Boolean Keyword.
    	y = thisY, $		; Boolean Keyword.
    	z = thisZ, $			; Boolean Keyword.
    	field = thisField,$		; String keyword. 
     	 ;------from where in container class. Use with field keyword --- 
     	 inHeader = thisInHeader, $	; Boolean keyword
     	 inData = thisInData		; Boolean keyword
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETPOSITION

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::GetPosition
    
     PURPOSE:
     	Converts tags ['blah_class', 'blah_name', 'blah_codeSource'] to the
     	integer position in the container. This integer is returned.
     	It has a value of -1 if the tags are not found.
     	'*' wildcard is allowed in the tag. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETPOSITION,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::GetPosition, $
       thisXTags, $			; required
       ;---- Only one keyword of the two is allowed: /inHeader or /inData.
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $	 	; Boolean keyword
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore			; Boolean keyword.
      				; If used, keywords inHeader and inData ignored
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETSTORE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::getStore
    
     PURPOSE:
    	Returns self.store, which is of type DAVE_tagContainer.
    	 Used by clone method.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETSTORE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::GetStore	; returns the self.store object 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETTAGFIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::getTagField
    
     PURPOSE:
    		This method "jumps" down the heirarchical tree, to the leaf node
     	specified by the argument thisPosition (either an integer or a string "tag")
    	in the section /inHeader or /inData. If neither /inHeader or /inData
    	is specified, it looks in both areas.  
    
    	This routine returns information in the "tag" object associated with
    	the specified leaf node. This information is intended for 
    	assisting with the user-interface.One or more of the 
    	keywords (class, label, codeSource, tags, hide, editable, annotate,
    	pendent and  everything) are used to return 
    	information about the leaf node's tag object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETTAGFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::getTagField, $	; Returns 0/1 for failure/success
    	; returns 0/1 success/failure from self.contents by calling tagObj's get.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
    	thisPosition, $ ; This is the "field"
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------ where to remove from ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ;----------------------- 
       argPresent = thisArgPresent, $; ARG_PRESENT() function does not work on 
       	;propagated keywords to inherited classes.
      ;------------ tagObj::Get
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $	;; Boolean. /annotate is OK.
    	pendent = thisPendent, $	;; Will be C: constant, D: dependent, I: independent
    	everything = thisEverything	;Keyword returns a string, which is a summary.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::GETWID_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::getWID	; Returns widget ID associated with this object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::helpclass
    
     PURPOSE:
    	Helper method for specObj::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::HELPER_ISTAG,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::helper_isTag, $	; returns 1 if thisTags1, 0 if it is a #
    	thisTags1,$		; input
    	from=thisFrom1, $		; input
    	inHeader=inHeader1, $		; output
    	inData=inData1, $		; output
    	ptr_qty=ptr_qty1, $		; output
    	ptr_err=ptr_err1, $		; output. Returns symmetric errors.
    	ptr_legend=ptr_leg1, $		; output
    	units=units1, $ 		; output
    	name=name1, $ 			; output
    	errMSg = thisErrMsg		; output. If there has been an error
    ;-
    	
      debug = 0	;1
      infolabel =  "specObj::helper_isTag >> "
      if (debug) then begin
        print, infolabel, "thisTags1 = ", thisTags1
      endif
        	
      what1 = size(thisTags1, /tname)
      nwhat1 = n_elements(thisTags1)
      if ((what1 eq 'STRING') AND (nWhat1 eq 3)) then begin
        isTag = 1
        ; assume that it is proper tags
        inHeader1 = 0
        inData1 = 1		; default location
        if (strcmp(strtrim(thisFrom1, 2),  'header', /fold_case)) then begin
          InHeader1 = 1
        endif   
        if (strcmp(strtrim(thisFrom1, 2),  'data', /fold_case)) then begin
          InData1 = 1
        endif   
        if (inHeader1 OR inData1) then begin
          OK = self -> getField ( thisTags1 ,  $
            ptr_qty=ptr_qty1, $
      	ptr_err=ptr_err1, ptr_nerr=ptr_nerr1, $
    	ptr_legend = ptr_leg1, $
    	units=units1, name=name1, $
    ;	rank = rank1, dim = dim1, $
      	inHeader= InHeader1, inData= InData1)  
          if (NOT OK) then begin
            thisErrMsg = string(infolabel,  "Can not find tag " , $
    		string(format_list(thisTags1)), $ 
    		" inHeader=", InHeader1, " inData=", InData1)
    ;        thisErrMsg = string(infolabel,  "Can not find tag ['" , $
    ;		thisTags1[0], "', '", thisTags1[1], "', '", thisTags1[2], "'] ")
    	return, isTag
          endif else begin
            if (ptr_valid(ptr_err1) AND ptr_valid(ptr_nerr1)) then begin
            ; Make the errors symmetric	
    	  (*ptr_err1) = ((*ptr_err1) + (*ptr_nerr1))/2.0
    	  ptr_free, ptr_nerr1
    	endif
          endelse
          
        endif
      endif else begin
        ; assume thisFrom1 = 'input'
        isTag = 0
        ptr_qty1 = ptr_new(thistags1)
        OK = 1
    
        name1 = strtrim(string(thistags1), 2)		;; ''
        units1 = strtrim(string(thisTags1), 2)		;; ''
      endelse
    
    
      if (NOT ptr_valid(ptr_qty1)) then begin
        errMsg = string(infolabel,  " ptr_qty is not defined. name=", name1) 
        message, /info, errMsg
      endif else begin
        if (n_elements((*ptr_qty1)) EQ 0) then begin
          message, /info, string("ptr_qty is is zero-length. name=", name1)
        endif
      endelse
      
      ; Use scalar zero for those errors not being used.
    	if (NOT ptr_valid(ptr_err1)) then begin
    	  if (n_elements((*ptr_qty1)) EQ 1) then begin
    	    tempZero = (*ptr_qty1) - (*ptr_qty1) 
    	  endif else begin
    	    if (debug) then print, infolabel, "(*ptr_qty1)[0]=", (*ptr_qty1)[0]
    	    tempZero = ((*ptr_qty1)[0]) - ((*ptr_qty1)[0]) 
    	  endelse
    ;	  if (debug) then print, infolabel, "zero=", tempZero
    
    	  ptr_err1 = ptr_new(tempZero)	; same type as (*ptr_qty1)
    	endif
    
      if (ptr_valid(ptr_nerr1)) then ptr_free, ptr_nerr1
    
      return, isTag 
    
    end
      
    ;=================================================================
    ;*
    function specObj::listBinaryOp		; returns list of recognized operators
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::HELP_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::help_obj
    
     PURPOSE:
    	Prints to the screen or file unit number CO
     1. The types of the data member of the object 
     2. All the methods associated with the object
     3. All the arguments and keywords associated with the object.
    
    	Uses @generic__help_obj_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::HELP_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::help_obj, $
      methodsOnly=methodsOnly,  $	; Ignore. Keyword only used by recursion call
      helpProStr=helpProStr, $	; Ignore. Keyword only used by recursion call
      helpFuncStr=helpFuncStr, $	; Ignore. Keyword only used by recursion call
      class=thisClass, $		; Ignore. Keyword only used by recursion call
      level=level, $		; Ignore. Keyword only used by recursion call
      lun=thisLun 			; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::init
    
     PURPOSE:
    	Initialize the object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::init, $		; Returns 0/1 for failure/success
       ;----------------------------------------------------------------
       ; Use keywords combos (davePtr,/convert) or 
       ; (instrument, path, filename, dataReader) BUT NOT COMBINED!
       ;----------------------------------------------------------------
       davePtr = thisDavePtr, $		; Optionally create specObj from DAVE data
       					; if filename not used. 
    					; Otherwise this is the davePtr handed from
    					; above.
       convert = thisConvert, $		; Boolean keyword. If true, convert
       					; the DavePtr. 
    					; Must be used with davePtr keyword.
       ownerDavePtr = thisownerDavePtr, $	; If 'local', cleanup destroys self.davePtr.
       					; If 'main', cleanup skips self.DavePtr
    					; Defaults to 'main'.
       ;----------------------------------------------------------------
       instrument=thisInstrument, $		; Optional string. 
       					; Only used w/out convert keyword
       path = thisPath, $			; String. path for ICP file.
       					; Only used w/out convert keyword.
       filename = thisFilename, $		; String. ICP file to read from.
       					; Only used w/out convert keyword.
       dataReader = thisDataReader, $	; String. Data reader function's name
       					; Only used w/out convert keyword.
    					; If datareader is left out, 
    					; then assume that files are DAVE 
    					; files and not raw data.
       ;----------------------------------------------------------------
       Label = thisLabel, $			; String. label portion of tags.
       CodeSource = thisCodeSource, $	; String. CodeSource portion of tags.
       ;----------------------------------------------------------------
       wID = thisWID, $			; widget ID asscoated with object self
       ;----------------------------------------------------------------
       errMsg = thisErrMsg, $		; Optional keyword. 
       					; Error message returned here.
       					; null string if success.
    					; Not used here yet.
       ;----------------------------------------------------------------
      _EXTRA = extraExtra	; call by value keywords. ONLY ONES CALL BY VALUE!
      				; Passed on to dataReader routine.
    				
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::INITDAVEPTR

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::InitDavePtr
    
     PURPOSE:
    	Creates a DAVE pointer and places it in .davePtr.
    	Returns 0/1 for failure/success.
    
     	The specObj class has a pointer to a DAVE data structure: self.davePtr
    	The DAVE data contains a "specific" pointer to anonymous structure,
    	which includes an object of class specObj. This is a circular 
    	data structure that allows you to either handle the data as
    	a traditional DAVE data strucutre or as a object-oriented specObj object.
    	Think of it as Dr. Jekyll and Mr. Hyde.
    
    	See also specObj::getDavePtr, updateDavePtr
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::INITDAVEPTR,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function specObj::initDavePtr, $	; Returns 0/1 for failure/success
    	instrument = thisInstrument, $	; String.
    	DavePtr = newDavePtr, $		; Optional.Dave pointer.  
    				; empty ptr_new(/allocate_heap) or filled.
            ownerDavePtr = thisownerDavePtr	; If 'local', cleanup destroys self.davePtr.
       					; If 'main', cleanup skips self.DavePtr
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::LISTUNITARYOP_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::listUnitaryOp		; returns list of recognized operators
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::PLOT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::plot, $
        over = thisOver, $		; 0 for plot, 1 for oplot.
        indexNum = thisIndexNum, $	; 0 for plot. 1, 2, etc. for oplot. 
        			; Eventually can use color code and vary the symbols 
    			; using indexNum.
        altFocus = thisAltFocus, $ 	; alternative focus (a bit naughty for a method)
        _EXTRA = extraExtra ; extra keywords (constant) passed to plot.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $		; string.
      lun=thisLun, $	; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs	 ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::REMOVE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::Remove
    
     PURPOSE:
    	Similar to IDL_container::Remove and DAVE_tagContainer::Remove.
    
    	Items in the container can be removed either by refering to their
    	position (keyword position) or passing the object itself as
    	an argument. The use of the two boolean keywords keywords 
    	/inHeader or /inData is suggested. Otehrwise, the object is removed
    	from wherever is is found.
    
    	The defintion has been extended so that tags of the form ['','','']
    	can be used instead of index positions for the optional keyword 
    	position. 
    
    	Also, the optional boolean keyword destroy has been added.
    	if /destroy is used, then the object is destroyed when it is removed.
    	This is useful if the container contains the only reference to the
    	object. 
    
    	If the boolean keyword /ifDataConstant is set, then only those objects
    	which are constant (e.g. all members of an array identical) are removed.
    	This is useful for "pruning" non-varying data.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::REMOVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro specObj::remove, $
      ; To specify what to remove, 
      ; select one of the keywords child_object, position, or all.
      child_Object, $		; Object. optional
      position = thisPosition, $	; Optional. 
      				; Tag string array ['', '', '']or index integer.
      all  = thisALL, $			; Optional.
      ;---------------------------------
      destroy = thisDestroy, $	; Boolean keyword. Optional. 
      			; Destroys objects as they are removed.
    			; Otherwise, make sure that something else does
    			; the cleanup as only the reference will be removed.
      ;------ where to remove from ----------------- 
      inHeader = thisInHeader, $	; Boolean keyword. (self.focus specifies the header.) 
      inData = thisInData, $ 	; Boolean keyword. (self.focus specifies the data.) 
      ; Alternatively, get object from self.store (one level up).
      inStore = thisInStore, $			; Boolean keyword.
      		; If used, keywords inHeader and inData  and ifDataConstant ignored
      ;----------------------- 
      errMsg = thisErrMsg, $	; String. Returns error message.
    				; Null string '' if sucessful.
      verbose = thisVerbose, $	; Complains to screen if there is a problem.
      ifDataConstant = thisIfDataConstant	; Only coded for now for a single object 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SCALEBYMONITOR,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::scaleByMonitor, $	; Returns 0/1 for failure/success
    	thisByMonitor, $ 	; Optional new value of monitor. Defaults to 1.
    	rawCounts = thisRawCounts, $	; Defaults to ['qtyObj', 'COUNTS', '*']
    	rawTime = thisRawTime, $	; Defaults to ['qtyObj', 'MIN', '*']
    	rawMonitor = thisRawMonitor, $	; Defaults to ['qtyObj', 'MONITOR', '*'] in header
    ;Old			; or ['qtyObj', 'MONITOR_append' or 
    ;Old			; ['qtyObj', 'MONITOR_ZIPPER', '*'] in data section
    	newIntensity = thisNewIntensity, $ ; Defaults to ['qtyObj', 'INTENSITY', '*']
    	newTime = thisNewTime, $		; Defaults to ['qtyObj', 'TIME', '*']
    	noReplace = thisNoReplace, $ ; Optional Boolen keyword. Don't replace 
    				; newIntensity and/or newTime if pre-exist.
            errMsg = thisErrMsg  	; Optional keyword String. Returns error message.
    				; Null string '' if sucessful.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETDAVEPTRID

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::SetDavePtrID
    
     PURPOSE:
    	Swaps the DAVE Ptr ID for the pointer to the traditional Dave 
     	data structure.
    
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETDAVEPTRID,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::SetDavePtrID, $	; Swaps the PTR ID for the DAVE data structure. 
    	newDavePtr, $		; New ID to use instead.
    	ownerDavePtr = thisownerDavePtr, $ Optional keyword. 'local' or 'main'. 
    	restore = thisRestore	; self has been restored from file and needs its
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETFIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::setField
    
     PURPOSE:
    		This method "jumps" down the heirarchical tree, to the leaf node
     	specified by the argument thisPosition (either an integer or a string "tag")
    	in the section /inHeader or /inData. If neither /inHeader or /inData
    	is specified, it looks in both areas.  
    
    	The leaf node is assumed to be an object of class qtyObj (or have
    	the same interface or inherited qtyObj). One or more of the 
    	keywords (name, units, styleErr, acisTitle, sizeString, rank, dim, tname
    	ptr_qty, qty, ptr_err, err, ptr_nerr, nerr, ptr_legend, and legend) are 
     	used to modify information about the leaf node.
    	
    	Note: ptr_qty, ptr_err, ptr_nerr and ptr_legend are "pass by reference"
    	and should be used for large data sets where efficiency is desired.
    	Make sure you don't modify the contents by accident.
    	qty, err, nerr, and legend are "pass by value".
    	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::setField, $		; Returns 0/1 for failure/success
    	; returns 0/1 from self.contents by calling qtyObj's set.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
    	thisPosition, $ ; This is the "field"
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------ where to remove from ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $			; Boolean keyword
      ;------------ qtyObj::GetString
      name = thisname, $
      units = thisunits, $
      StyleErr = thisStyleErr, $
      ;------------ qtyObj::GetDimension
      rank=thisrank, $ 		; Number of dimensions. 0 for scalar.
      				; 1 for 1-D, 2 for 2-D, etc.
      dim=thisDim, $ 		; 0, or ([#]or #?) or [#,#] or [#,#,#], etc.
      tname = thisTName, $ 		; Data type ('INT', 'FLOAT', etc.) of *(self.ptr_qty)
      ;----- qtyObj::GetValue 
      ptr_qty = thisptr_qty, $
      qty = thisqty, $
      ptr_err = thisptr_err, $		; Optional error on the values
      err = thiserr, $			; Optional error on the values
      ptr_nerr = thisptr_nerr, $		; Optional negative error on the values
      nerr = thisnerr, $			; Optional negative error on the values
      ptr_legend = thisptr_legend, $	; shares memory using the same pointer.
      legend = thislegend		; shares memory using new pointer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETFOCUS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::setFocus
    
     PURPOSE:
    	See focusObj::set and focusObj::define
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETFOCUS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::SetFocus, $
       focusObj = thisFocusObj, $
       container = thisContainer, $
       headerObj = thisHeaderObj, $
       dataObj = thisDataObj, $
       mainTitleTags = thisMainTitleTags, $	; optional.
       descripTags = thisDescripTags, $	; optional.
       DescripLegend = thisDescripLegend, $	; optional.
       cutTags = thisCutTags, $		; optional.
       xTags = thisXTags, $			; optional
       yTags = thisYTags, $			; optional
       zTags = thisZTags			; optional   
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETOWNERDAVEPTR

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::SetownerDavePtr
    
     PURPOSE:
    	Sets the ownership of the DAVE Ptr ID.
    
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETOWNERDAVEPTR,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::SetownerDavePtr, $ ; Sets the ownership of the DAVE Ptr ID.
    	newownerDavePtr		; either 'main' or 'local'.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETSTORE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::setStore
    
     PURPOSE:
    	Over-rides self.store, which is of type DAVE_tagContainer.
    	 Used by clone method.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETSTORE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::setStore, $	; returns the self.store object 
    	newContainer		; New object of type DAVE_tagContainer.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETTAGFIELD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::setTagField
    
     PURPOSE:
    		This method "jumps" down the heirarchical tree, to the leaf node
     	specified by the argument thisPosition (either an integer or a string "tag")
    	in the section /inHeader or /inData. If neither /inHeader or /inData
    	is specified, it looks in both areas.  
    
    	This routine modifies information in the "tag" object associated with
    	the specified leaf node. This information is intended for 
    	assisting with the user-interface.One or more of the 
    	keywords (class, label, codeSource, tags, hide, editable, annotate,
    	and pendent) are used to return 
    	information about the leaf node's tag object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETTAGFIELD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::setTagField, $	; Returns 0/1 for failure/success
    	; returns 0/1 success/failure from self.contents by calling tagObj's set.
    	;----- use argument position for indices or
    	;  by tag ['blahClass', 'blahName', 'blahCodeSource']--
    	thisPosition, $				 ; This is the "field"
    		; Integer scalar or Int Array. zero-based indices of the positions 
    	 	; or  String scalar or array of the tags.
      ;------ where to remove from ----------------- 
      inHeader = thisInHeader, $		; Boolean keyword
      inData = thisInData, $		; Boolean keyword
      ;----------------------- 
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $	;; Boolean. /annotate is OK.
    	pendent = thisPendent		;; Will be C: constant, D: dependent, I: independent
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SETWID,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::setWID, $ 
    	thisWID			; Widget ID associated with this object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj::show, $		; By default, everything.
      lun=thisLun, $ ; Optionally, write to a file. If absent, to screen
      recursive = thisRecursive, $	;  Boolean keyword. Show all levels
      focus = thisFocus, $		; Only the focus, etc.
      heapNum = thisHeapNum		; Show the heap number via HELP
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::SUM,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::sum, $		; Returns 0/1 for failure/success
    		; Adds together "raw counts" field of several data objects
    	appendages, $			; Array of specObj.
    	depField = thisdepField, $	; Optional keyword. Ignored.
    	noTreatmentHistory = thisNoTreatmentHistory, $
    	errMsg = thisErrMsg, $		; Optional error message string.
    	rawCounts = thisRawCounts, $	; Defaults to ['qtyObj', 'COUNTS', '*']
    	rawTime = thisRawTime, $	; Defaults to ['qtyObj', 'MIN', '*']
    	rawMonitor = thisRawMonitor, $	; Defaults to ['qtyObj', 'MONITOR', '*'] in header
            usingGroupLeader = thisUsingGroupLeader ; IGNORED
    ;	usingGUI = thisUsingGUI		; IGNORED keyword_set(thisUsingGUI) for now
    	
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::UNITARYOP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::UnitaryOp, $	; returns 0/1 for failure/success
    	; Operates upon item stored at field1 using qtyObj__unitaryOp.
    	thisOp, $			;  '-', 'cos', 'sin', 'exp', 'alog'
    	;-----------------------------------------
    	tags1 = thistags1, $	; initial value. Text array ['','',''] or float.
    	from1 = thisFrom1, $	; 'header', 'data', 'input'
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;---------------------------------------
    	resTags = thisTags, $	; new tags. If not present, use tags1 modified.
    	codeSource = thisCodeSource, $ ; Optional codesource for tag.
      	inHeader = thisinHeader,$	; Where place the  results
    	inData = thisInData, $	; where place the results
    	;-------------------------------------------------
    	estimate = thisEstimate	; Estimate the errors if operator not recognized
    	;----------------------------------------------
    ;	verbose = thisVerbose
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::UNITARYOP_OLD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::UnitaryOp_old, $	; returns 0/1 for failure/success
    	; Operates upon item stored at field1.
    	thisOp, $			;  '-', 'cos', 'sin', 'exp', 'alog'
    	;-----------------------------------------
    	tags1 = thistags1, $	; initial value. Text array ['','',''] or float.
    	from1 = thisFrom1, $	; 'header', 'data', 'input'
    	;------------------------
    	; If name, units or legend are not provided, they are taken from tags1.
    	name = thisName, $	; Name of results
    	units = thisUnits, $	; units for results
    	legend = thisLegend, $	; legend for new results
    	;---------------------------------------
    	resTags = thisTags, $	; new tags. If not present, use tags1 modified.
    	codeSource = thisCodeSource, $ ; Optional codesource for tag.
      	inHeader = thisinHeader,$	; Where place the  results
    	inData = thisInData, $	; where place the results
    	;-------------------------------------------------
    	estimate = thisEstimate	; Estimate the errors if operator not recognized
    	;----------------------------------------------
    ;	verbose = thisVerbose
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::UPDATEDAVEPTR

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	specObj::updateDavePtr
    
     PURPOSE:
    	Modifies the DAVE pointer in .davePtr to reflect the 
    	current focus. Returns 0/1 for failure/success.
    
     	The specObj class has a pointer to a DAVE data structure: self.davePtr
    	The DAVE data contains a "specific" pointer to anonymous structure,
    	which includes an object of class specObj. This is a circular 
    	data structure that allows you to either handle the data as
    	a traditional DAVE data strucutre or as a object-oriented specObj object.
    	Think of it as Dr. Jekyll and Mr. Hyde.
    
    	See also specObj::getDavePtr, initDavePtr
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::UPDATEDAVEPTR,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function specObj::updateDavePtr, $	; Returns 0/1 for failure/success.
     	sort = thisSort			; Sorts "x" axis and "y" axis in the focus if set.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ::ZIP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function specObj::zip, $		; Returns 0/1 for failure/success
    	appendages, $			; Array of specObj.
    	noTreatmentHistory = thisNoTreatmentHistory, $
    	depField = thisdepField, $		; Optional keyword. 
    					; Only sets the 'Y' focus 
            usingGroupLeader = thisUsingGroupLeader, $; IGNORED
    ;	usingGUI = thisUsingGUI, $	; IGNORED keyword_set(thisUsingGUI) for now
    	errMsg = thisErrMsg		; Optional error message string.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ_EXAMPLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           specObj_example
    
     PURPOSE:
    
    	To test the class specObj.
    	IDL> specobj_example, 1			(1-7, 9,10, 33)
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     MODIFICATION HISTORY:
    
           Written by Tanya Riseman, Spring, 2003.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj_example.pro)


    SPECOBJ_EXAMPLE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj_example, $ 
    	whichExample, $		; Integer (1-7, 9,10, 33). 0 means all
    	whichFile		; a,b,c, for example 10
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj_example.pro)


    SPECOBJ__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj__define
    
      infolabel = "specObj__define >> "  
      define = {specObj, $
      	store: obj_new(), $	; class DAVE_tagContainer
    	focus: obj_new(), $	; class focusObj 
    	davePtr: ptr_new(), $ ; DAVE pointer, including this object in specificPtr.
    	ownerDavePtr: '', $	; string with either 'local' or 'main' (from DAVE program) 
    	wID: 0L $ 		; Widget ID associated with this object.
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPECOBJ__SAVE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro specObj__save, $. 		; "Friend" function, using IDL save
       oSpec, $			; object of class SpecObj
       file = thisFile		; Defaults to 'oSpec.osp'
    ;\
    
      infolabel = "specObj__save >> "  
    
      if (n_elements(thisFile) eq 0) then begin
        thisFile = 'oSpec.osp'
        print,  infolabel, $
        	' No file keyword provided. Writing to oSpec.osp.'
      endif
    
      save, oSpec, file=thisFile
      
    end
    
    ;================================================================================
    ;*
    pro specObj__restore, $ 	; "Friend" function, using IDL restore
       oSpec, $			; object of class SpecObj
       file = thisFile, $		; Defaults to 'oSpec.osp'
       verbose=thisVerbose
    ;\
    
      infolabel = "specObj__restore >> "
    
      if (n_elements(thisFile) eq 0) then begin
    ;    print,  infolabel, $
    ;    	' No file keyword provided. Writing to daveptr.dave.'
        filename = 'oSpec.osp'
      endif else begin
        filename = thisFile
      endelse
      
      restore, filename, verbose=thisVerbose
    
    end
    
    ;================================================================================
    ;*
    function specObj::textInfo, $ 	; Returns a string array
    				; By default, /geteverything.
      ;----------- Requires one of the following two --------------
      inFocus = thisInFocus, $
      inHeader = thisInHeader, $
      inData = thisInData, $
      ;-----------------------------------------------
      position = thisPosition, $	; Optionally only ask for one item in the 
      		; Header or in data (not focus).
          ; Either integer position or tags position ['class', 'label', 'codeSource']
      ; ------------- Select one of the 3 following keywords. --------------
      getSome=thisGetSome, $; Boolean keyword.
      			; 1 line summary of one qtyObj Object. No vectorvalues.
      getAll=thisGetAll, $  ; Bolean keyword
      			; 1 line summary of one qtyObj Object
      getEverything=thisGetEverything, $	; Boolean keyword
      		; String array containing all contents of one qtyObjObObject
      showTags = thisShowTags, $
      showAnnotations = thisShowAnnotations, $
      showPendent = thisShowPendent, $
      onlyAnnotations = thisOnlyAnnotations
    

    (See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)


    SPLITTAGS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	splitTags
    
     PURPOSE:
    	Helper function for tagObj class.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    SPLITTAGS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function splitTags, $		; Returns 0/1 for failure/success
    	class = thisClass, $		; OUTPUT. string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; OUTPUT. string "Counts"
    	codeSource = thisCodeSource, $	; OUTPUT. string "ICP", "PAN"
    	tags = thisTags		;; INPUT.string array of class, label, codeSource.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    STRARRAY_SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro strArray_show,  thisStrArray, $
    	lun=thisLun, $	; Optionally, write to a file. If absent, to screen
    	full=ThisFull
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    STRUCTURE_CLEANUP,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     pro structure_cleanup, $ ; Destroys a struture that is pointered to by specPtr
       specPtr,$
       lun = thisLun, $	; Optionally, write to a file. If absent, to screen
       derefSpecific = thisDerefSpecific, $	;Boolean keyword. Default is destroy obj.
       verbose = thisVerbose, $
       skipSpecObj = thisSkipSpecObj
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    STRUCTURE_SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro structure_show,  $
    	thisRec, $	; a structure
    	theName, $	; string name of variable
    	lun=thisLun, $	; Optionally, write to a file. If absent, to screen
    	partial=ThisPartial, $
    	full=ThisFull
    

    (See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)


    TAGOBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
            tagObj
    
     PURPOSE:
    
    	 tagObj is a "helper" object used by the container class 
     DAVE_tagContainer. In DAVE_tagContainer, items can be referred to by a 
     "tag" string as an alternative to a positition integer.
     
    	Note: In IDL, classes using inheritance basically construct
     one huge structure including all the data. The inherited methods
     have access to ALL of the data in the structure, not just the parts that
     are relevent to the inherited class. Therefore it is best to use these
     generic code fragements for methods ::print_obj and ::help_obj
     ONLY FOR THE TOP MOST CLASS which has inherited classes.
    
     I have found that it is preferable to make a container class
     DAVE_tagContainer with basically two trees in parallel,
     one for the basic "data" using the class qtyObj and 
     another for I/O and GUI issues using the class tagObj.
     This is specifically to avoid creating a new class which inherits
     qtyObj and tagObj. This has several purposes:
     	1. Avoid confusion by avoiding mixing the "pure" data and how the
    	   application manages it. 
    	2. Avoid as much as possible the use of EXTRA keywords parameters.
    	   Use the same methods and keywords as much as possible
    	   for different classes instead and use them explicitly.
    	   EXTRA and EXTRA_REF can not be mixed!
    	3. Previously, I had problems with infinite loops in
     	   GUIs from calling get/set with inherited keywords 
    	   in complex inherited classes. This would occur when a 
    	   typo created too few valid keywords. Then some sub-classes methods
    	   would be called with no valid keywords. 
    
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
           Objects. DAVE application programming.
    
     OBJECT DEFINTION
    	TAGOBJ__DEFINE_arguments
    
    Class DAVE_TAGCONTAINER has 7 tags of type: 
    self.(0) =      self.CLASS=     	string
    self.(1) =      self.LABEL=     	string
    self.(2) =      self.CODESOURCE=       string
    self.(3) =      self.HIDEMASK=         int (really Boolean)
    self.(4) =      self.EDITABLEMASK=     int (really Boolean)
    self.(5) =      self.ANNOTATEMASK=     int (really Boolean)
    self.(6) =      self.PENDENT=   	string
    
    	The first three taken together [self.class, self.label, self.codeSource]
     act as a string labels for the contents of the container class
     DAVE_tagContainer. 
    
     	Self.hideMask is intended to mark the item in DAVE_tagContainer
     as "hidden", so it is not shown in a GUI. Not developed yet.
    
     	Self.editableMask is intended to mark the item in DAVE_tagContainer
     as "editable", so that the user is allowed to edit it in a GUI. 
     Not developed yet.
    
     	Self.annotate is intended to mark the item in DAVE_tagContainer
     as "annotation", so that if user or software marks it TRUE, that the 
     correpsonding information in the DAVE_tagContainer
     appears as a footnote or annotation on the bottom of plots, when 
     printed out. Goal: to have enough info on printouts, that 
     the analysis can be reconstructed.
     Not implimented fully yet.
    
     Key methods: 
    	Since this is a "helper" class for DAVE_tagContainer,
     there are no "key" external use methods.
     
     OTHER FILES AND ROUTINES USED: none?
    
     INCLUDE FILES:
    	GENERIC__HELCLASS_FRAG.PRO
    	GENERIC__HELP_OBJ_FRAG.PRO
    	GENERIC__PRINT_FRAG.PRO
    
     EXAMPLE
    	...
    
     MODIFICATION HISTORY:
    	Tanya Riseman, Spring, 2003. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::CLEANUP

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::cleanup
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::CLONE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::clone
    
     PURPOSE:
    	Copy the object into another object
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::CLONE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::clone		; Returns an object owhcih is a copy of self
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::COUNT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::count
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::COUNT_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::count			; Returns the number of contents (1, trivially)
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::GET

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::get
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::GET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::Get, $			; Returns 0/1 for failure/success
      	argPresent = thisArgPresent, $; ARG_PRESENT() function does not work on 
       		;propagated keywords from other calling routines.
    		; Needed for get* methods.
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $	;; Boolean. /annotate is OK.
    	pendent = thisPendent, $	;; Will be C: constant, D: dependent, I: independent
    	everything = thisEverything
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::HELPCLASS

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::helpclass
    
     PURPOSE:
    	Helper method for tagObj::help_obj. Not for external use.
    	Uses @generic__helpClass_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::HELPCLASS,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj::helpClass, $
       helpProStr=helpProStr, $
       helpFuncStr=helpFuncStr, $
       class=thisClass, $
       level=level, $
       lun=thisLun 	; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::HELP_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::help_obj
    
     PURPOSE:
    	Prints to the screen or file unit number 
     1. The types of the data member of the object 
     2. All the methods associated with the object
     3. All the arguments and keywords associated with the object.
    
    	Uses @generic__help_obj_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::HELP_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj::help_obj, $
      methodsOnly=methodsOnly,  $	; Ignore. Keyword only used by recursion call
      helpProStr=helpProStr, $	; Ignore. Keyword only used by recursion call
      helpFuncStr=helpFuncStr, $	; Ignore. Keyword only used by recursion call
      class=thisClass, $		; Ignore. Keyword only used by recursion call
      level=level, $		; Ignore. Keyword only used by recursion call
      lun=thisLun 			; Optionally, write to a file. If absent, to screen
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::INIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::init
    
     PURPOSE:
    	Initialize the object.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::INIT,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::init, $		; Returns 0/1 for failure/success
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $		;; Boolean. /annotate is OK.
    	pendent = thisPendent		;; Will be C: constant, D: dependent, I: independent
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISANNOTATED

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::isAnnotated
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISANNOTATED_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::isAnnotated		; Returns 0/1 for true/false
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISEDITABLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::isEditable	
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISEDITABLE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::isEditable		; Returns 0/1 for true/false
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISHIDDEN

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::isHidden
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::ISHIDDEN_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::isHidden		; Returns 0/1 for true/false
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::MATCH

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::match
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::MATCH,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::match, $		; Returns 0/1 for no match/match
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags		;; string array of class, label, codeSource.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::PRINT_OBJ

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::print_obj
    
     PURPOSE:
    	Prints to the screen or file unit number the contents of the object.
     	Uses @generic__print_frag.pro.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::PRINT_OBJ,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj::print_obj, $
      ; ThisField is parameter with name of object struct's desired tag.
      ; Only the data associated with the tag is printed, if present.
      thisField, $		; string.
      lun=thisLun, $	; Optionally, write to a file. If absent, to screen
      alsoPtrs=alsoPtrs	 ; Optionally print contents of pointers.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::SET

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::set
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::SET,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function tagObj::Set, $			; Returns 0/1 for failure/success
    	class = thisClass, $		; string "DVHeader", "DVData", "qtyObj"
    	label = thisLabel, $		; string "Counts"
    	codeSource = thisCodeSource, $	;; string "ICP", "PAN"
    	tags = thisTags, $		;; string array of class, label, codeSource.
    	hide = thisHide, $		;; Boolean. /hide is OK.
    	editable = thisEditable, $	;; Boolean. /editable is OK.
    	annotate = thisAnnotate, $		;; Boolean. /annotate is OK.
    	pendent = thisPendent		;; Will be C: constant, D: dependent, I: independent
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::SHOW

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
     	tagObj::show
    
     PURPOSE:
    	The usual. 
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ::SHOW,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj::show, $
      	lun=thisLun, $ ; Optionally, write to a file. If absent, to screen
    	prefix = thisPrefix, $
    	level = thisLevel, $		; how deep in tree
    	ignoreHide = thisIgnoreHide, $ 
    	showObj = thisShowObj, $	; Boolean Keyword. ignore
    	recursive = thisRecursive, $	;; ignore. . End of the tree here.
      	heapNum = thisHeapNum		;  ignore. End of the tree here.
    		; This is a leaf-style node, so ignore keywords like
    		; "/showObj" and "/recursive". It's the end of the road.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TAGOBJ_EXAMPLE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           tagObj_example
    
     PURPOSE:
    
    	To test the class tagObj.
    	IDL> tagobj_example
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     MODIFICATION HISTORY:
    
           Written by Tanya Riseman, Spring, 2003.
    
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj_example.pro)


    TAGOBJ_EXAMPLE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj_example, $
    	whichexample		; Integer for which example. 0 means all
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj_example.pro)


    TAGOBJ__DEFINE_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro tagObj__define
      define = {tagObj, $
    	class: '', $		; type string. "DVHeader", DVData", "qtyObj"
    	label: '', $		; type string. Short name
    	codeSource: '', $	; type string. "ICP", "FANS", "PAN", etc.
    	hideMask: 0, $		' Integer boolean. Hide from user the portion	
    				; in .contents.
    	editableMask: 0, $	; Integer boolean. In GUI allowed to modify 
    				; the portion in .contents.
    	annotateMask: 0,  $	; Integer boolean. Store to ASCII file or print
    				; bottom of a plot information marked annotate
    	pendent: '' $	;Will be C: constant, D: dependent, I: independent 
    	}
    

    (See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)


    TRIASUBS_CALCTHETARAD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_calcThetaRad
    
     PURPOSE:
    
    ;;      subroutine calctheta(x,y,theta) from file transform.f
    C     Find the angle theta from the +x-axis to vector
    C     xi + yj over a range of -pi to pi (an extended
    C     inverse trig function)
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_calcthetarad.pro)


    TRIASUBS_CALCTHETARAD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function triasubs_calcThetaRad, $	; returns angle theta
    	x,  $				; cartesian x coord
    	y				; cartesian y coord
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_calcthetarad.pro)


    TRIASUBS_GENERATEB

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_generateb
    
     PURPOSE:
    
    ;;      subroutine generateb(a,aa,b,c,BB) from file generate.f
    C     Transformation taken from Acta. Cryst. (1967) 22, 457-464
    C     by William R. Busing and Henri A. Levy.
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_generateb.pro)


    TRIASUBS_GENERATEB,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
     function triasubs_generateb, $		; returns 0/1 for failure/success
       vec_dim, $	; 3-vector with units of Inverse Angstroms
       vec_angle, $	;  3-vector with units of degrees
       denom, $		; Norm?	Value updated. Used as relcircsize by spurion.
       bmat		; transformation matrix
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_generateb.pro)


    TRIASUBS_IJK

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_ijk
    
     PURPOSE:
    
     Cycle the indices (0, 1, 2) 
    ;;      subroutine ijk(i,j,k) from file generate.f
    ;;      subroutine calctheta(x,y,theta) from file transform.f
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_ijk.pro)


    TRIASUBS_IJK,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro triasubs_ijk, $		; Cycle the indices (0, 1, 2) 
    	i, j, k 		; The indices
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_ijk.pro)


    TRIASUBS_IRREDUC

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_irreduc
    
     PURPOSE:
    
     Based on subroutine irreduc(u,v,uirr,virr) in spurion file calclattice.f
    C  generate irreducible pair of vectors uirr,virr as close
    C  to right angles as possible that are still in the
    C  same plane as u and v
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_irreduc.pro)


    TRIASUBS_IRREDUC,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro triasubs_irreduc, $
    	uin, vin, $		; input vectors
    	uirr, virr		; output vectors, which are irreducible.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_irreduc.pro)


    TRIASUBS_LCD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_lcd
    
     PURPOSE:
    
     Based on subroutine lcd(u,v,uirr,virr) in spurion file calclattice.f
    C  Find the lowest common denominator fac in the 3-vector uirr.
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_lcd.pro)


    TRIASUBS_REMOVE_LCD

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_remove_lcd
    
     PURPOSE:
    
     Based on subroutine mult(x,y,a,b) in spurion file calclattice.f
    C find the solution to ax+by=0
    C with no common factor between a and b
     Return 0 if indeterminant, 1 if OK.
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_remove_lcd.pro)


    TRIASUBS_REMOVE_LCD,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function triasubs_remove_lcd,  $	; Return 0 if indeterminant, 1 if OK.
    	x, y, a, b
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_remove_lcd.pro)


    TRIASUBS_ROTATE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_rotate
    
     PURPOSE:
    
    ;;      subroutine rotate(theta,i,r) from file transform.f
    C     Generates the passive transformation matrix for a 
    C     counterclockwise rotation of the axes by theta radians 
    C     about the i-th axis.
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_rotate.pro)


    TRIASUBS_ROTATE,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    function triasubs_rotate, $	; Returns the rotation matrix
    	thetaRad, $		; angle in radians
    	i 			; ith axis
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_rotate.pro)


    TRIASUBS_TRANSFORM

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           triasubs_transform
    
     PURPOSE:
    
    ;;      subroutine transform(ui,vi,bmat,u3,v3,b1mat) from file transform.f
    
     	Based on Fortran routines used by spurion program.
    	These routines are used by func_icp_header_init and func_icp_data_init.
    
    .........................................................................
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
                   NIST Center for Neutron Research
           100 Bureau Drive
                   Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     SEE ALSO:
    	
  • FUNC_ICP_DATA_INIT
  • FUNC_ICP_HEADER_INIT MODIFICATION HISTORY: Written by Tanya Riseman, Dec 18, 2002. Split func_icp_subs.pro into separate files. TMR. Aug 1, 2003
  • (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_transform.pro)


    TRIASUBS_TRANSFORM,_arguments

    [Previous Routine] [Next Routine] [List of Routines]
    pro triasubs_transform, $
    	ui,vi,$
    	bmat, $
    	u3,v3, $
    	b1mat
    

    (See /home/tanya/idl/dave/programs/tas/specobj/triasubs_transform.pro)


    WHATSIT

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
          whatsIt
    
     PURPOSE:
     	 Returns string with contents of variable thingy.
     	If a pointer or an OBJECT, return something indicating the size of the contents, 
    	 but not the contents.
    
    	Used by qtyObj__define.pro
    
     AUTHOR:
    
           Tanya M. Riseman, Ph.D.
           NIST Center for Neutron Research
           100 Bureau Drive
           Gaithersburg, MD 20899
           Phone: (301) 975-8379
           E-mail: tanya.riseman@nist.gov
    
     CATEGORY:
    
    	DAVE utility programming.
    
     OTHER FILES AND ROUTINES USED: 
    	format_size
     	Objects are assumed to have the following method:
    	     OK= thingy->get(ptr_qty= thisPtr_qty, tname=thistname)
    
     EXAMPLE
    
     MODIFICATION HISTORY:
    	Created Spring, 2003. Tanya Riseman
    
    	BUILD can not resolve this properly, due to it being late in the
    	alphabet. Rename whatsIt to AAA_whatsIt. TMR. Aug 1st, 2003.
    	
    	Changed file name from AAA_whatsIt.pro to whatits.pro. TMR. Aug 6, 2003.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/whatsit.pro)


    WHATSIT,_arguments

    [Previous Routine] [List of Routines]
    function whatsIt, $	; returns a string with contents of the variable thingy.
    	thingy		; The variable to probe.
    

    (See /home/tanya/idl/dave/programs/tas/specobj/whatsit.pro)