NAME: am0intro - Using the alfamon routines: Alfa has a dewar monitoring package that lets us monitor the dewar temperatures, bias voltages and currents, as well as some of the power supply voltages. The data is sampled once every 300 seconds. This processes continues 24 hours a day. The data is written to disc in ascii format. The current file is /share/cima/Logs/ALFA_logs/alfa_logger.log. At the end of each month the data is moved to alfa_logger_yyyy_mm.log. Each of the files contains about 10Mbytes of data. The data is stored sequentially in time as it is sampled. The routines in the alfamon package let you access and plot this data. You need to be a bit careful what you ask for (because you might get it..). Run idl on a computer with lots of memory (say alocn) The main routines used by users are: aminpday() - input one or more days of data. amplot() - plot the temperature,voltages, or currents that were input. ammon() - input and plot the data for a day, or continually monitor the current values. (not yet implemented..) The other routines are support routines used by these 3. The data structure used for each sample is: DL> help,d,/st ** Structure ALFAMON, 21 tags, length=664, data length=662: TMA STRING '20090202000417' yyyymmddhhmmss in ascii JD DOUBLE 2454864.7 BIAS_CTL INT 0 0 local, 1 remote BIAS_STAT INT Array[2, 7] [pol,beam] 0 off, 1 amps on ; VD FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] drain Voltage ID FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] drain Current VG FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] gate Voltage T20 FLOAT Array[4] 20K temp K1..K4 T70 FLOAT Array[4] 70K temp K1..K4 V32P FLOAT 31.9630 Plus 32Volt power supply V20P FLOAT 19.9060 Plus 20 Volt power supply V20N FLOAT -20.1310 negative 20 Volt power supply V9P FLOAT 8.77000 Plus 9 Volt power supply V15P FLOAT Array[6] Plus 15 Volt power supply R1..R6 V15N FLOAT Array[4] Neg 15 Volt power supply R1..R4 V5P FLOAT Array[2] Plus 5 Volt power supply R1..R2 CALCTL INT 3 NSELEV INT 1 NSEDIODET INT 0 VACSTAT INT 96 VACLEV FLOAT 0.00000 aminpday will input an array of these structures d[n]. You can use amplot to plot the data, or you can use the normal idl plot routines for plotting. EXAMPLES: ; start idl idl @phil @alfamoninit ; input 01feb09 thru 10feb09 nrecs=aminpday(20090201,d,lastday=20090210) ; ; plot the 16/70 k stage using colors for each and ascii dates ver,0,30 amplot,d,/adate,/temp ; ; plot the bias Drain currents for the third stage amps amplot,d,Id=3,/adate
(See /pkg/rsi/local/libao/phil/alfamon/am0intro.pro)
NAME: amgetfile - find the files for the specified date(s) SYNTAX: nfiles=amgetfile(yymmdd1,yymmdd2,filelist,ndays=ndays) ARGS: yymmdd1: long date for first day to read yymmdd2: long date for last day of interest KEYWORDS: ndays: long find files for ndays starting at yymmdd1. In this case ignore yymmdd2. RETURNS: nfiles: number of files found. filelist[nfiles]: list of files. yymmdd2: will return the actual last day used (in case you have requested something in the future. DESCRIPTION: Return the list of filenames that contain the data for yymmdd1 through yymmdd2 (astdates). If keyword ndays is provided then return the list of filenames for the ndays of data starting at yymmdd1 and return yymmdd2. The data is stored by month. EXAMPLE: Get the files for oct02 through dec02 nfiles=amgetfile(021001,021230,filelist) print,nfiles 3 print,filelist
(See /pkg/rsi/local/libao/phil/alfamon/amgetfile.pro)
NAME: aminpday - input 1 or more days of alfamon info SYNTAX: nrecs=aminpday(yymmdd1,d,lastday=yymmdd2,ndays=ndays,$ smo=smo,curfile=curfile,dayno=dayno,year=year) ARGS: long : yymmdd1 day to input (unless dayno specified) KEYWORDS: lastday:long return data from days yymmdd1 through yymmdd2 (unless keyword set dayno) ndays :long return ndays starting at yymmdd1 smo :long smooth and decimate the data by this many sample points. the datapoints are normally spaces by 300 seconds. curfile: if set, use current file, (used for maintenance purposes) dayno :long if supplied, then set yymmdd1 to dayno,year RETURNS: nrecs: number of entries in d d[nrecs]: {alfamon} the alfamon data. 1 entry per measurement. DESCRIPTION: Input the alfar monitor data for the date yymmdd1. If the keyword lastday is provided then input data from yymmdd1 through yymmdd2. If the keyword ndays is provided then input ndays of data starting at yymmdd1 (ndays overrides lastday). If no keywords are provided just input the one day. The data is sampled once every 300 seconds. The data is returned as an array of structures d[nrecs]. Each ;entry contains: IDL> help,a,/st ** Structure ALFAMON, 21 tags, length=664, data length=662: TMA STRING '' yyyymmddhhmmss in ascii JD DOUBLE 0.0000000 BIAS_CTL INT 0 0 local, 1 remote BIAS_STAT INT Array[2, 7] [pol,beam] 0 off, 1 amps on ; VD FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] drain Voltage ID FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] drain Current VG FLOAT Array[2, 7, 3] [pol,beam,stage1,2,3] gate Voltage T20 FLOAT Array[4] 20K temp K1..K4 T70 FLOAT Array[4] 70K temp K1..K4 V32P FLOAT 0.00000 Plus 32Volt power supply V20P FLOAT 0.00000 Plus 20 Volt power supply V20N FLOAT 0.00000 negative 20 Volt power supply V9P FLOAT 0.00000 Plus 9 Volt power supply V15P FLOAT Array[6] Plus 15 Volt power supply R1..R6 V15N FLOAT Array[4] Neg 15 Volt power supply R1..R4 V5P FLOAT Array[2] Plus 5 Volt power supply R1..R2 CALCTL INT 0 NSELEV INT 0 NSEDIODET INT 0 VACSTAT INT 0 VACLEV FLOAT 0.00000
(See /pkg/rsi/local/libao/phil/alfamon/aminpday.pro)
NAME: aminprecs - input alfamon records SYNTAX: nrecs=aminprecs(lun,nrecsReq,d,smo=smo,yyyymmdd1=yyyymmdd1,$ yyyymmdd2=yyyymmdd2) ARGS: lun : int file containing data to read nrecsReq: long requested number of records to read KEYWORDS: smo: int smooth and decimate by this amount. should be an odd number >= 3. The data will be smoothed and decimated by this amount. yyyymmdd1: long if supplied then start inputting nrecsReq when you hit this date. yyyymmdd2: long if supplied then stop inputting recs when you go beyond this date. RETURNS: nrecs : long number of records input. d[nrecs]:{alfamon} data input from file DESCRIPTION: This routine is normally called via aminpday or ammoninp. aminprecs will try to read the requested number of records from the alfa log monitoring file that lun points to (you need to open the file before calling this routine). The number of records actually read is returned in nrecs. The routine will preallocate an array of nrecsReq before reading. Note: the dates are ast EXAMPLE: openr,lun,'/share/cima/Logs/alfa_loggerlog',/get_lun nrecs=aminprecs(lun,9999,d)
(See /pkg/rsi/local/libao/phil/alfamon/aminprecs.pro)
NAME: amplot - plot alfa dewar monitoring SYNTAX: amplot,d,temp=temp,Id=Id,Vd=vd,Vg=vg,over=over,sym=sym, color=col,ln=ln,adate=adate,drange=drange,$ cs=cs,log=log,v1=v1,v2=v2,cont=cont,vmed=vmed,labbm=labbm, xpinc=xpinc,tosmo=tosmo,useoff=useoff,fl=fl,ldate=ldate,$ mytitle=mytitle ARGS: d[]:{alfamon} array of data input via aminpday. KEYWORDS: temp : int if set then plot 16 and 70 K temps Id : int amplifier bias drain curreint. plot stage= 1,2,3 Vd : int amplifier bias drain voltage. plot stage 1,2,3 Vg : int amplifier bias gain voltage. plot stage 1,2,3 vac : if set the plot vacuum.. over : int if set then overplot rather than start a new plot sym : int 1,2,3 .. plot a symbol at each measured position. 1 +, 2 *, 3 . , Negative number -1,-2,-3 will plot the symbol and the connecting lines. color : int if provided then plot the current data set in this color. colors are: (1-white, 2-red, 3-green,4-blue,5-yellow... ln : int line number for rcvr name labels. values 3..33 adate : int if set then plot using alphanumeric dates: ddMMMyy drange[3]: float Date range to plot. Use with /adate to limit the dates plotted. format:[year,daynum,Numdays] keep numdays about year,daynum. (numdays can be positive or negative). These are AST dates cs : float character size scaling if single plot. default=1 log : if true then use log for vertical scale.. (warning.. don't set lower vertical scale to 0..) v1[2] : float min,max value for top plot. default is auto scale v2[2] : float min,max value for bottom. default is auto scale Note: v2 only works with Temps. For Id,Vd,Vg v1[] will set top and bottom veritcal scales the same. vmed : float fractional value about median to display cont : if true then continue adding plots to this page. need to set !p.multi=[0,n,m] before calling the first time labbm[2] : float [line number,xp] for where to label the beams xpinc : float fraction to space between beam labels. def: .05 tosmo : int number of points to smooth/decimate useoff : if set then used data with amps off. fl[] : flag these locations in plots (jd) ldate : string if present and adate set then use this for label_date() format. Default:"%D%M" mytitle : string if present add to end of title RETURNS: gotdata: 1 if data found, 0 if no data found DESCRIPTION: Plot the alfa dewar info data versus day of year. The data must be first input with aminpday. By default it will plot the 16 degree temperature stage. You can use the keywords to select the following data to plot: temp: 1 : plots 16 and the 70 K temps Vd: 1,2,3 : stage 1st,2nd, or 3rd amplifier bias drain voltages Id: 1,2,3 : 1st,2nd, or 3rd amplifier bias currents. The data can be plotted versus daynumber of the year (default) or versus an ascii date ddMonyy (using /adate). The axis can be scaled using hor,min,max and ver,min,max (these are two idl functions). Entering hor or ver without any arguements will autoscale to the min,max. The adate keyword plots the x axis in a more human readable form ddMonyy. To plot a subrange of the data with this format, hor,min,max will not work (since the x data gets converted to julian date). Use the drange[day1st,daylast] keyword to limit the day range in this case. By default each pol is plotted in a different color on one plot. When using the adate keyword, the tickmark end up being spaced by some reasonable number of days (5,10,20..etc). Making hardcopy requires that you set the destination of the output to a postscript file before you call the routine. pscol,'filename.ps' amplot,d hardcopy x The data will then be in the postscript file filename.ps. EXAMPLES: To start idl: idl @phil @alfamoninit ... nrecs=aminpday,021224,d,ndays=6 .. input dec 20 to 25 hor ver,0,50 .. vertical scale 0 to 50 K amplot,d .. plot all 16 deg stage amplot,d,vd=1,/adate .. plot drain voltage, ascii dates NOTE:
(See /pkg/rsi/local/libao/phil/alfamon/amplot.pro)
NAME: amposday - position to start of day in file SYNTAX: istat=amposday(lun,yymmdd) ARGS: lun : int file containing data to read yymmdd: long day to position to RETURNS: istat : int 0 - positioned at start (yymmdd <= first rec) 1 - positioned in file 2 - positioned at end (yymmdd > last rec of file) DESCRIPTION: amposday will position to the start of a day within the file. This routine is normally called from aminpday(). EXAMPLE: openr,lun,'logfile',/get_lun yymmdd=021105 istat=amposday(lun,yymmdd)
(See /pkg/rsi/local/libao/phil/alfamon/amposday.pro)