#!/usr/bin/perl
#
# find and measure stars in each frame, generating .coo and .pht files

$debug = 0;

# set to 1 to see pictures, one frame at a time
$interactive = 0;

# set to 1 to use "masked" versions of images
$use_masked = 0;

# set to 1 to restrict search to the box shown below
$use_box = 1;
$box_num = 3;
#$cmd = "box 2 cr=159 cc=249 nr=282 nc=458";
$cmd = "box $box_num sr=5 sc=5 nr=330 nc=500";
$retval = `$cmd`;
if ($debug > 0) {
  printf "using a box $cmd ... \n";
}

  @files1 = glob("shift_median_i.fit");
# first, we generate the list of files to be reduced
#@files = glob("sdss*-[02][04][39].fit");
  #@files = glob("m101r-00[5789]*.fit");

  #@files1 = glob("m101r-00[5789]R.fit");
  #@files2 = glob("m101r-010R.fit");
#  @files = (@files1, @files2);
#  @files1 = glob("m101v-00[1456]V.fit");
#  @files1 = glob("m101i-00[345]I.fit");
#  @files2 = glob("m101i-02[89]I.fit");
#  @files3 = glob("m101i-030I.fit");
#  @files1 = glob("m101b-00[269]B.fit");
  @files = (@files1, @files2, @files3);


#@files = glob("tres3-?[02][39].fit");
#@files = glob("amcvn-?[26][3].fit");
#@files = glob("iyuma-?[26][3].fit");
#@files = glob("iyuma-*.fit");
#@files = glob("her0_*I.fit");
#@files = glob("her0-0?5I.fit");
#if ($use_masked == 0) {
#  @files = glob("mvlyr-???.fit");
  #@files = glob("mvlyr-?50.fit");
#}
#else {
#  @files = glob("masked/tres*-*.fit");
  #@files = glob("masked/tresi_013I.fit");
  #@files = glob("masked/foo*.fit");
#}
#@files = glob("tresher0-0[012]3*.fit");
#@files2 = glob("henden_?-????.fit");
#@files3 = glob("elis_?-????.fit");
#@files1 = glob("naka_[abcd]-020c.fit");
#@files1 = glob("rxc-00[456].fit");
#@files2 = glob("be87_?.???");
#@files2 = glob("be87_?.???");
$nframes = 0;
foreach $file (@files) {
#foreach $file (@files1, @files2, @files3) {
  $frame_array[$nframes] = $file;
  $nframes++;
}

# now process each frame in turn
foreach $file (@frame_array) {
  $base = $file;
  $base =~ s/\./_/;
  if ($use_masked == 1) {
    $base =~ s/masked\///;
  }
  printf "now working on $file = $base\n";

 if (1 == 1) {

  $cmd = "sky $file bin=5";
  if ($use_box == 1) {
    $cmd .= " box=$box_num ";
  }
  $ret = exec_cmd($cmd);
  
  # normal in-focus stars
  #$cmd = "stars $file minsig=5 minfwhm=1.0 maxfwhm=4.0 minsharp=-1.0 maxsharp=1.0 minround=-1.0 maxround=1.0 movemax=2 outfile=$base.coo";
  # for out-of-focus stars which look like donuts

  # for VRI 
  $cmd = "stars $file minsig=4 minfwhm=1.4 maxfwhm=6.0 minsharp=-1.0 maxsharp=1.0 minround=-2.0 maxround=1.7 movemax=3 outfile=$base.coo  ";
  # $cmd .= " convolve fwhm=5 image=foo.fts ";
  # for B-band
#   $cmd = "stars $file minsig=3 minfwhm=2.0 maxfwhm=6.0 minsharp=-5.0 maxsharp=1.0 minround=-1.2 maxround=1.2 movemax=3 outfile=$base.coo";
#   $cmd .= " convolve fwhm=4 image=foo.fts ";
  if ($use_box == 1) {
    $cmd .= " box=$box_num ";
  }
  if ($interactive == 1) {
    $cmd .= " verbose show ";
    system("tv $file zoom=1 z=sky-100 l=500 zoom=1; sleep 2");
    #system("tv $file zoom=1 z=2550 l=500 zoom=1; sleep 2");

    if ($debug > 0) {
      printf "cmd is ..$cmd.. \n";
    }
    `$cmd`;
  } else {
    if ($debug > 0) {
      printf "cmd is ..$cmd.. \n";
    }
    `$cmd`;
  }
 }

  if ($interactive == 1) {
    printf "skipping phot because interactive \n";
  }
  else {

    $cmd = "~/old/xvista/phot $file infile=$base.coo outfile=$base.pht aper=3 aper=4 aper=5 ";
    $cmd .= " saturate=30000 readnoise=15 gain=2.2 empscatter";
    if ($debug > 0) {
      printf "cmd is ..$cmd.. \n";
    }
    exec_cmd($cmd);
   }

   if ($interactive == 1) {
     printf "\nhit return to continue: \n";
     $a = <STDIN>;
     `killall -1 tv`;
   }
 
 
}


exit 0;
  



##############################################################################
# PROCEDURE: exec_cmd
#
# DESCRIPTION: Execute the given shell command line.  If the $debug flag
#              is set, we print to stdout the command line, and
#              also print out the result string.
#
# RETURNS:
#              the result of the command
#
#
sub exec_cmd {

  my($cmd, $ret);

  $cmd = $_[0];

  if ($debug > 0) {
    printf "cmd is ..$cmd.. \n";
  }
  $ret = `$cmd`;
  if ($debug > 0) {
    printf "ret is ..$ret.. \n";
  }

  return($ret);
}


