package SlewProcess;
use strict;
use English;
use Carp;
use vars qw(@ISA $VERSION $name $author $date $version @instList $numberOfStreams);
@ISA = qw(Module);
use ModuleResources;
use ModuleUtil;
$name = __PACKAGE__;
$VERSION = '0.15';
$version = $VERSION;
$author = 'Duncan Law-Green, Richard Saxton';
$date = '2010-08-10';
@instList = qw(all);
sub numberOfStreams
{
return 1;
}
sub evaluateRules
{
return ignore()
if ( ! $ENV{'PCMS_ISSLEW'} );
start()
if complete(
module => 'MakeCIF'
, instrument => 'all'
, stream => 1
);
}
sub performAction
{
info("Module version number: $version");
if ( ! $ENV{'PCMS_ISSLEW'} ) {
info("PCMS_ISSLEW is not set. Ignoring SlewProcess.");
return ignore();
}
info("PCMS_ISSLEW is set. Continuing with SlewProcess.");
my $pn_exp_id = exposureID(instrument => 'epn',
stream => 1 );
my $mos1_exp_id = exposureID(instrument => 'emos1',
stream => 1 );
my $mos2_exp_id = exposureID(instrument => 'emos2',
stream => 1 );
my $pn_filter = getExposureProperty(instrument => 'epn',
exp_id => $pn_exp_id,
name => 'filter') || "Inactive" ;
info("PN Filter: $pn_filter");
my $mos1_filter = getExposureProperty(instrument => 'emos1',
exp_id => $mos1_exp_id,
name => 'filter') || "Inactive" ;
info("MOS1 Filter: $mos1_filter");
my $mos2_filter = getExposureProperty(instrument => 'emos2',
exp_id => $mos2_exp_id,
name => 'filter') || "Inactive" ;
info("MOS2 Filter: $mos2_filter");
my $pn_mode = getExposureProperty(instrument => 'epn',
exp_id => $pn_exp_id,
name => 'mode') || "Inactive" ;
info("PN Mode: $pn_mode");
my $mos1_mode = getExposureProperty(instrument => 'emos1',
exp_id => $mos1_exp_id,
name => 'mode') || "Inactive" ;
info("MOS1 Mode: $mos1_mode");
my $mos2_mode = getExposureProperty(instrument => 'emos2',
exp_id => $mos2_exp_id,
name => 'mode') || "Inactive" ;
info("MOS2 Mode: $mos2_mode");
if ($pn_filter !~ /^Medium/ && $mos1_filter !~ /^Medium/ && $mos2_filter !~ /^Medium/) {
info("Incorrect EPIC filter for slew: $pn_filter | $mos1_filter | $mos2_filter, should be Medium.");
info("Ignoring SlewProcess...");
return ignore();
}
if ($pn_mode !~ /^(PrimeFullWindow|PrimeLargeWindow|PrimeFullWindowExtended)/ && $mos1_mode !~ /^(PrimeFullWindow|PrimeLargeWindow|PrimeFullWindowExtended)/ && $mos2_mode !~ /^(PrimeFullWindow|PrimeLargeWindow|PrimeFullWindowExtended)/) {
info("Incorrect EPIC mode for slew: $pn_mode | $mos1_mode | $mos2_mode, should be PrimeFullWindow || PrimeLargeWindow || PrimeFullWindowExtended.");
info("Ignoring SlewProcess...");
return ignore();
}
info("Running epproc on slew sequence");
doCommand(
'epproc'
, removetemporaries => 1
, removeintermediategtis => 1
, removeintermediateeventlists => 1
, selectccds => 0
)
or return exception();
info("Running eslewchain on slew sequence");
doCommand(
'eslewchain'
)
or return exception();
success();
}
1;