Starcheck Red Warnings - May 2005

Check pointing

    if (abs($q_diff->{ra0}*3600) > 1.0 || abs($q_diff->{dec}*3600) > 1.0 || abs($q_diff->{roll0}*3600) > 10.0) {	 
        push @{$self->{warn}}, sprintf("$alarm Target uplink precision problem for MP_TARGQUAT at $c->{date}\n" 
        . "   Error is yaw, pitch, roll (arcsec) = %.2f  %.2f  %.2f\n"
	. "   Use Q1,Q2,Q3,Q4 = %.12f %.12f %.12f %.12f\n",
	$q_diff->{ra0}*3600, $q_diff->{dec}*3600, $q_diff->{roll0}*3600,
	$q_man[0], $q_man[1], $q_man[2], $q_man[3]);
    }

Check dither checking

    unless ($c = find_command($self, "MP_TARGQUAT", -1) and defined $self->{DITHER_ON}) {
	push @{$self->{warn}}, "$alarm Dither status not checked\n";
	return;
    }

Verify OR dither matches backstop dither

    push @{$self->{warn}}, "$alarm Dither mismatch - OR: $or_val != Backstop: $bs_val\n"
       if ($or_val ne $bs_val);

Verify no dither changes during scheduled observing time

    elsif ( $dither->{time} > ( $obs_tstart + $obs_beg_pad ) && $dither->{time} <= $obs_tstop - $obs_end_pad ) {
        push @{$self->{warn}}, "$alarm Dither commanding at $dither->{time}.  During observation.\n";
    }

Verify Quaternion exists

    unless ($c = find_command($self, "MP_TARGQUAT", -1)) {
	push @{$self->{warn}}, "$alarm Missing MP_TARGQUAT cmd\n";
	return;
    }

Verify SIM position in OR and backstop match

    if (abs($par{POS} - $sim_z) > 4) {
       push @{$self->{warn}}, "$alarm SIM position mismatch: OR=$sim_z  BACKSTOP=$par{POS}\n";
    }

Verify that a star catalog exists

    unless ($c = find_command($self, "MP_STARCAT")) {
	push @{$self->{warn}}, "$alarm No star catalog\n";
	return;
    }

Warn if # Fids < 3 for science observations

    push @warn,"$alarm Too Few Fid Lights\n" if (@{$self->{fid}} < $min_fid && $is_science);

Warn if # Acquisition Stars < 4 for science observations or < 5 for ERs

    push @warn,"$alarm Too Few Acquisition Stars\n" if    (@{$self->{acq}} < $min_acq);

Warn if # Guide stars < 5 for science observations or < 6 for ERs

    push @warn,"$alarm Too Few Guide Stars\n" if (@{$self->{gui}} < $min_guide);

Warn if # Guide stars + # Acquisition stars > 8

    push @warn,"$alarm Too Many GUIDE + FID\n" if (@{$self->{gui}} + @{$self->{fid}} + @{$self->{mon}} > 8);

Warn if # Acquisition stars > 8

    push @warn,"$alarm Too Many Acquisition Stars\n" if (@{$self->{acq}} > 8);

Warn if star is on bad star list

    push @warn,sprintf "$alarm Bad AGASC ID. [%2d]: %s\n",$i,$sid if ($bad_id{$sid});

Warn if guide star has no color information (B-V = 0.700)

    if ( $c->{"GS_NOTES$i"} =~ /c/ && $type =~ /BOT|GUI/ ) { push @warn, $marginal_note }

Warn if a non-stellar object is selected

    push @warn, sprintf("$alarm Bad star. [%2d]: Class = %s %s\n", $i,$c->{"GS_CLASS$i"},$note) if ($c->{"GS_NOTES$i"} =~ /b/);

Warn if a Star/fid + $dither outside of CCD boundaries

     if (   $yag > $y_ang_max - $slot_dither || $yag < $y_ang_min + $slot_dither
         || $zag > $z_ang_max - $slot_dither || $zag < $z_ang_min + $slot_dither) {
	 push @warn,sprintf "$alarm Angle Too Large. [%2d]\n",$i;
     }

Warn if outside faint and bright limits ( 6.0 < mag_ok < 10.7 )

     if ($type ne 'MON' and $mag ne '---') {
         if ($mag < $mag_bright or $mag > $mag_faint_red) {
	 	push @warn, sprintf "$alarm Magnitude. [%2d]: %6.3f\n",$i,$mag;
	 } elsif ($mag > $mag_faint_yellow) {
		push @yellow_warn, sprintf "$alarm Magnitude. [%2d]: %6.3f\n",$i,$mag;
	 }
     }

Warn if Search box is too large

	if ($type ne 'MON' and $c->{"HALFW$i"} > 200) {
	    push @warn, sprintf "$alarm Search Box Too Large. [%2d]\n",$i;
	}

Warn if ACQ/BOTH search box smaller than slew error

        my $slew_err = $targquat->{man_err} || 120;	
	if (($type =~ /BOT|ACQ/) and $c->{"HALFW$i"} < $slew_err) {
	    push @warn, sprintf "$alarm Search Box smaller than slew error [%2d]\n",$i;
	}

