The data should have been taken with
the tcl routine mapradec() with the code variable having the
winking cal bit set (0x100). The hardware winking cal has a 25
Hz cycle and is hardware synchronized to the 1 second tick.
The processing described below uses idl. It is broken
up into two steps:
1. find all the files that belong to the map
2. input the map, and compute total power.
Note:
The map will be made of multiple strips at
constant dec and driven in ra. Each strip will be a separate
scan. All of the scans that belong
to the map are called a pattern (we also have on,off
position switch patterns, etc..). The first scan number of the
map is used as an identifier
for all of the scans in the map. It is called the pattern_id.
It is included in the header of every scan of the map.
There can be up to 7 separate freq bands
(also called beams.. a holdover from alfa) included in each
strip. Each of these bands
is stored in a separate file (but they all have the same scan
number since they were recorded at the same time). So a map of
25 strips, and 3 bands will have 3x25= 75 files.
You need the following info:
Scan for the files using the idl
routine masfindmap()
The routine masgetmapwc()
is used to input the data. The call is:
Return the results in the mI structure
(MapInfo):
help, mI,/st
NSTRIPS
LONG
25
; number of strips
NRECSSTRIP
LONG
60
; number of rows in file (may have multiple samples/row)
NBMS
LONG
7
; number of beams,freqbands
NCALCYCLESSTRIP
LONG
1500
; number of total power samples (calcycles) in strip)
HDRAR
STRUCT -> MASFHDR Array[60, 25];fits
header from bm[0] for each row
BMI
STRUCT -> <Anonymous> Array[7]
; this holds the beaminfo,total power samples.
RACEND
DOUBLE
266.41683 ; center ra
for map (degrees)
DECCEND
DOUBLE
-29.007833 ; center
dec for map (degrees)
RAPOSD
DOUBLE Array[1500,
25] ; ra
position (deg) for each sample of map
DECPOSD
DOUBLE Array[1500,
25] ; deg
position (deg) for each sample of map
The mI.bmI struct has info for each beam:
help,mI.bmI,/st
TPARONK
FLOAT Array[1500, 25,
2] ;totPwr calOn.
samples/strip, strips,pols(a,b)
TPAROFFK
FLOAT Array[1500, 25,
2] ;totPwr
calOff. ''
BRMSAR
STRUCT -> <Anonymous> Array[2,
25]; output masrms for calOn,caloff data this strip
MASKAR
INT Array[512,
25]
; mask for good freq channels 1-> used, 0-> notused
(nchan,nstrips)
EDGEFRACT
FLOAT
Array[2]
; fract spectra excluded left,right edge of spectra.
NCHANUSED
LONG
Array[25]
; number of freq chan used each strip
BWUSED
FLOAT
Array[25]
; bwused (MHz) each strip (nchnUsed*chanWidth)
CNTSTOK
FLOAT Array[1500, 25,
2] ; conversion
spectrometer counts to degK for each sample
CALKUSED
FLOAT Array[25,
2]
; avg cal value used each strip (nstrips,npol)
map of Sagitarius A* taken 10apr22 using
xband with 7 172.032 Mhz input bands.
In idl:
proj='x101'
yyyymmdd=20220410
patId=210000001
band=1
grp=0
;
; find the files
;
nstrips=masfindmap(proj,yyyymmdd,patid,mFI,band=band,grp=grp)
;
; input and process
;
nstrips=masgetmapwc(mFI,mI,/verb)
;
; look at total power polA all strips bm 0 for calOn and
calOff
;
nsmp=mI.ncalCyclesStrip
x=findgen(nsmp)
ibm=0
ipol=0
!p.multi=[0,1,2] ;
2 frames/page
hor
ver,140,150
stripsxy,x,mI.bmI[ibm].tpArOnK[*,*,ipol],0,0,/step,$
xtit='smp',ytit='DegK',tit='10apr22 sgra* totPwr vs smp
CalOn polA'
ver,95,105
stripsxy,x,mI.bm[ibm].tpAroOffK[*,*,ipol],0,0,/step,$
xtit='smp',ytit='DegK',tit='10apr22
sgra* totPwr vs smp CalOff polA'