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