find_missing_time (version 1.0)
You can also look at:
#! /usr/bin/perl
##############################################################################
#
# SYNTAX: find_missing_time inst
#
# DESCRIPTION: This utility tries to determine the cause of the discrepancy
# DESCRIPTION: between the ISAS time and the filtered event time.
#
# VERSION: 1.0
#
# HISTORY: 0.0 -> 1.0 1999-5-07
# HISTORY: Converted from ksh to perl
#
#
##############################################################################
$inst=$ARGV[0];
$inst_letter=substr$inst,0,1;
$inst_number=substr$inst,1,1;
$FTOOL =$ENV{"FTOOL"};
$STOOL =$ENV{"STOOL"};
$UTIL =$ENV{"UTIL"};
$LISTS =$ENV{"LISTS"};
$JOBPAR =$ENV{"JOBPAR"};
$PARFILE=$ENV{"PARFILE"};
$criteria="find_time_criteria${$}.tmp";
$gti="find_time_gtis${$}.tmp";
@filters=`$UTIL/any_filename filter`;
############################################################
# subroutine to add the time for a given set of criteria
# over all filter files
###########################################################
sub sum_times {
$time=0.0;
foreach $filter (@filters) {
chomp($filter);
unlink $gti;
system("$UTIL/setup_parfile $FTOOL/maketime.par \\
infile=${filter} \\
outfile=${gti} \\
expr=\@$criteria \\
name=NAME \\
value=VALUE \\
time=TIME \\
start=START \\
stop=STOP \\
compact=no \\
histkw=yes");
system("$FTOOL/maketime >stdout.log 2>stderr.log");
system("$UTIL/ftool_test maketime $? $0 2 stdout.log stderr.log");
$time += `$STOOL/compute_exposure ${gti}[1]` ;
}
return $time;
}
# end of sum_times function
##############################
#######################################################
# report times already determined
#######################################################
chomp($isas_time=`$UTIL/read_parfile $JOBPAR ${inst_letter}is_isas_time `);
chomp($evt_time =`$UTIL/read_parfile $JOBPAR ${inst}evttime `);
`$UTIL/log_entry "$inst ISAS exposure=$isas_time"`;
`$UTIL/log_entry "$inst screened exposure=$evt_time"`;
###########################################
# read event file screening parameters
###########################################
chomp($ang_dist=`$UTIL/read_parfile $PARFILE ang_dist `);
#################################################
# look for missing time according to instrument
#################################################
if( $inst =~ /g[23]/ ) {
##################
# GIS
##################
######################
# ANG DIST
######################
unlink $criteria;
#########################################
# modify the ANG_DIST criterion
#########################################
open SCREEN, "<$LISTS/gis_isas.cri";
open CRITERIA, ">$criteria";
while( <SCREEN> ) {
if(/ANG_DIST/) {
print CRITERIA "ANG_DIST>0.0 && ANG_DIST<${ang_dist}\n";
} else {
print CRITERIA;
}
}
close SCREEN;
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst ISAS exposure except ANG_DIST<${ang_dist} = $time"`;
######################
# RBM_CONT
######################
unlink $criteria;
#########################################
# modify the RBM_CONT criterion
#########################################
open SCREEN, "<$LISTS/gis_isas.cri";
open CRITERIA, ">$criteria";
while( <SCREEN> ) {
if(/RBM_CONT/) {
print CRITERIA "RBM_CONT<100 &&\n";
} else {
print CRITERIA;
}
}
close SCREEN;
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst ISAS exposure but with RBM_CONT<100 = $time"`;
######################
# H02 screening
######################
unlink $criteria;
#########################################
# add monitor count criterion
#########################################
open SCREEN, "<$LISTS/gis_isas.cri";
open CRITERIA, ">$criteria";
print CRITERIA "(G2_H0+G2_H2+G3_H0+G3_H2<45)&&\n";
print CRITERIA "(G2_H0+G2_H2+G3_H0+G3_H2<0.45*COR**2-13*COR+125)&&\n";
while( <SCREEN> ) { print CRITERIA; }
close SCREEN;
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst ISAS exposure but with H02 criteria = $time"`;
#############################
# screened like event files
#############################
unlink $criteria;
open CRITERIA, ">$criteria";
print CRITERIA "(ACS==0)&&\n";
print CRITERIA "(COR>4)&&\n";
print CRITERIA "(ELV>5)&&\n";
print CRITERIA "(SAA==0)&&\n";
print CRITERIA "(G2_H0+G2_H2+G3_H0+G3_H2<45)&&\n";
print CRITERIA "(G2_H0+G2_H2+G3_H0+G3_H2<0.45*COR**2-13*COR+125)&&\n";
print CRITERIA "(G2_L1>0) &&\n";
print CRITERIA "(RBM_CONT<100)&&\n";
print CRITERIA "(ANG_DIST>0)&& (ANG_DIST<$ang_dist)\n";
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst total time screened like event files = $time"`;
###################################
# as event files and only PH mode
####################################
open CRITERIA, ">>$criteria";
print CRITERIA "&& GIS_MODE==0\n";
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst total PH time screened like event files = $time"`;
} elsif ($inst =~ /s[01]/ ) {
#################
# SIS
#################
######################
# Saturation
######################
unlink $criteria;
open SCREEN, "<$LISTS/sis_isas.cri";
open CRITERIA, ">$criteria";
print CRITERIA "S${inst_number}_SATF0!=1 && S${inst_number}_SATF1!=1 &&\n";
print CRITERIA "S${inst_number}_SATF2!=1 && S${inst_number}_SATF3!=1 &&\n";
while( <SCREEN> ) { print CRITERIA; }
close SCREEN;
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry "$inst unsaturated ISAS exposure = $time"`;
######################
# ANG_DIST
######################
unlink $criteria;
open SCREEN, "<$LISTS/sis_isas.cri";
open CRITERIA, ">$criteria";
print CRITERIA "S${inst_number}_SATF0!=1 && S${inst_number}_SATF1!=1 &&\n";
print CRITERIA "S${inst_number}_SATF2!=1 && S${inst_number}_SATF3!=1 &&\n";
while( <SCREEN> ) {
if( /ANG_DIST/ ) {
print CRITERIA "ANG_DIST>0.0 && ANG_DIST<${ang_dist} &&\n";
} else {
printf CRITERIA;
}
}
close SCREEN;
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry \\
"$inst unsaturated ISAS exp with ANG_DIST<$ang_dist = $time"`;
############################
# Roughly like Event files
############################
chomp($cor =`$UTIL/read_parfile $PARFILE cor `);
chomp($elv =`$UTIL/read_parfile $PARFILE elv `);
chomp($br_earth=`$UTIL/read_parfile $PARFILE br_earth`);
unlink $criteria;
open CRITERIA, ">$criteria";
print CRITERIA "ACS==0 &&\n";
print CRITERIA "COR>$cor &&\n";
print CRITERIA "ELV>$elv &&\n";
print CRITERIA "BR_EARTH>$br_earth &&\n";
print CRITERIA "SAA==0 &&\n";
print CRITERIA "ANG_DIST>0 && ANG_DIST<$ang_dist &&\n";
print CRITERIA "S${inst_number}_SATF0!=1 && S${inst_number}_SATF1!=1 &&\n";
print CRITERIA "S${inst_number}_SATF2!=1 && S${inst_number}_SATF3!=1 &&\n";
print CRITERIA "(S${inst_number}_PIXL0>0. || S${inst_number}_PIXL1>0. ||\n";
print CRITERIA " S${inst_number}_PIXL2>0. || S${inst_number}_PIXL3>0.)\n";
close CRITERIA;
$time=sum_times;
`$UTIL/log_entry \\
"$inst exposure screened roughly like event files = $time"`;
##################################
# High PIXL values
###################################
open CRITERIA, ">>$criteria";
print CRITERIA "&& S${inst_number}_PIXL0<1000 && \n";
print CRITERIA " S${inst_number}_PIXL1<1000 &&\n";
print CRITERIA " S${inst_number}_PIXL2<1000 &&\n";
print CRITERIA " S${inst_number}_PIXL3<1000\n";
$time=sum_times;
`$UTIL/log_entry \\
"$inst exp like evt files and S${inst_num}_PIXLm<1000 = $time"`;
}
unlink $criteria;
unlink $gti;