<& /htmlheader &> <& modelheader &>

Field Summary

<% sprintf "Night %d (MJD %.5f-%.5f)", $nn, $mjd, $mjd + 1 %>
<% _mjd2dateonly($nn) %>

% foreach my $fldkey (@fldkeys) { % my $last_epoch = undef; % foreach my $fld (@{$fldtbl{$fldkey}}) { % my $field = $allfields{$fld->{field_id}}; % } # @{$flds}
Field ID RA (deg) DEC (deg) PA (deg) Filter Exposure
Time
Num
Detections
Detections
<% "Field ID " . $fld->{field_id} . " ($fld->{epoch})" %>
<% $field->fpaId %>
<% $field->surveyMode %>
<% mopslib_mjd2localtimestr($field->epoch, 0, 'T') . ' UT' %> % if (defined($last_epoch)) {
TTI: <% sprintf "%.1f", (($field->epoch - $last_epoch) * 1440) %> min % } % $last_epoch = $field->epoch;

Solar Elongation: <% sprintf "%.2f", $field->se_deg %>°
Ecliptic Latitude: <% sprintf "%+.2f", _ecllat($field->ra, $field->dec, $field->epoch) %>°
Galactic Latitude: <% sprintf "%+.2f", $field->gb_deg %>°

<% $fld->{ra} %> <% sprintf "%+f", $fld->{dec} %> <% $fld->{pa_deg} %> <% $fld->{filter} %> <% $fld->{exposure_time} . 's' %> <% $fld->{num_dets} %> Summary | Detections | % if ($fld->{parent_id} eq 'NULL') { Tracklets | % } Motion

% } # @{$fldtbl} <& /htmlfooter &> <%args> $mjd => undef $nn => undef $tupled => 1 <%init> use Astro::Time; use Astro::SLA; use PS::MOPS::Constants qw($DEG_PER_RAD); use PS::MOPS::Lib qw(:all); use PS::MOPS::DC::Field; # Get basic obsTool summary output. my $model = $m->notes('MODEL'); my $inst = $m->notes('INST'); my $cfg = $inst->getConfig; my $gmt_offset_hours = $cfg->{site}->{gmt_offset_hours}; die "can't get local time" unless defined($gmt_offset_hours); if ($nn) { $mjd = mopslib_nn2mjd($nn, $gmt_offset_hours); } my @stuff = `obsTool --instance $model --show_filter --show_parent_id --show_exposure_time --mjd $mjd`; my @cal = mjd2cal($mjd); my $date = sprintf "%4d-%02d-%02d", @cal[2, 1, 0]; my @things; my %fldtbl; my @fldkeys; my %allfields; @stuff = grep !/^#/, @stuff; foreach (@stuff) { @things = split /\s+/, $_; my $sort_key; if ($tupled) { $sort_key = ($things[9] eq 'NULL' ? $things[0] : $things[9]); } else { $sort_key = $mjd; } push @{$fldtbl{$sort_key}}, { field_id => $things[0], num_dets => $things[1], epoch => $things[2], ra => $things[3], dec => $things[4], obscode => $things[6], filter => $things[7], exposure_time => $things[8], parent_id => $things[9], }; $allfields{$things[0]} = modcf_retrieve($inst, fieldId => $things[0]); } @fldkeys = sort { $a <=> $b } keys %fldtbl; sub _mjd2datestr { my ($mjd) = @_; my ($day, $month, $year, $ut) = mjd2cal($mjd); my ($sign, $hour, $min, $sec) = time2hms($ut, 'H', 2); return sprintf "%4d-%02d-%02dT%02d:%02d:%04.1f", $year, $month, $day, $hour, $min, $sec; } sub _mjd2dateonly { my ($mjd) = @_; my ($day, $month, $year, $ut) = mjd2cal($mjd); return sprintf "%4d-%02d-%02d", $year, $month, $day; } sub _ecllat { my ($ra_deg, $dec_deg, $epoch) = @_; my ($ecllong, $ecllat); slaEqecl($ra_deg / $DEG_PER_RAD, $dec_deg / $DEG_PER_RAD, $epoch, $ecllong, $ecllat); return $ecllat * $DEG_PER_RAD; }