Check that readout sizes are all 6x6 for science observations

	push @warn, sprintf("$alarm Readout Size. [%2d]: %s Should be 6x6\n", $i, $c->{"SIZE$i"})
	    if ($is_science && $type =~ /BOT|GUI|ACQ/  && $c->{"SIZE$i"} ne "6x6");

Warn if guide star is within dither + 25 arc-seconds (yang or zang) of a bad pixel

	if ( @close_pixels > 0 ) {
     	   my ($closest) = sort { $dr[$a] <=> $dr[$b] } (0 .. $#dr);
	   my $warn = sprintf("$alarm Nearby ACA bad pixel. [%2d] - " .
    		              "Y,Z,Radial seps: " . $close_pixels[$closest],
			      $i); #Only warn for the closest pixel
           push @warn, $warn;
	}

Warn if Fid within $dither + 25 arcsec of a star and within 4 mags

   if ($type eq 'FID' and $dz < $dither+25 and $dy < $dither+25 and $dm > -5.0) {
      my $warn = sprintf("$alarm Fid spoiler. [%2d]- %10d: " .
                         "Y,Z,Radial,Mag seps: %3d %3d %3d %4s\n",$i,$star->{id},$dy,$dz,$dr,$dm_string); 
      if ($dm > -4.0)  { push @warn, $warn } 
      else { push @yellow_warn, $warn }
   }

Warn if star within search box + search error and within 0.2 mags

   my $search_err = $targquat->{man_err} || 120;
   if ($type ne 'MON' and $dz < $halfw + $search_err and $dy < $halfw + $search_err and $dm > -1.0) {
      my $warn = sprintf("$alarm Search spoiler. [%2d]- %10d: " .
			 "Y,Z,Radial,Mag seps: %3d %3d %3d %4s\n",$i,$star->{id},$dy,$dz,$dr,$dm_string);
      if ($dm > -0.2)  { push @warn, $warn }
      else { push @yellow_warn, $warn }
   }

Warn for Common column: spolier within 50 arc-secs, spoiler is 4.5 mags brighter than star, and spoiler is located between star and readout

   if ($type ne 'MON'
       and $dz < $col_sep_dist
       and $dm > $col_sep_mag
       and ($star->{yag}/$yag) > 1.0 
       and abs($star->{yag}) < 2500) {
       push @warn,sprintf("$alarm Common Column. [%2d] - %10d " .
			   "at Y,Z,Mag: %5d %5d %5.2f\n",$i,$star->{id},$star->{yag},$star->{zag},$star->{mag});
   }

Check monitor commanding

   push @{$self->{warn}}, sprintf("$alarm Monitor Window [%2d] is in slot %2d and should be in slot 7.\n"
				   , $_, $c->{"IMNUM$_"}) if $c->{"IMNUM$_"} != 7;

   push @{$self->{warn}}, sprintf("$alarm Monitor Window [%2d] is %6.2f arc-seconds off of OR specification\n"
				   , $_, $sep) if $sep > 20.;

   push @{$self->{warn}}, sprintf("$alarm Monitor Window [%2d] is set to Convert-to-Track\n"
				   , $_) if $track == 1;

   push @{$self->{warn}}, sprintf("$alarm DTS for [%2d] is set to slot %2d which does not contain a guide star.\n", 
				   $_, $dts_slot) if $dts_type =~ /NULL/;

   unless ($manv = find_command($self, "MP_TARGQUAT", -1)) {
      push @{$self->{warn}}, sprintf("$alarm Cannot find maneuver for checking monitor commanding\n");
      return;
   }

   foreach $cmd (qw (AODSDITH AOACRSET AOENDITH)) {
      next if ($cnt{$cmd} == 1);
      $cnt{$cmd} = 'no' if ($cnt{$cmd} == 0);
      push @{$self->{warn}}, "$alarm Found $cnt{$cmd} $cmd commands near " . time2date($t_manv+$dt{$cmd}) . "\n";
   }

Check Fid commanding

   unless (defined $self->{SI} && defined $self->{SIM_OFFSET_Z}) {
      push @{$warn}, "$alarm Unable to check fids because SI or SIM_OFFSET_Z undefined\n";
      return;
   }

   my ($yag, $zag, $error) = calc_fid_ang($fid, $self->{SI}, $self->{SIM_OFFSET_Z});
   if ($error) {
      push @{$warn}, "$alarm $error\n";
      next;
   }

   push @{$warn}, "$alarm Fid $self->{SI} $fid is turned on with FIDSEL but not found in star catalog\n"
      unless ($fidsel_ok);

   push @{$warn}, "$alarm Fid with IDX=\[$self->{fid}[$i_fid]\] is in star catalog but is not turned on via FIDSEL\n"
      unless ($fid_ok[$i_fid]);

Flag stars with bad magnitude or magnitude error

   push @{$self->{warn}}, sprintf("$alarm Star with bad mag %.1f or magerr %.1f at (yag,zag)=%.1f,%.1f\n",
				   $mag, $magerr, $yag, $zag);
   }



Aspect Information main page



Comments or questions: Aspect Help