Subs::AddGTI2Att (version 0.0)


package Subs::AddGTI2Att;

##############################################################################
#
# DESCRIPTION: This module has he simple functionality of appending
# DESCRIPTION: an extension that contains the GTIsto all existing
# DESCRIPTION: attitude files
#
# HISTORY: $Log: AddGTI2Att.pm,v $
# HISTORY: Revision 1.4  2012/08/15 06:10:46  apsop
# HISTORY: Append the GTI extensions from ALL files to the attitude
# HISTORY: file (*sat.fits). [Bob W.]
# HISTORY:
# HISTORY: Revision 1.3  2012/01/12 06:52:03  apsop
# HISTORY: Changes going to proc3.15.03
# HISTORY:
#
# VERSION: 0.0
#
##############################################################################

use Subs::Sub;
use Util::Log;
@ISA = ("Subs::Sub");

use strict;


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

	$self->{DESCRIPTION}="Adding GTI\'s to spacecraft attitude file";

	return $self;
}


sub body {
	my $self=shift;

	my $log	 =$self->log();
	my $filename=$self->filename();
	my $jobpar	=$self->jobpar();

	my $attitude = $filename->get('attitude', 's');

	if (!-e $attitude) {
		$log->error(1, "Spacecraft attitude file does not exist, unable to add GTI's to file");
		return;
	}

	my @gti = (
		{ TAG => 'ss', OUT => 'GTI', DESC => 'Snapshots' },
		{ TAG => 'at', IN => 'STDGTI', OUT => 'STDGTI', DESC => 'Good attitude' },
		{ TAG => 'st', DESC => 'Settling' },
		{ TAG => 'po', DESC => 'Pointing' },
		{ TAG => 'np', IN => 'STDGTI', DESC => 'Not pointing' },
		{ TAG => 'ot', DESC => 'On target' },
		{ TAG => 'nf', DESC => 'Narrow field instruments' },
		{ TAG => 'tp', DESC => 'Target pointing' },
		{ TAG => 'ng', DESC => 'No gap' },
		{ TAG => 'ra', DESC => 'Retried input to aspect' },
		{ TAG => 'to', DESC => 'Total' },
		{ TAG => 'im', INST => 'b', DESC => 'BAT images' },
		{ TAG => 'im', INST => 'u', DESC => 'UVOT images' },
		{ TAG => 'im', INST => 'x', DESC => 'XRT images' },
	);

	my $ftappend = Util::HEAdas->new('ftappend')
			->params({
			outfile => $attitude,
			});

	my $appended = 0;

	foreach my $gti (@gti) {

		my $inst = $gti->{INST} || 's';
		if (not $gti->{IN}) {
			$gti->{IN} = 'GTI';
		}

		if (not $gti->{OUT}) {
			my $tmp = $inst ne 's' ? $inst : '';
			$gti->{OUT} = "\U$tmp$gti->{TAG}_GTI";
		}

		my $path = $filename->get('gti', $inst, $gti->{TAG});
		if (-f $path) {

			my $input = "$path\[$gti->{IN}]";

			my @card;
			if ($gti->{IN} ne $gti->{OUT}) {
				 push(@card, "#EXTNAME='$gti->{OUT}'");
			}
			if ($gti->{DESC}) {
				 push(@card, "#GTI-DESC='$gti->{DESC}'");
			}

			if (@card) {
				$input .= '[col ' . join(';', @card) . ']';
			}

			$ftappend->params({ infile => $input })->run();
			++$appended;
		}
		else {
			$log->entry("$inst/$gti->{TAG} GTI file not available");
		}
	}

	if (not $appended) {
		$log->error(1, "NO GTI file available, unable to add GTI's to attitude file");
	}

	return;

} # end of body method