Subs::UvotTdrss (version 0.0)


package Subs::UvotTdrss;
##############################################################################
#
# DESCRIPTION: Does processing of uvot tdrss messages
#
# HISTORY: 
# HISTORY: $Log: UvotTdrss.pm,v $
# HISTORY: Revision 1.1  2006/03/06 17:09:30  apsop
# HISTORY: First production version
# HISTORY:
# HISTORY:
#
# VERSION: 0.0
#
##############################################################################


use Subs::Sub;
use Util::SwiftTags;

@ISA = ("Subs::Sub");
use strict;

sub new {
    my $proto=shift;
    my $self=$proto->SUPER::new();

    $self->{DESCRIPTION}="Process UVOT tdrss messages";

    return $self;
}

##################
# METHODS:
##################

sub body {
  my $self=shift;

  my $log     =$self->log();
  my $filename=$self->filename();
  my $procpar =$self->procpar();
  my $jobpar  =$self->jobpar();
  
  ###############################################
  # Check it we need to reformat the image files
  ###############################################
  my $tempim = 'xrttdrss_fits.tmp';
  my $create = Util::Ftool->new('fimgcreate')
    ->params({bitpix => 8,
	      naxes => '0',
	      datafile => 'none',
	      outfile => $tempim});
  
  my $append = Util::HEAdas->new('ftappend');
  my $cphead = Util::Ftool->new('cphead');
  
  foreach my $mode ('fc', 'ni'){
    my @images = sort( $filename->get('tdmess', 'u', $mode, '*') );
    if(@images){
      my $image = $images[0];
      $create->run();
      foreach $image (@images){
	$append->params({infile => $image .'[1]',
			 outfile => $tempim})
	  ->run();
      }
      
      unlink @images;
      if($mode eq 'ni'){
	$image =~ s/\.fits/_rw.img/;
      }
      rename $tempim, $image;
      my $imfits = Util::FITSfile->new($image);
      
      my ($tstart, $tstop) = (1E10, 0);
      for(my $ext=1; $ext < $imfits->nhdus(); $ext++){
	$imfits->ext($ext);
	my ($start, $stop) = ($imfits->keyword('TSTART'), $imfits->keyword('TSTOP'));
	$tstart = $start if $start < $tstart;
	$tstop = $stop if $stop > $tstop;
      }
      my $start_date = Util::Date->new($tstart);
      my $stop_date = Util::Date->new($tstop);
      
      $imfits->ext(0);
      $imfits->begin_many_keywords();
      $imfits->keyword('INSTRUME', 'UVOT');
      $imfits->keyword('TSTART', $tstart);
      $imfits->keyword('TSTOP', $tstop);
      $imfits->keyword('DATE-OBS', $start_date->date().'T'.$start_date->time() );
      $imfits->keyword('DATE-END', $stop_date->date().'T'.$stop_date->time() );
      $imfits->end_many_keywords();
    }
  }
  
}

1;