This page was created by the IDL library routine
mk_html_help
. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Thu Apr 18 11:52:38 2013.
NAME: EPICS_MED::ACQUIRE_OFF PURPOSE: This procedures turns off acquisition of the detector array. CATEGORY: EPICS device class library. CALLING SEQUENCE: epics_med->ACQUIRE_OFF EXAMPLE: med = obj_new('EPICS_MED', '13IDC:med1') med->ACQUIRE_OFF PROCEDURE: This procedure stops the MED by sending the appropriate command to the EPICS database. For efficiency it does not call EPICS_MCA::ACQUIRE_OFF for each EPICS_MCA in the EPICS_MED. MODIFICATION HISTORY: Written by: Mark Rivers, February 13, 1998 Dec. 1, 1999 MLR changed to write 0 to .start rather than 1 to .stop Apr. 5, 2000 MLR changed back, write 1 to .stop rather than 0 to .start
(See epics_med__define.pro)
NAME: EPICS_MED::ACQUIRE_ON PURPOSE: This procedure turns on acquisition of the detector array. CATEGORY: EPICS device class library. CALLING SEQUENCE: epics_med->ACQUIRE_ON KEYWORD PARAMETERS: ERASE: Set this keyword to erase the data before starting acquisition PROCEDURE: This procedure starts the MED by sending the appropriate command to the EPICS database. For efficiency it does not call EPICS_MCA::ACQUIRE_ON for each EPICS_MCA in the EPICS_MED. EXAMPLE: med = obj_new('EPICS_MED', '13IDC:med1') med->ACQUIRE_ON MODIFICATION HISTORY: Written by: Mark Rivers, February 13, 1998
(See epics_med__define.pro)
NAME: EPICS_MED::ACQUIRE_WAIT PURPOSE: This procedures waits for acquisition of the detector array to complete. CATEGORY: EPICS device class library. CALLING SEQUENCE: epics_med->ACQUIRE_WAIT, Time KEYWORD_PARAMETERS: START: Set this flag to wait for acquisition to start. STOP: Set this flag to wait for acquisition to stop. This is the default. If both the START and STOP keywords are given then the routine will wait first for acquisition to start and then for acquistion to stop. If only /START is given then it will not wait for acquisition to stop. OPTIONAL INPUTS: Time: The estimated acquisition time of the MED. PROCEDURE: This routine simply polls to see if acquisition is complete using EPICS_MED::GET_ACQUIRE_STATUS(). If the optional Time input is specified then the time between polling is Time/10. The default and minimum time between polling is one second. EXAMPLE: med = obj_new('EPICS_MED', '13IDC:med1') med->ACQUIRE_ON med->ACQUIRE_WAIT MODIFICATION HISTORY: Written by: Mark Rivers, February 13, 1998 Dec. 2, 1999 Added START keyword MLR 18-Nov-2003 Added STOP keyword
(See epics_med__define.pro)
NAME: EPICS_MED::COPY_ROIS PURPOSE: This procedure copies the ROIs defined for one detector to all of the other detectors CATEGORY: EPICS device class library. CALLING SEQUENCE: med->COPY_ROIS, Detector PROCEDURE: This function simply converts from detector numbers as seen by the used (1-N, including bad elements) to the index in the MCA object array in the MED. It then calls MED::COPY_ROIS. ADDITIONAL INFORMATION: See MCA::SET_ROIS. MODIFICATION HISTORY: Written by: Mark Rivers, Sept. 25, 1998
(See epics_med__define.pro)
NAME: EPICS_MED::ERASE PURPOSE: This procedures erases the array data, i.e. sets all channels of each detector to zero. CATEGORY: EPICS device class library. CALLING SEQUENCE: epics_med->ERASE PROCEDURE: This procedure erases the MED by sending the appropriate command to the EPICS database. For efficiency it does not call EPICS_MCA::ERASE for each EPICS_MCA in the EPICS_MED. EXAMPLE: med = obj_new('EPICS_MED', '13IDC:med1') med->ERASE MODIFICATION HISTORY: Written by: Mark Rivers, October 1, 1997
(See epics_med__define.pro)
NAME: EPICS_MED::GET_ACQUIRE_STATUS PURPOSE: This function returns the acquisition status for the MED. This is 1 if the MED is acquiring and 0 if it is not acquiring. CATEGORY: EPICS device class library. CALLING SEQUENCE: Result = epics_med->GET_ACQUIRE_STATUS() KEYWORD PARAMETERS: UPDATE: Set this keyword to update the acquisition status. By default this routine does NOT do this. PROCEDURE: This function reads the acquisition status from the hardware using the EPICS database.
(See epics_med__define.pro)
NAME: EPICS_MED::GET_DATA PURPOSE: This function returns the data from the each MCA in the EPICS_MED. CATEGORY: IDL device class library. CALLING SEQUENCE: Result = med->GET_DATA(/TOTAL, /ALIGN) PROCEDURE: This function simply determines the current number of channels in the data (since NUSE might have changed) and then calls MED::GET_DATA. ADDITIONAL INFORMATION: See MED::GET_DATA() for and explanation of the keywords and the return value. MODIFICATION HISTORY: Written by: Mark Rivers, December 3, 1999
(See epics_med__define.pro)
NAME: EPICS_MED::GET_ENVIRONMENT PURPOSE: This function gets the environment parameters for the MED. The environment information is contained in an array of structures of type MCA_ENVIRONMENT. CATEGORY: IDL device class library. CALLING SEQUENCE: Result = epics_med->GET_ENVIRONMENT() PROCEDURE: This function simply returns EPICS_MCA::GET_ENVIRONMENT for the for EPICS_MCA in the EPICS_MED. KEYWORD PARAMETERS: This function accepts all of the keyword paramters used by MCA::GET_ENVIRONMENT ADDITIONAL INFORMATION: See MCA::GET_ENVIRONMENT(). EXAMPLE: med = obj_new('EPICS_MED', '13GE1:med:') env = med->GET_ENVIRONMENT(count) ; Get all environment variables help, /structure, env[0] ; Get all of the sample information env = med->GET_ENVIRONMENT(DESCRIPTION='Sample', count) for i=0, count-1 do print, env[i].name, '=', env[i].value MODIFICATION HISTORY: Written by: Mark Rivers, Sept. 29, 2001. Put this code here and deleted from the MCA::WRITE_FILE routines.
(See epics_med__define.pro)
NAME: EPICS_MED::INIT PURPOSE: This is the initialization code which is invoked when a new object of type EPICS_MED is created. It cannot be called directly, but only indirectly by the IDL OBJ_NEW() function. CATEGORY: EPICS device class library. CALLING SEQUENCE: Result = OBJ_NEW('EPICS_MED', Prefix, N_detectors, BAD=bad) INPUTS: Prefix: The prefix of the EPICS process variables for this multi-element detector database. The records for the process variables must be named according to the following rules: prefix + 'Start' ; PV which starts acquisition when 1 is written to it prefix + 'Stop' ; PV which stops acquisition when 1 is written to it prefix + 'EraseAll' ; PV which erases all MCAs when 1 is written to it prefix + 'ReadSeq' ; PV which reads all MCAs when 1 is written to it prefix + 'ElapsedLive' ; PV from which elapsed live time can be read prefix + 'ElapsedReal' ; PV from which elapsed real time can be read prefix + 'PresetLive' ; PV to which preset live time can be written prefix + 'PresetReal' ; PV to which preset real time can be written prefix + 'Acquiring' ; PV which is 1 when any detector is acquiring, ; 0 when they are all done acquiring prefix + 'mcaN' ; Name of MCA record for each detector, e.g. ; prefix + 'mca1', prefix + 'mca2', etc. OPTIONAL INPUTS: N_detectors: The number of detectors in the MED. Default is 16. KEYWORD PARAMETERS BAD: A scalar or array listing the bad detectors, e.g. BAD=[3,7]. The detectors are numbered from 1 to N_detectors. These detectors will not be accessed by any of the MED methods. In the following example: med = obj_new('EPICS_MED', '13IDC:med:', 16, bad=[3,7]) detectors 3 and 7, out of a total of 16, are bad. All of the MED functions, such as GET_CALIBRATION(), GET_DATA(), etc. will return only 14 values, not 16. OUTPUTS: This function returns a status to indicate whether it was able to establish channel access communication with the specified EPICS records. This status is 1 for success, 0 for failure. This status is passed back indirectly to the routine which calls OBJ_NEW(). OBJ_NEW will return a valid object pointer if this routine succeeds, and will return a NULL object pointer if this routine fails. The user should test the return value of OBJ_NEW() with the IDL function OBJ_VALID(). SIDE EFFECTS: The routine establishes channel access monitors on all of the fields in the records which the methods in this class will read. This greatly improves the speed and efficiency. RESTRICTIONS: This routine cannot be called directly. It is called indirectly when creating a new object of class EPICS_MED by the IDL OBJ_NEW() function. EXAMPLE: ; Create an EPICS_MED object for a 13 element detector, with elements 3 and 7 ; bad. med = obj_new('EPICS_MED', '13IDC:med:', 13, bad=[3,7]) if (OBJ_VALID(med)) then print, 'It worked!' MODIFICATION HISTORY: Written by: Mark Rivers, February 4, 1998 17-Sep-1998 MLR Removed caStartGroup, caEndGroup, since these don't work with the non-callback version of caput, which we are now using (ezcaPutOldCa) 26-Oct-2000 MLR Improved example documentation
(See epics_med__define.pro)
NAME: EPICS_MED::SET_PRESETS PURPOSE: This procedure sets the preset parameters for the MED. The preset information is contained in a structure of type MCA_PRESETS. CATEGORY: EPICS IDL device class library. CALLING SEQUENCE: epics_med->SET_PRESETS, Presets PROCEDURE: This function knows about the EPICS database which fans out a single preset to each multiplexed group of detectors. ADDITIONAL INFORMATION: See MCA::SET_PRESETS. MODIFICATION HISTORY: Written by: Mark Rivers, Sept. 27, 1998 Dec. 1, 1999 Mark Rivers. Added .dwell, .channel_advance and . prescale. Added [0] array index, required.
(See epics_med__define.pro)
NAME: EPICS_MED::SPECTRA_SCAN PURPOSE: This procedures collects MED spectra in conjunction with an EPICS scan record. CATEGORY: EPICS device class library. CALLING SEQUENCE: epics_med->SPECTRA_SCAN, First_file, Scan_record INPUTS: First_file: The name of the first spectrum file to save. Subsequent files will be named using the INCREMENT_FILENAME()function. The filename must end in a numeric extension for this to work. Scan_record: The name of the EPIC scan record which is controlling the scan. This scan record must start MED data collection by writing "1" into the EraseStart record of the MED database. EXAMPLE: med = obj_new('EPICS_MED', '13IDC:med1') med->SPECTRA_SCAN, 'test.001', '13IDC:scan1' PROCEDURE: 1) Wait for scan.EXSC = 1, meaning scan has started 2) Wait for ClientWait=1, meaning acquisition has started 3) Wait for Acquiring=0, meaning acquisition has completed 4) Write data to disk with MED::WRITE_FILE, increment file name 5) Reset ClientWait to 0 so scan will continue 6) If scan.EXSC is still 1 go to 2. MODIFICATION HISTORY: Written by: Mark Rivers, December 30, 1998 Dec. 3, 1999 Mark Rivers. Changed record names, logic for new database.
(See epics_med__define.pro)
NAME: EPICS_MED__DEFINE PURPOSE: This is the definition code which is invoked when a new object of type EPICS_MED is created. It cannot be called directly, but only indirectly by the IDL OBJ_NEW() function, CATEGORY: EPICS device class library. CALLING SEQUENCE: Result = OBJ_NEW('EPICS_MED', Prefix) INPUTS: Prefix: The prefix of the EPICS process variables for this dectector. The records for the detector must be named according to fixed rules. OUTPUTS: None (but see EPICS_MCA::INIT) RESTRICTIONS: This routine cannot be called directly. It is called indirectly when creating a new object of class EPICS_MED by the IDL OBJ_NEW() function. EXAMPLE: ; Create an EPICS_MED object for a 13 element detector, with elements 3 and 7 ; bad. med = obj_new('EPICS_MED', '13IDC:med:', 13, bad=[3,7]) if (OBJ_VALID(med)) then print, 'It worked!' MODIFICATION HISTORY: Written by: Mark Rivers, February 4, 1998 26-Oct-2000 MLR Improved example documentation
(See epics_med__define.pro)
NAME: Release notes Version 3: Everything prior to 12/1/99 when I started making release notes! Prior to this date there are release notes for each routine but no global release notes for the EPICS_MCA class, and there are no version numbers Version 4.0 Dec. 2, 1999. Mark Rivers Changes to support new simplified MED databases. There is no longer a Start PV which can both start and stop and automatically change its value. That was too complex and too unreliable. Rather now there is StartAll, EraseAll and EraseStart which simply does EraseAll followed by StartAll. Dec 2, 1999. Mark Rivers Added START keyword to ACQUIRE_WAIT. Added Dwell, ChannelAdvance and Prescale to presets. Fixed bugs in SET_PRESETS. Dec 3, 1999. Mark Rivers Changed IdlBusy to ClientWait. Changed logic in spectra_scan. Added support for environment files as in EPICS_MCA objects. October 26. 2000. Mark Rivers Improved example documentation for ::INIT and ::DEFINE
(See epics_med__define.pro)