package Subs::BATQmap; ############################################################################## # # DESCRIPTION: Create BAT quality map # # Port of Craig Markwardt's BAT::qmap modules to SDC. # # # HISTORY: $Log: BATQmap.pm,v $ # HISTORY: Revision 1.9 2009/05/05 20:03:09 apsop # HISTORY: undo check if detmask file exist # HISTORY: # HISTORY: Revision 1.8 2009/04/28 19:01:52 apsop # HISTORY: check if detmask file exist # HISTORY: # HISTORY: Revision 1.7 2007/12/18 19:57:18 apsop # HISTORY: Apply detector mask to quality maps. # HISTORY: # HISTORY: Revision 1.6 2005/11/08 17:23:42 apsop # HISTORY: Change call for qualcal filenames. # HISTORY: # HISTORY: Revision 1.5 2005/02/09 23:39:01 apsop # HISTORY: Added message identifiers. # HISTORY: # HISTORY: Revision 1.4 2004/11/12 00:01:10 apsop # HISTORY: Put in test for $enable_map being empty or undefined. # HISTORY: # HISTORY: Revision 1.3 2004/11/10 18:02:06 apsop # HISTORY: Replace SimpleFITS call for getting TRIGTIME with FITSfile call. # HISTORY: # HISTORY: Revision 1.2 2004/11/09 22:01:48 apsop # HISTORY: Corrected retrieval of BAT enable map from repository. # HISTORY: # HISTORY: Revision 1.1 2004/11/08 18:37:43 apsop # HISTORY: Module for creating BAT quality map. # HISTORY: # HISTORY: Revision 1.1 2004/09/24 20:51:19 wiegand # HISTORY: Initial revision # HISTORY: # # VERSION: $Revision: 1.9 $ # # ############################################################################## use Subs::Sub; @ISA = ("Subs::Sub"); use strict; use Util::HEAdas; use Util::BATCave; use Util::SwiftTags; sub new { my $proto=shift; my $self=$proto->SUPER::new(); $self->{DESCRIPTION}= 'Creating BAT quality map'; return $self; } ################## # METHODS: ################## sub body { my $self = shift; my $log = $self->log; my $filename = $self->filename; my $procpar = $self->procpar; my $jobpar = $self->jobpar; ################################################ # export all the shared files to the repository ################################################ $log->entry("Exporting gainoff and dpflags files to the shared repository"); $filename->export_to_repository('bgaoff', 'bat'); $filename->export_to_repository('bdetflag', 'bat'); ################################################# # look up BAT trigger time # TODO: should this be done in LocateBurst and written to jobpar? YES!! ################################################# my $ack = Util::BATCave::get_tdrss_ack($self); my $enable_map; if ($ack) { my $ack_fits = Util::FITSfile->new($ack, 0); my $trigtime = $ack_fits->keyword('TRIGTIME'); unless($trigtime) { $trigtime = 0; $log->error(1, "unable to get TRIGTIME from $ack"); } # TODO: write TRIGTIME to each event file[EVENTS] $enable_map = $filename->fetch_from_repository('bdetflag', 'bat', '', $trigtime); } my @event_files = $filename->get('unfiltered', 'bat', 'evshto', '*'); my $inlist = join(',', @event_files); if (not $inlist) { $log->entry('no BAT event files, will not make quality map'); return; } my $dpitmp = 'dpi.tmp'; unlink($dpitmp); my $batbinevt = Util::HEAdas->new('batbinevt') ->params({ infile => $inlist, outfile => $dpitmp, outtype => 'DPI', timedel => 0, timebinalg => 'uniform', energybins => '-', weighted => 'NO', outunits => 'COUNTS', clobber => 'yes', }) ->run; if ($batbinevt->had_error or not -f $dpitmp) { $log->error([ 2, BAT_TASK_ERROR ], "unable to create quality map"); unlink($dpitmp); return; } my $mask = $filename->get('maskimage', 'bat', '', 0); unless($enable_map && -f $enable_map) { $enable_map = 'NONE'; } my $batdetmask = Util::HEAdas->new('batdetmask') ->params({date => $dpitmp, outfile => $mask, detmask => $enable_map}) ->run; if ($batdetmask->had_error or not -f $mask) { $log->error([ 2, BAT_TASK_ERROR ], "unable to create quality map"); unlink($dpitmp); return; } my $qmap = $filename->get('qualcal', 'bat', '', 0); my $bathotpix = Util::HEAdas->new('bathotpix') ->params({ infile => $dpitmp, outfile => $qmap, detmask => $enable_map, clobber => 'yes', }) ->run; if ($bathotpix->had_error or not -f $qmap) { $log->error([ 2, BAT_TASK_ERROR ], "unable to create quality map"); } unlink($dpitmp); } 1;