Processing a 12 meter winking cal map

11apr22

Links:
     intro
    wc background
    wc find files
    wc input and process
    wc example
    wc notes

Other pages
Why use a winking cal on the 12meter.
The mapradec tcl routine used to take the data
datataking example: winking cal map of SGRA* at xband



Intro.

    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:

Some background on the map and the terminology used.

    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.

Find the files that belong to your map

    You need the following info:

    Scan for the files using the idl routine masfindmap()

   mFI will then be passed to the processing routine.


Input the files and compute the total power.

    The routine masgetmapwc() is used to input the data. The call is:


    The processing steps done for each strip and freq band are:

    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)

Example:

    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'

Notes:


<- page up
 home_~phil