]> jspc29.x-matter.uni-frankfurt.de Git - hadesdaq.git/commitdiff
update hmon scripts
authorhadaq <jan@lxhadeb07>
Tue, 7 Jan 2025 13:41:19 +0000 (14:41 +0100)
committerhadaq <jan@lxhadeb07>
Tue, 7 Jan 2025 13:41:19 +0000 (14:41 +0100)
.gitignore
hmon/Perl2Epics2.pm [new symlink]
hmon/automatic_restart_logger.conf [new file with mode: 0644]
hmon/ecal_recover_dead_slow_channels_logger.conf [new file with mode: 0644]
hmon/hmon_mdcnew_rate.pl
hmon/hmon_mdcnew_triggererrors.pl [new file with mode: 0644]
hmon/permanent/hmon_environment.pl
hmon/permanent/hmon_mdcpressure.pl

index 1658b877b2d7bf82bc23984d5d25bfe867d2d670..b18c1c601cfcd2dc1ba107df4e785db3935dad8f 100644 (file)
@@ -36,3 +36,5 @@ oldscripts
 *.sav*
 threshold
 thr_trb3
+*_bck
+test
diff --git a/hmon/Perl2Epics2.pm b/hmon/Perl2Epics2.pm
new file mode 120000 (symlink)
index 0000000..2e0884f
--- /dev/null
@@ -0,0 +1 @@
+../nettools/Perl2Epics2.pm
\ No newline at end of file
diff --git a/hmon/automatic_restart_logger.conf b/hmon/automatic_restart_logger.conf
new file mode 100644 (file)
index 0000000..d430d81
--- /dev/null
@@ -0,0 +1,8 @@
+log4perl.logger.automatic_restart=DEBUG, A1
+log4perl.appender.A1=Log::Dispatch::FileRotate
+log4perl.appender.A1.filename=/home/hadaq/trbsoft/hadesdaq/hmon/logs/automatic_restart.log
+log4perl.appender.A1.max= 3
+log4perl.appender.A1.size= 1024000
+log4perl.appender.A1.mode=append
+log4perl.appender.A1.layout=Log::Log4perl::Layout::PatternLayout
+log4perl.appender.A1.layout.ConversionPattern=%d %p> %F{1}:%L %M - %m%n
diff --git a/hmon/ecal_recover_dead_slow_channels_logger.conf b/hmon/ecal_recover_dead_slow_channels_logger.conf
new file mode 100644 (file)
index 0000000..3a22cc3
--- /dev/null
@@ -0,0 +1,9 @@
+log4perl.logger.automatic_restart=DEBUG, A1
+log4perl.appender.A1=Log::Dispatch::FileRotate
+log4perl.appender.A1.filename=/data/logs_permanent/ecal_recover_dead_slow_channels.log
+log4perl.appender.A1.max= 1000
+log4perl.appender.A1.size= 1024000
+log4perl.appender.A1.mode=append
+log4perl.appender.A1.layout=Log::Log4perl::Layout::PatternLayout
+#log4perl.appender.A1.layout.ConversionPattern=%d %p> %F{1}:%L %M - %m%n
+log4perl.appender.A1.layout.ConversionPattern=%d %p> %m%n
index 9ef1ecce945bbd19439af91170fae8f94b06989e..a6f0c4e289c3ea999477510eb5a1d7f7c8d2d9a4 100755 (executable)
@@ -67,23 +67,57 @@ HPlot::PlotInit({
   showvalues => 0,  
   });  
 
