#! /bin/csh -f
#jhz 2015-10-20
#jhz 2016-01-12
#jhz 2016-01-27
#jhz 2016-01-28 make a templet using sma data:
#               160116_03:45:40
#jhz 2016-05-06 edited for specially handling 151226_04:17:44
#               due to some issues in observing setup and
#               online data errors 
#
#
#
#
#
#
#
#
#
#Pre-process 2:Editing & Calibration of ASIC data pre-proccessed SMA new
#              format data produced from hybrid correlator (ASIC+SWARM)
#              since 2014-11-16
echo "                                                                      "
echo "######################################################################"
echo "# swarmcali.csh: script to calibrated SMA data produced from          "
echo "# Pre-processing 1 including data inspection, editing, corrections for"
echo "# atmosphere attenuation in amplitude, bandpass, complex gains and    "
echo "# flux-density scale.                                                 "
echo "# Two options for the output format from this stage: UVFITS or Miriad "
echo "# Then, in principle, the processed SMA data after pre-process 1 and 2"
echo "# can be further processed anywhere else (CASA, Miriad, AIPS and etc.)"
echo "######################################################################"
#
#Target                (font) - 
#Bandpass calibrator   (bcal) -
#Gain calibrator       (gcal, gcal2) -
#Flux scale calibrator (fcal) -
#
echo "                                                                      "
echo "######################################################################"
echo "# Users need to carefully review the following project-depended setup "
echo "# from lines 40 - 79 prior to executing this script                   "
echo "######################################################################"
echo "                                                                      "
#
#set the name of the SMA raw data
#
set file = 151226_04:17:44
echo ''
echo $file
#
set dt          = 151226 
#
echo ' '
echo 'prefix of data files = ' $dt
echo ' '
#
set hour        = 04:17:44
#do lsb and usb separately 
#set sb          = usb
set sb          = lsb
set nn          = 1 
set rxid        = 0
set rx          = rx${rxid}
set adge        = 5 
set nchan_as    = 1750
set maxtsys     = 500
set maxspw      = 2 
set fname       = "$dt""_""$rx".$sb
set oname       = "$dt""_""$rx"
set fcal        = callisto 
set gcal1       = 0501-019
set gcal2       = 0607-085 
set gcal        = $gcal1  
set bcal        = 3C279,3c454.3
set font        = sOri-2
set refant      = 1 
set avetime     = 5
set source      = $font
#twogcal    =  T two gain calibrators' scheme
#twogcal    =  F one ain calibrator scheme
set twogcal     = T
#
echo ' '
echo 'using two gain calibrator scheme? ' $twogcal
echo ' '
#
set DATPATH     = ../../2015B-S044/
                      # The data path contains the pre-processed output data,
                      # e.g., two tarballs -
                      #            160115_rx0.lsb.tar and 160115_rx0.usb.tar
############################################################################
#Sub-process handles -
############################################################################
#goto DETAR           # DETAR the tarballs produced from Pre-process 1 
#goto INSPECT         # inspect the data
#*goto UVCOVER         # check the uv-coverage
#*goto UVSPC           # plot uv spectra of bandpass calibrator
#*goto SMACHECK        # flag bad system temperature
#*goto SMAFIX          # apply Tsys to vis data
#XXXXXXgoto QVACK      # elminate first interval after switch source
                       # skip this section for 151226_04:17:44
                       # because of integration scans on skip too short
#*goto FRINGE-AMP      # plot fringe amplitude
#*goto CLOSUR-PH       # plot closure phase
#******goto SMAFLAG    # flag bad vis
                       # baseline by baseline editing carefully for 
                       # these beggining integration mixed with correlations
                       # between the signals from different targets
                       # to retain all good correlations as much as possible 
#*goto BPASS           # do bandpass for ASIC data
#*goto GPPLT           # plot bandpass solutions for ASIC data
#*goto RCLOSUR-PH      # re-examine the closure phase after bandpass
#*goto BPAPPL          # apply bandpass solutions
#*goto SMAFLUX         # determine flux density scale and apply the scale to the data
#*goto APPFLUX         # apply flux scale
#******goto SPECIALEDT
#goto SPECIALEDT
#*goto GCAL            # calculate complex gains
#XXXXXXgoto GCAL1-ASIC # calculate complex gains for ASIC data 1 calibrator
#XXXXXXgoto GCAL2-ASIC # calculate complex gains for ASIC data 1 calibrator
goto MAPTST            # imaging test
#goto UVFITS           # export calibrated data in UVFITS
#goto ZAP              # clean 
#
OTHERSIDEBAND:
set fname = "$dt""_""$rx".$sb
DETAR:
echo ${DATPATH}/$fname.tar
\rm -fr ${DATPATH}/$fname.asic ${DATPATH}/$fname.sw1 ${DATPATH}/$fname.sw2
tar xvf ${DATPATH}/$fname.tar 
$<
INSPECT:
echo 'INSPECT: ASIC'
uvindex  vis=$fname.asic

