#!/bin/bash
#
# Ta program sesteje serijo slik
#
# dec 2003, B.Dintinjana
# jul 2015 dopolnitve


ARGS=2
E_WRONGARGS=65
export TERM=xterm

# ce program pozenem brez parametrov, samo izpise pomoc in konca
if [ $# -lt "$ARGS" ]
then
   echo "Usage: `basename $0` <out-image> <input images list>"
   exit $E_WRONGARGS
fi

# najprej pocisti, ce sesteta slika ze obstaja, jo izbrisem
if [ -e $1 ]
then
    rm -f $1
fi

# pripravi parametre za obdelavo:
# prvi parameter je ime izhodne (sestete) slike
# naslednje sliko so vhodne, navedemo eno za drugo, kolikor jih imamo
# prva vhodna slika naj bo referencna 
outimage=$1
refimage=$2         # prva slika na spisku za sestet
datapath=$(pwd)
shift

# pripravi spisek slik v datoteki vhodne v imlist, vmesne rezultate v outlist 
rm -f imlist
rm -f outlist

# zanka po vseh vhodnih slikah
until [ -z "$1" ]
do
  lastimage=$1
  # preveri ali imajo slike astrometricni fit narejen v fits glavi
  #if [[ `buffers $1 | grep MATCHED` ]]
  if [[ $(head $1 | grep MATCHED) ]]
  then  
     # slika ima match, jo vzame v sestevanje
     # premaknjene slike dobijo v ime podalsek -wcs.fts 
     echo "$1 " >> imlist
     echo `basename $1 | sed -e 's/.fts/-wcs.fts/'` >> outlist
  else
     echo "Pozor slika $1 nima matcha, izlocim."
  fi
  shift
done

# vse je pripravljeno, pozeni iraf
cd $HOME/tmp
pwd
echo ------Iraf------------
cl -o <<Iraf-Process
    # zacetek iraf programa
    
    real mjdlast
    real mjdfirst
    real mjdmid
    real rdnoise
    real ncombine
    cd $datapath
    menus=no
    # slike najprej poravnam po wcs
    print " "    
    print "========================================="
    print "Poravnava slik po nebesnih koordinatah   "
    print "========================================="
    unlearn wregister
    wregister.function = "polynomial"
    wregister.xxorder = 4
    wregister.xyorder = 4
    wregister.xxterms = "half"
    wregister.yxorder = 4
    wregister.yyorder = 4
    wregister.yxterms = "half"
    wregister.reject = INDEF
    wregister.calctype = "real"
    wregister.geometry = "geometric"
    wregister.xsample = 1.
    wregister.ysample = 1.
    wregister.interpolant = "poly5"
    #wregister.boundary = "nearest"
    wregister.boundary = "constant"
    wregister.constant = 1.0
    wregister.fluxconserve = yes
    wregister @imlist $refimage @outlist
    # poravnane slike zlozim skupaj

    print " "
    print "========================================="
    print "Sestevanje / povprecenje slik            "
    print "=========================================" 
    unlearn imcombine
    imcombine.outtype = "real"
    imcombine.lthreshold = 2
    imcombine.hthresh = 65635
    imcombine.combine = "average"
    imcombine.expname = "EXPOSURE"
    imcombine.weight = "exposure"
    imcombine.reject = "none"
    imcombine @outlist $outimage
    print " "   
    print "========================================="
    print "Popravek casa ekspozicije JD in MJD      "
    print "========================================="   
    # popravim vrednost JD in MJD v glavi, je cas sredine ekspozicije
    # pozor date-obs se ne popravi in ostane vrednost prve (referenčne) slike
    imgets $lastimage "MJD"
    mjdlast=real(imgets.value)
    print "zadnji MJD=" real(mjdlast)
    imgets $refimage "MJD"
    mjdfirst=real(imgets.value)
    print "prvi MJD=" real(mjdfirst)
    mjdmid=mjdfirst + (mjdlast-mjdfirst)*0.5
    print "srednji MJD=" real(mjdmid)

    unlearn hedit
    hedit $outimage "MJD" value=real(mjdmid) verify=no update=yes
    hedit $outimage "JD"  value=real(mjdmid+2400000.5) verify=no update=yes
    print " "
    print "========================================="    
    print "Popravek vrednosti RDNOISE po povprecenju"
    print "========================================="
    imgets $outimage "NCOMBINE"
    ncombine=real(imgets.value)
    print "NCOMBINE=" real(ncombine)
    
    imgets $outimage "RDNOISE "
    rdnoise=real(imgets.value)
    print "RDNOISE=" real(rdnoise)

    hedit $outimage "RDNOISE" value=real(rdnoise/sqrt(ncombine)) verify=no update=yes
    
    logout
    # konec iraf programa
Iraf-Process
cd $datapath

# pocisti za seboj, vmesne slike lahko zbrisem
for i in $(cat outlist)
do
    echo $i
    rm -f $i
done
echo "==========="
echo "Opravljeno."
echo "==========="
exit