-my $str  = Hmon::MakeTitle(13, 17, "MDC All Hit Rate / MDC Spike Rate",0);
+
+HPlot::PlotInit({
+  name    => "MdcRateCounts",
+  file    => "files/MdcRateCounts",
+  title   => "MDC Rate Counts",
+  entries => 501,
+  curves  => 4,
+  type    => HPlot::TYPE_HISTORY,
+  output  => HPlot::OUT_PNG,
+  xlabel  => "Hitrate",
+  ylabel  => "Channel Count",
+  sizex   => 850,
+  sizey   => 530,
+  nokey   => 0,
+  buffer  => 1,
+  ymin    => 0.99,
+  ymax    => "1000<*",
+  xmin    => -1,
+  xmax    => 501,
+#   cbmax   => "1000<*<1E6",
+#   cbmin   => 0,
+  noinit  => 1,
+  additional => "set logscale y; set xtics(0 0,'10' 29, '100' 50, '1k' 89, '4k' 126, '10k' 158, '40k' 223, '100k' 281, '400k' 398, '1M' 500);",
+  showvalues => 0, 
+  xscale  => 1,
+  countup => 1,
+  titles => ["Spikes","Hits","All","HitSum"],
+  });    
+  
+  
+my $str  = Hmon::MakeTitle(13, 17, "MDC Saved Hit Rate / MDC Spike Rate",0);
 $str .= qq@<img src="%ADDPNG files/MdcRate.png%" type="image/png">\n@;
 $str .= qq@<img src="%ADDPNG files/MdcSpikeRate.png%" type="image/png">\n@;
-
 $str .= Hmon::MakeFooter();
-Hmon::WriteFile("MDCnewRate",$str);
+Hmon::WriteFile("MDCNewRate",$str);
 
+$str  = Hmon::MakeTitle(11, 11, "MDC Rate / Channel",0);
+$str .= qq@<img src="%ADDPNG files/MdcRateCounts.png%" type="image/png">\n@;
+$str .= Hmon::MakeFooter();
+Hmon::WriteFile("MDCNewRateChannels",$str);
 
 my $old;
-my $oold;
-my $oldtime = time();
-my $ooldtime = time();
-my $time = time();
-my $otime = time();
+my $oold;
+my $oldtime;
+$oldtime->[0]=0;$oldtime->[1]=0;$oldtime->[2]=0;
+# my $ooldtime = time();
+my $otime = time();
 my $diff;
 my $iter = 0;
 
+my $histmax = 500;
 
 
 trb_init_ports() or die trb_strerror();