$<
UVCOVER:
echo 'UV-COVERAGE: ASIC'
smauvplt vis=$fname.asic axis=uc,vc \
        options=nobas device=/xs

$<
UVSPC:
echo 'spectra: ASIC'
smauvspec vis=$fname.asic \
        select='source('$bcal')' \
        interval=1000 hann=1 \
        axis=freq,both device=/xs nxy=1,6

$<
SMACHECK:
echo 'check ASIC:'
smacheck vis=$fname.asic flagval=flag var=systemp \
	range=0,$maxtsys 

$<
SMAFIX:
echo 'Tsys correction: ASIC'
\rm -r $fname.asic.tsys
smafix vis=$fname.asic out=$fname.asic.tsys \
        device=/xs xaxis=time \
        yaxis=systemp nxy=2,4   \
        options=tsyscorr \
        bant=5 gant=1
exit
$<
QVACK:
echo 'quack: ASIC'
qvack vis=$fname.asic.tsys mode=source interval=1

$<
FRINGE-AMP:
echo 'Fringe: ampl'
smauvplt  vis=$fname.asic.tsys axis=time,ampl options=nobas device=/xs

$<
CLOSUR-PH:
echo 'Closure: phase'
closure vis=$fname.asic.tsys select='source('$gcal')' \
        interval=1 device=/xs nxy=4,7 line=chan,1,1,$nchan_as,1

$<
SMAFLAG:
echo 'smablflag: ASIC'
uvflag vis=$fname.asic.tsys select='amplitude(0.,1.E-12)' flagval=flag
uvflag vis=$fname.asic.tsys select='source(uranus)' flagval=flag
uvflag vis=$fname.asic.tsys select='source(Uranus)' flagval=flag
$<
smablflag vis=$fname.asic.tsys axis=time,ampl device=/xs 
$<
BPASS:
echo 'BPASS: ASIC'
smamfcal vis=$fname.asic.tsys select='source('$bcal')' edge=$adge,$adge \
     weight=2 refant=$refant interval=1000000 options=msmooth smooth=3,1,0.9 

$<
GPPLT:
smagpplt vis=$fname.asic.tsys device=/xs \
        yaxis=amp \
        options=bandpass  \
        nxy=2,4 yrange=0,2

$<
smagpplt vis=$fname.asic.tsys device=/xs \
        yaxis=phase \
        options=bandpass  \
        nxy=2,4 yrange=-180,180

$<
RCLOSUR-PH:
echo 'Re-exam ClosurePh: ASIC'
closure vis=$fname.asic.tsys select='source('$gcal')' \
        interval=1 device=/xs nxy=4,7 line=chan,1,1,$nchan_as,1

$<
BPAPPL:
echo 'Apply BP solutions: ASIC'
\rm -r $fname.asic.tsys.bp
uvaver vis=$fname.asic.tsys out=$fname.asic.tsys.bp


$<
SMAFLUX:
echo 'flux scale: ASIC'
smaflux vis=$fname.asic.tsys.bp \
        select='source('$fcal')' mirhome=$MIR

$<
APPFLUX:
\rm -r $fname.asic.tsys.bp.a
echo 'apply flux scale: ASIC'
uvaver vis=$fname.asic.tsys.bp out=$fname.asic.tsys.bp.a \
        options=nopass
exit
SPECIALEDT:
set source = 0607-085
uvaver vis=$fname.asic.tsys.bp.a select='source('$source')' out=${source}.uv
smablflag vis=${source}.uv axis=time,amp \
        options=nobase device=/xs select='source('$source')'
set source = 0501-019
uvaver vis=$fname.asic.tsys.bp.a select='source('$source')' out=${source}.uv
smablflag vis=${source}.uv axis=time,amp \
        options=nobase device=/xs select='source('$source')'
set source = sOri-2
uvaver vis=$fname.asic.tsys.bp.a select='source('$source')' out=${source}.uv
smablflag vis=${source}.uv axis=time,amp \
        options=nobase device=/xs select='source('$source')'
\rm -r $fname.asic.tsys.bp.a.rep
uvaver vis=0607-085.uv,0501-019.uv,sOri-2.uv out=$fname.asic.tsys.bp.a.rep
smablflag vis=$fname.asic.tsys.bp.a.rep axis=time,amp \
        options=nobase device=/xs
$<
\rm -r $fname.asic.tsys.bp.a.BK
mv $fname.asic.tsys.bp.a $fname.asic.tsys.bp.a.BK
$<
mv $fname.asic.tsys.bp.a.rep $fname.asic.tsys.bp.a
$<
GCAL:
echo 'Two gain calibrator = ' $twogcal
if ($twogcal == 'F') then
GCAL1-ASIC:
echo 'gain calibration-one calibrator scheme: ASIC'
$<
mfcal vis=$fname.asic.tsys.bp.a  \
        select='source('$gcal')' edge=$adge,$adge refant=$refant interval=5 \
        options=nopassol 
