];
# Order of entries in each cat
-$entries->{'main'} = ['time', 'rate','onlineqa','up'];
+$entries->{'main'} = ['time', 'rate','onlineqa','up','speech'];
$entries->{'daq'} = ['trbnet', 'timeouts', 'busy','readout'];
$entries->{'trg'} = ['spill', 'accepted', 'source','pt1rate', 'start']; #,
$entries->{'rate'} = ['pt1','start','hodo','pion1','pion2'];
$entries->{'mdc'} = ['token', 'blocked', 'temp', 'linkqual', 'voltage'];
$entries->{'endp'} = ['mdc','rich', 'tof', 'rpc', 'other'];
$entries->{'feeerr'} = ['rich', 'trb', 'feeerr','trginp','trgqual'];
-$entries->{'other'} = ['magnet','speech','rich','shower','mdcinvalid'];
$entries->{'pion'} = ['nxstatus', 'HV', 'HVcurr', 'cooling'];
+$entries->{'other'} = ['magnet','rich','shower','mdcinvalid','sequencer'];
our $QAServer = "hades33";
--- /dev/null
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+
+use FileHandle;
+use Data::Dumper;
+use Hmon;
+use QA;
+use List::Util qw(min max);
+use Perl2Epics;
+
+my @names;
+my @variables = qw(
+
+HAD:TOFHV:G1:status:alive:roc:average
+HAD:TOFHV:G2:status:alive:roc:average
+HAD:TOFHV:G3:status:alive:roc:average
+HAD:TOFHV:G4:status:alive:roc:average
+HAD:TOFHV:G5:status:alive:roc:average
+HAD:TOFHV:G6:status:alive:roc:average
+HAD:FWHV:G7:status:alive:roc:average
+HAD:RPCHV:G8:status:alive:roc:average
+HAD:RPCHV:G9:status:alive:roc:average
+HAD:RICH:HV:G25:status:alive:roc:average
+HAD:SHWR:HV:G26:status:alive:roc:average
+HAD:SHWR:HV:G27:status:alive:roc:average
+HAD:SHWR:HV:G28:status:alive:roc:average
+HAD:SHWR:HV:G29:status:alive:roc:average
+HAD:SHWR:HV:G30:status:alive:roc:average
+HAD:SHWR:HV:G31:status:alive:roc:average
+HAD:RICH:HV:G32:status:alive:roc:average
+HAD:MDC:HV:G41:status:alive:roc:average
+HAD:MDC:HV:G42:status:alive:roc:average
+HAD:MDC:HV:G43:status:alive:roc:average
+HAD:MDC:HV:G44:status:alive:roc:average
+HAD:MDC:HV:G4011:status:alive:roc:average
+HAD:MDC:HV:G4012:status:alive:roc:average
+HAD:MDC:HV:G4013:status:alive:roc:average
+HAD:MDC:HV:G4014:status:alive:roc:average
+HAD:MDC:HV:G4015:status:alive:roc:average
+HAD:MDC:HV:G4016:status:alive:roc:average
+HAD:MDC:HV:G4021:status:alive:roc:average
+HAD:MDC:HV:G4022:status:alive:roc:average
+HAD:MDC:HV:G4023:status:alive:roc:average
+HAD:MDC:HV:G4024:status:alive:roc:average
+HAD:MDC:HV:G4025:status:alive:roc:average
+HAD:MDC:HV:G4026:status:alive:roc:average
+HAD:MDC:HV:G4031:status:alive:roc:average
+HAD:MDC:HV:G4032:status:alive:roc:average
+HAD:MDC:HV:G4033:status:alive:roc:average
+HAD:MDC:HV:G4034:status:alive:roc:average
+HAD:MDC:HV:G4035:status:alive:roc:average
+HAD:MDC:HV:G4036:status:alive:roc:average
+HAD:MDC:HV:G4041:status:alive:roc:average
+HAD:MDC:HV:G4042:status:alive:roc:average
+HAD:MDC:HV:G4043:status:alive:roc:average
+HAD:MDC:HV:G4044:status:alive:roc:average
+HAD:MDC:HV:G4045:status:alive:roc:average
+HAD:MDC:HV:G4046:status:alive:roc:average
+HAD:MDC:HV:P1:S1:TRIP:status:alive:roc:average
+HAD:MDC:HV:P1:S2:TRIP:status:alive:roc:average
+HAD:MDC:HV:P1:S3:TRIP:status:alive:roc:average
+HAD:MDC:HV:P1:S4:TRIP:status:alive:roc:average
+HAD:MDC:HV:P1:S5:TRIP:status:alive:roc:average
+HAD:MDC:HV:P1:S6:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S1:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S2:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S3:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S4:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S5:TRIP:status:alive:roc:average
+HAD:MDC:HV:P2:S6:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S1:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S2:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S3:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S4:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S5:TRIP:status:alive:roc:average
+HAD:MDC:HV:P3:S6:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S1:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S2:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S3:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S4:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S5:TRIP:status:alive:roc:average
+HAD:MDC:HV:P4:S6:TRIP:status:alive:roc:average
+HAD:MDC:TEMP:TempLV:status:alive:roc:average
+);
+
+# HAD:MDC:HV:Ind1:TRIP:status:alive:roc:average
+# HAD:MDC:HV:Ind2:TRIP:status:alive:roc:average
+# HAD:MDC:HV:Ind3:TRIP:status:alive:roc:average
+# HAD:MDC:HV:Ind4:TRIP:status:alive:roc:average
+
+my $flog = QA::OpenQAFile();
+
+for my $v (@variables) {
+ my $name = $v;
+ $name =~ s/:status:alive:roc:average//;
+ push(@names,$name);
+ Perl2Epics::Connect($name,$v);
+ }
+
+
+
+while(1) {
+ my $qastate = QA::OK;
+ my $count = 0;
+ my $longtxt = "";
+ my $data = Perl2Epics::GetAll();
+
+ for my $v (@names) {
+ next if $data->{$v}->{val} < 0;
+ if($data->{$v}->{val} < 0.5) {
+ $qastate = max($qastate,QA::FATAL);
+ $longtxt .= "$v stopped, ";
+ $count++;
+ }
+# elsif($data->{$v}->{val} < 0.95) {
+# $qastate = max($qastate,QA::WARN);
+# $longtxt .= "$v strange, ";
+# $count++;
+# }
+ }
+
+ $longtxt = "All sequencers running" if $longtxt eq "";
+ my $value = ((scalar @names)-$count)."/".(scalar @names);
+ QA::WriteQALog($flog,"other","sequencer",20,$qastate,"HV Sequencer",$value,$longtxt);
+
+ sleep(10);
+ }
+