@@ -95,14 +129,21 @@ my $shorttext = "OK";
 while(1) {
   HPlot::PlotClear('MdcRate');
   HPlot::PlotClear('MdcSpikeRate');
-
-  my $tdiff = (time() - $oldtime)||1;
-  my $o  = trb_register_read_mem(0xfe91,0xc120,0,32) or die trb_strerror() or sleep 5 and next;   
-  my $otdiff = (time() - $ooldtime)||1;
-  my $oo = trb_register_read_mem(0xfe91,0xdfc0,0,32) or die trb_strerror() or sleep 5 and next;
+  
+  my $histograms;
+
+  my $tdiff->[0] = (time() - $oldtime->[0])||1;
+     $oldtime->[0] = time();
+  my $o->[0]  = trb_register_read_mem(0xfe91,0xc120,0,32) or die trb_strerror() or sleep 5 and next;   
+     $tdiff->[1] = (time() - $oldtime->[1])||1;
+     $oldtime->[1] = time();
+     $o->[1] = trb_register_read_mem(0xfe91,0xc100,0,32) or die trb_strerror() or sleep 5 and next;
+     $tdiff->[2] = (time() - $oldtime->[2])||1;
+     $oldtime->[2] = time();
+     $o->[2]  = trb_register_read_mem(0xfe91,0xdfc0,0,32) or die trb_strerror() or sleep 5 and next;   
 
   if (defined $old) {
-    foreach my $b (keys %$o) {
+    foreach my $b (keys %{$o->[0]}) {
       #my $ratesum = 0;
       my($pl,$se,$bo,$en) = MDC::get_position($b);
       
@@ -110,49 +151,65 @@ while(1) {
       my $xpos = $en*32;
       my $ypos = $pl*120+$se*20+$bo;
 
-      for my $v (0..31) {
-        my $vdiff = ($o->{$b}->[$v]&0xffffff) - ($old->{$b}->[$v]&0xffffff);
-        
+      for my $v (0..31) {  #Spikes
+        my $vdiff = ($o->[0]{$b}[$v]&0xffffff) - ($old->[0]{$b}[$v]&0xffffff);
         if ($vdiff < 0) { $vdiff += 2**24;}
-        $diff->{$b}->[$v] = $vdiff/$tdiff;
-        HPlot::PlotFill('MdcSpikeRate',$diff->{$b}->[$v],$xpos+$v,$ypos);
+        $vdiff /= $tdiff->[0];
+        $diff->[0]{$b}[$v] = $vdiff;
+        HPlot::PlotFill('MdcSpikeRate',$vdiff,$xpos+$v,$ypos);
+#         $histograms->[0][max(0,min(1000,log($vdiff||.001)*64))]++;
+        $histograms->[0][histbin($vdiff)]++;
         }
-      for my $v (0..31) {
-        my $vdiff = ($oo->{$b}->[$v]&0xffffff) - ($oold->{$b}->[$v]&0xffffff);
-        
+      for my $v (0..31) {#Saved
+        my $vdiff = ($o->[1]{$b}[$v]&0xffffff) - ($old->[1]{$b}[$v]&0xffffff);
         if ($vdiff < 0) { $vdiff += 2**24;}
-        $diff->{$b}->[$v+32] = $vdiff/$otdiff;
-        HPlot::PlotFill('MdcRate',$diff->{$b}->[$v+32],$xpos+$v,$ypos);
+        $vdiff /= $tdiff->[1];
+        $diff->[1]{$b}[$v] = $vdiff;
+        HPlot::PlotFill('MdcRate',$vdiff,$xpos+$v,$ypos);
+        $histograms->[1][histbin($vdiff)]++;
+        }
+      for my $v (0..31) { #AllHits
+        my $vdiff = ($o->[2]{$b}[$v]&0xffffff) - ($old->[2]{$b}[$v]&0xffffff);
+        if ($vdiff < 0) { $vdiff += 2**24;}
+        $vdiff /= $tdiff->[2];
+        $diff->[2]{$b}[$v] = $vdiff;
+        $histograms->[2][histbin($vdiff)]++;
         }
-
       }
     HPlot::PlotDrawFork('MdcRate');    
     HPlot::PlotDrawFork('MdcSpikeRate');
-    
-    
-
-   }
-    
-#   if(sum(@lowrate) > $lowratecount * 6) {
-#   
-#     $qastate = QA::OK;  
-#     $text = "OK";
-#     $shorttext = "";
-#     
-#     for my $i (0..5) {
-#       if ($highrate[$i] > $highratecount) {
-#         $qastate = QA::ERROR;
-#         $shorttext = "Problem";
-#         $text = "Sector $i has $highrate[$i] high rates.";
-#         }
-#       }
-#       
-# #     QA::WriteQALog($fqa,"feeerr","rpc", 60, $qastate, "RPC Thresh", $shorttext, $text);
-#     }
-    
+
+    for my $i (0..2) {
+      for my $j (0..$histmax) {
+        HPlot::PlotFill('MdcRateCounts',($histograms->[$i][$j]||1),$j,$i);
+        }
+      }
+    my $sum = 0;  
+    for my $j (0..$histmax) {
+      $sum += $histograms->[2][$histmax-$j]//0;
+      HPlot::PlotFill('MdcRateCounts',$sum,$histmax-$j,3);
+      }      
+    HPlot::PlotDrawFork('MdcRateCounts');
+#     print Dumper $histograms;
+#     exit;    
+    }
+     
   $old = $o;
-  $oold = $oo;
-  $oldtime = time();
-  $ooldtime = time();
   sleep 1;
+
   }
+
+sub histbin {
+  my $val = shift @_;
+  my $ret = 0;
+  
+
+  $ret = sqrt(sqrt($val*62500));
+  return 0    if $ret < 0;
+  return $histmax if $ret > $histmax;
+  return $ret;
+
+}
+  
diff --git a/hmon/hmon_mdcnew_triggererrors.pl b/hmon/hmon_mdcnew_triggererrors.pl
new file mode 100644 (file)
index 0000000..b9d4994
--- /dev/null
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use Data::Dumper;
+use Data::TreeDumper;
+use Hmon;
+use QA;
+use HPlot;
+use lib '.';
+use MDC;
+use Time::HiRes qw(usleep time);
+use List::Util qw[min max];
+
+use HADES::TrbNet;
+
+#$ENV{DAQOPSERVER} = 'localhost:40';
+trb_init_ports() or die trb_strerror();
+
+
+HPlot::PlotInit({
+  name    => "MDCNewTemps",
+  file    => "files/MDCNewTemps",
+  title   => "Temperatures",
+  entries => 80,
+  curves  => 30,
+  type    => HPlot::TYPE_HEATMAP,
+  output  => HPlot::OUT_PNG,
+  zlabel  => "Hitrate",
+  sizex   => 610,
+  sizey   => 510,
+  nokey   => 1,
+  buffer  => 1,
+  ymin    => 29.5,
+  ymax    => -0.5,
+  xmin    => -0.5,
+  xmax    => 79.5,
+  #cbmax   => "100<*<1E7",
+  #cbmin   => 0,
+  noinit  => 1,
+  additional => "set format y \"%02o\";set ytics (0,5,8,13,16,21,24,29);set xtics('0' 0,'2' 10, '4' 20,'6' 30,'8' 40,'A' 50, 'C' 60, 'E' 70);",
+  showvalues => 0,  }
+  );
+
+
+my $str  = Hmon::MakeTitle(8, 11, "MDC Temperatures",0);
+$str .= qq@<img src="%ADDPNG files/MDCNewTemps.png%" type="image/png"><br>\n@;
+$str .= Hmon::MakeFooter();
+Hmon::WriteFile("MDCNewTemps",$str);  
+  
+  
+while (1) {
+  HPlot::PlotClear('MDCNewTemps');
+  my $mdc_temp;
+  $mdc_temp = trb_register_read(0xfffb, 0) or sleep 5 and next;
+  foreach my $board (keys %$mdc_temp) {
+    my $t = ($mdc_temp->{$board}>>20)/16;
+    my ($p,$s,$b,$e) = MDC::get_position($board);
+    my $xpos = $b*5 + ($e==5?0:$e+1);
+    my $ypos = $p*8+$s;
+    next if $p == -1;
+#     printf("%x %i %i %i %i\n",$board,$p,$s,$b,$e) ;
+    HPlot::PlotFill('MDCNewTemps',$t,$xpos,$ypos);
+    }
+  
+  HPlot::PlotDraw('MDCNewTemps');
+
+  sleep 10;
+  }
+
index ca10c033db060ffb013703647d72e52bf4588001..994905b257f67a00b3f3baedd7ffe75ae98d2040 100755 (executable)
@@ -89,9 +89,10 @@ $str .= Hmon::MakeFooter();
 Hmon::WriteFile("Environment",$str);
 
 while (1) {{
+system("date");
   my $port = IO::Socket::INET->new(PeerAddr => "192.168.103.118", PeerPort => 2323, Proto => "tcp", Type => SOCK_STREAM, Timeout => 2) 
               or (print("Device not found") && next);  
-
+print "opened\n";
   my ($mx,$my,$mz,$t,$p,$h);
   my $i = 8;
   while(<$port>) {  
@@ -109,7 +110,7 @@ while (1) {{
     
     last unless $i--;
     }
-  
+print "Done\n";  
   my $tp = 243.12*((17.62*$t)/(243.12+$t)+log($h/100))/((17.62*243.12)/(243.12+$t)-log($h/100));
   
   my $value0 = sprintf("%2.1f° / %imbar",$t,$p);
@@ -124,6 +125,7 @@ while (1) {{
     HPlot::PlotDraw("Envtemp");
     HPlot::PlotDraw("Envhum");
     HPlot::PlotDraw("Envpres");
+print "closing\n";
   $port->close();
   
   sleep 9;
index 6c0bc5706a9af546b79312f6b9c7a9be01ed73d1..31f9e58e5159d7d842f52d1e967cfef7c19945bb 100755 (executable)
@@ -96,6 +96,8 @@ $plot2->{titles}->[4] = "cooling air";
 $plot2->{xlabel}  = "Minutes";
 $plot2->{ylabel}  = "°C";
 #$plot2->{ymin} = 15;
+$plot->{ymin} = "0<*";
+$plot->{ymax} = "*<50";
 $plot2->{sizex}   = 630;
 $plot2->{sizey}   = 220;
 $plot2->{nokey} = 0;