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.
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
(See /home/tanya/idl/dave/programs/tas/specobj/AAA_readme.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/check_heap.pro)
pro check_heap, $ skip_help=thisSkip_help
(See /home/tanya/idl/dave/programs/tas/specobj/check_heap.pro)
NAME: combineTags PURPOSE: Helper function for tagObj class.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/junk.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)
pro cw_ow_binaryOp::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)
pro cw_ow_binaryOp::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)
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)
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)
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)
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)
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)
pro cw_ow_binaryOp_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_binaryop.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)
pro cw_ow_clone::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)
pro cw_ow_clone::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)
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)
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)
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)
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)
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)
pro cw_ow_clone_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_clone.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
pro cw_ow_constBkgd::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
pro cw_ow_constBkgd::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
pro cw_ow_constBkgd::freshenResults
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
pro cw_ow_constBkgd::FreshenWhere, $ inHeader = thisInHeader, $ inData = thisInData
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
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)
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)
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)
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)
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)
pro cw_ow_constBkgd_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_constbkgd.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
pro cw_ow_fastBkgd::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
pro cw_ow_fastBkgd::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
pro cw_ow_fastBkgd::freshenResults
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
pro cw_ow_fastBkgd::FreshenWhere, $ inHeader = thisInHeader, $ inData = thisInData
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
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)
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)
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)
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)
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)
pro cw_ow_fastBkgd_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_fastbkgd.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)
function cw_ow_oper::count
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)
pro cw_ow_oper::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)
pro cw_ow_oper::getProperty, $ oper = thisOper ; return the operator selected
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)
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)
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)
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)
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)
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)
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)
pro cw_ow_oper_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_oper.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)
pro cw_ow_remove::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)
pro cw_ow_remove::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)
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)
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)
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)
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)
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)
pro cw_ow_remove_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_remove.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
function cw_ow_result::count
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
pro cw_ow_result::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
pro cw_ow_result::getProperty, $ label = thisLabel, $ name = thisName, $ units = thisUnits
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
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)
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)
function cw_ow_result::init, $ thisParentID ; optional
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
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)
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)
pro cw_ow_result::setProperty, $ label = thisLabel, $ name = thisName, $ units = thisUnits
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)
function cw_ow_resultValue::count
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)
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)
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)
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)
function cw_ow_resultValue::init, $ thisParentID ; optional
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)
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)
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)
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)
pro cw_ow_resultValue_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resultvalue.pro)
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)
pro cw_ow_result_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_result.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
pro cw_ow_resVol::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
pro cw_ow_resVol::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
pro cw_ow_resVol::freshenResults
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
pro cw_ow_resVol::FreshenWhere, $ inHeader = thisInHeader, $ inData = thisInData
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
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)
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)
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)
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)
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)
pro cw_ow_resVol_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_resvol.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)
pro cw_ow_scalebymonitor::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)
pro cw_ow_scalebymonitor::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)
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)
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)
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)
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)
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)
pro cw_ow_scalebymonitor_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_scalebymonitor.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)
pro cw_ow_setString::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)
pro cw_ow_setString::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)
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)
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)
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)
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)
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)
pro cw_ow_setString_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setstring.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)
pro cw_ow_setValue::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)
pro cw_ow_setValue::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)
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)
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)
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)
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)
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)
pro cw_ow_setValue_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_setvalue.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)
pro cw_ow_unitaryOp::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)
pro cw_ow_unitaryOp::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)
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)
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)
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)
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)
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)
pro cw_ow_unitaryOp_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_unitaryop.pro)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)
pro cw_ow_where::event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)
pro cw_ow_where::freshenWhere, $ inHeader = thisInHeader, $ inData = thisInData
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)
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)
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)
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)
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)
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)
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)
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)
pro cw_ow_where_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/cw_ow_where.pro)
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)
pro davePtr_addTreatment, thisDavePtr,$ strArray
(See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)
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)
function DavePtr_containsSpecObj, $ ; returns 0/1 for false/true DavePtr, $ errMsg = thisErrMsg
(See /home/tanya/idl/dave/programs/tas/specobj/daveptr_utils.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/davesave.pro)
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
(See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
function DAVE_tagContainer::clone
(See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)
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)
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)
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)
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)
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)
function DAVE_tagContainer::Count ; Returns integer. ; Returns # of objects in container.
(See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
function DAVE_tagContainer::init
(See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)
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)
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)
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)
pro DAVE_tagContainer::linkTags, $ thisMyTagObj ; object of class tagObj.
(See /home/tanya/idl/dave/programs/tas/specobj/dave_tagcontainer__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro DAVE_tagContainer_example, $ whichexample ; Integer between 1-6. 0 means all
(See /home/tanya/idl/dave/programs/tas/specobj/DAVE_tagContainer_example.pro)
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)
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)
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)
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)
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)
pro dialog_ow_menu::freshen, $ text=thisText
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)
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)
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)
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)
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)
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)
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)
pro dialog_ow_menu_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_menu.pro)
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)
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)
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)
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)
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)
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)
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)
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)
pro dialog_ow_selectFileType_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_selectfiletype.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro dialog_ow_tabICP_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabicp.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro dialog_ow_tabmodify_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_tabmodify.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro dialog_ow_textInfo_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_textinfo.pro)
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)
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)
pro dialog_ow_where::eventProcess, event=event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro dialog_ow_where_event, $ event
(See /home/tanya/idl/dave/programs/tas/specobj/dialog_ow_where.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
function focusObj::count ; Returns integer value of 1 always.
(See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
function focusObj::makeCutString ; returns a string
(See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)
function focusObj::makeDescripString ; Returns a string
(See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)
function focusObj::makeMainTitleString ; Returns a string
(See /home/tanya/idl/dave/programs/tas/specobj/focusobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/func_icp_data_init.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/func_icp_header_init.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/func_icp_make_resvolume.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/func_icp_subs.pro)
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)
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)
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)
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)
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)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/launchspecobj.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/launchspyspecobj.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/launch_davesave.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
function qtyObj::biggestDim ; Returns integer with the largest dimension of multi-minensional data.
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
pro qtyObj::Cleanup
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
function qtyObj::clone ; Returns an object which is a copy of self
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
function qtyObj::count ; Returns integer with n_elements(*(self.ptr_qty))
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
NAME: qtyObj::getDimension PURPOSE: Helper method for qtyObj::get.
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
NAME: qtyObj::getString PURPOSE: Helper method for qtyObj::get.
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
function qtyObj::isConstant ; returns 0/1 for TRUE/FALSE
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
function qtyObj::isNumeric ; Returns 0/1 for TRUE/FALSE
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
function qtyObj::isScalar ; Returns 0/1 for TRUE/FALSE
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME: qtyObj::setString PURPOSE: Helper method for qtyObj::set.
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
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)
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)
pro qtyObj_example, $ whichexample ; Integer (1 - 12, 22). 0 means all
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj_example.pro)
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)
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)
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)
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)
function qtyObj__listBinaryOp ; returns list of recognized operators
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
function qtyObj__listUnitaryOp ; returns list of recognized operators
(See /home/tanya/idl/dave/programs/tas/specobj/qtyobj__define.pro)
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)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/reducespecobj.pro)
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)
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)
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)
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
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
pro specObj::Cleanup ; , $ ; skipDavePtr = thisSkipDavePtr ; Soon to be obsolete
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
function specObj::clone ; Returns a copy of self
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
function specObj::GetDavePtr ; returns pointer to the DAVE data structure.
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
NAME: specObj::getFocus PURPOSE: See focusObj::get and focusObj::define
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
function specObj::GetStore ; returns the self.store object
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
function specObj::getWID ; Returns widget ID associated with this object.
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
NAME: specObj::init PURPOSE: Initialize the object.
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
function specObj::listUnitaryOp ; returns list of recognized operators
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME: specObj::setFocus PURPOSE: See focusObj::set and focusObj::define
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
NAME: specObj::SetownerDavePtr PURPOSE: Sets the ownership of the DAVE Ptr ID.
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
pro specObj::setWID, $ thisWID ; Widget ID associated with this object.
(See /home/tanya/idl/dave/programs/tas/specobj/specobj__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME: splitTags PURPOSE: Helper function for tagObj class.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
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)
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)
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)
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)
NAME: tagObj::cleanup PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::clone PURPOSE: Copy the object into another object
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
function tagObj::clone ; Returns an object owhcih is a copy of self
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::count PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
function tagObj::count ; Returns the number of contents (1, trivially)
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::get PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
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)
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)
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)
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)
NAME: tagObj::init PURPOSE: Initialize the object.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
NAME: tagObj::isAnnotated PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
function tagObj::isAnnotated ; Returns 0/1 for true/false
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::isEditable PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
function tagObj::isEditable ; Returns 0/1 for true/false
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::isHidden PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
function tagObj::isHidden ; Returns 0/1 for true/false
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
NAME: tagObj::match PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
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)
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)
NAME: tagObj::set PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
NAME: tagObj::show PURPOSE: The usual.
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj__define.pro)
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)
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)
pro tagObj_example, $ whichexample ; Integer for which example. 0 means all
(See /home/tanya/idl/dave/programs/tas/specobj/tagobj_example.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_calcthetarad.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_generateb.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_ijk.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_irreduc.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_lcd.pro)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_remove_lcd.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_rotate.pro)
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)
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:
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_transform.pro)
pro triasubs_transform, $ ui,vi,$ bmat, $ u3,v3, $ b1mat
(See /home/tanya/idl/dave/programs/tas/specobj/triasubs_transform.pro)
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)
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)