$<
smagpplt vis=$fname.asic.tsys.bp.a device=/xs \
        yaxis=amp \
        options=gains  \
        nxy=2,4 yrange=0,2
$<
smagpplt vis=$fname.asic.tsys.bp.a device=/xs \
        yaxis=phase \
        options=gains  \
        nxy=2,4 yrange=-180,180
endif

$<
if ($twogcal == 'T') then
GCAL2-ASIC:
echo 'gain calibration two-calibrator scheme: ASIC'

$<
\rm -r gcal2.a
cp -r $fname.asic.tsys.bp.a gcal2.a

$<
mfcal vis=$fname.asic.tsys.bp.a  \
        select='source('$gcal')' edge=$adge,$adge refant=$refant interval=5 \
        options=nopassol  

$<
gpedit vis=$fname.asic.tsys.bp.a options=ampl

$<
smagpplt vis=$fname.asic.tsys.bp.a device=/xs \
        yaxis=amp \
        options=gains  \
        nxy=2,4 yrange=0,2

$<
smagpplt vis=$fname.asic.tsys.bp.a device=/xs \
        yaxis=phase \
        options=gains  \
        nxy=2,4 yrange=-180,180

$<
mfcal vis=gcal2.a  \
        select='source('$gcal2')' edge=$adge,$adge refant=$refant interval=5 \
        options=nopassol 

$<
gpedit vis=gcal2.a options=ampl 

$<
smagpplt vis=gcal2.a device=/xs \
        yaxis=amp \
        options=gains  \
        nxy=2,4 yrange=0,2

$<
smagpplt vis=gcal2.a device=/xs \
        yaxis=phase \
        options=gains  \
        nxy=2,4 yrange=-180,180
$<
gpcopy vis=gcal2.a out=$fname.asic.tsys.bp.a mode=merge
echo 'merge'

$<
smagpplt vis=$fname.asic.tsys.bp.a device=/xs \
        yaxis=amp \
        options=gains  \
        nxy=2,4 yrange=0,2

$<
\rm -r $fname.asic.tsys.bp.p
uvaver vis=$fname.asic.tsys.bp.a out=$fname.asic.tsys.bp.p

$<
mfcal vis=$fname.asic.tsys.bp.p  \
        select='source('$gcal2,$gcal')'  refant=$refant interval=1 \
        options=nopassol edge=$adge,$adge

$<
gpedit vis=$fname.asic.tsys.bp.p options=phase

$<
gpplt vis=$fname.asic.tsys.bp.p device=/xs \
        yaxis=phase \
        options=gains  \
        nxy=2,4 yrange=-180,180

$<
\rm -r $fname.asic.tsys.bp.a
uvaver vis=$fname.asic.tsys.bp.p out=$fname.asic.tsys.bp.a \
	options=nopass
endif

exit
MAPTST:
#set source = 0607-085
#set source = 0501-019
set source = sOri-2
echo 'source=' $source
$<
echo 'vis=' $fname.asic.tsys.bp.a
\rm -r target.map target.beam target.icmp
invert vis=$fname.asic.tsys.bp.a map=target.map \
        beam=target.beam  select='source('$source')' line=chan,1,1,1760 \
        imsize=512 cell=.25 sup=0 options=systemp
continue:
cgdisp in=target.map type=p region=arcsec,'boxes(-40,-40,40,40)' \
        xybin=1 device=/xs nxy=1 labtyp=arcsec,arcsec \
        range=0,0,lin,2 \
        options=beambr,wedge,trlab csize=1,1,0.8 \
        slev=a,0.0025 
#clean map
clean map=target.map beam=target.beam \
        out=target.icmp gain=0.05 \
        cutoff=0.0015 niters=20000 region=arcsec,'box(-3,-3,3,3)'
\rm -r target.icln
#restore the image with a gaussian beam
restor model=target.icmp beam=target.beam map=target.map \
        out=target.icln
cgdisp in=target.icln type=p region=arcsec,'boxes(-40,-40,40,40)' \
        xybin=1 device=/xs nxy=1 labtyp=arcsec,arcsec \
        range=0,0,lin,2 \
        options=beambr,wedge,trlab csize=1,1,0.8 \
        slev=a,0.0025
#do statistics in an area off the source
imstat in=target.icln region='boxes(30,30,60,60)' \
        axes=ra,dec
#do statistics in an area on the source
imstat in=target.icln region=quarter \
        axes=ra,dec
exit
$<
UVFITS:
echo 'export UVFITS: ASIC'
\rm -r $fname.asic.cal.uvfits
fits in=$fname.asic.tsys.bp.a op='uvout' out=$fname.asic.cal.uvfits
echo 'export UVFITS done'

$<
#
#switching sideband from lsb to usb
#
if ($sb == lsb) then
set sb = usb
set nn = 1
goto OTHERSIDEBAND
endif

exit
ZAP:
\rm -r $fname.asic.tsys.bp $fname.asic.tsys.bp.p $fname.asic.tsys $fname.asic gcal.a
exit
#
# end of pre-process 2
#