From 3ee9f2ef63f3a55bcc5a1c14aa74d595ea065fdc Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Mon, 16 Dec 2013 16:01:33 +0100 Subject: [PATCH] added rate function to xml-db --- web/htdocs/layout/blue.css | 7 +++++++ web/htdocs/layout/rate.png | Bin 0 -> 354 bytes xml-db/database/TDC.xml | 30 +++++++++++++-------------- xml-db/get.pl | 41 ++++++++++++++++++++++++++++--------- 4 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 web/htdocs/layout/rate.png diff --git a/web/htdocs/layout/blue.css b/web/htdocs/layout/blue.css index 14acdfa..622dc04 100644 --- a/web/htdocs/layout/blue.css +++ b/web/htdocs/layout/blue.css @@ -309,6 +309,13 @@ hr.queryresult { padding-left:16px; } +.rate { + background-image:url("rate.png"); + background-repeat:no-repeat; + background-position:fixed; + padding-left:16px; +} + table.queryresult td.slice, table.queryresult th.slice { text-align:center; background:#eee; diff --git a/web/htdocs/layout/rate.png b/web/htdocs/layout/rate.png new file mode 100644 index 0000000000000000000000000000000000000000..1f44a192fa1a1ed24092d99483aad5a80535b9c6 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#E{_18k)?mxyFEZ5+02lL66gHf+|;}hAeVu`xhOTUBsE2$JhLQ2!QIn0AVn{g z9VmXo)5S5w;&k$#|NrfoRU0~m&T?{ca!dUC|KH!J?%SK0DS?53@BjV%EqkKq;Mv*c zS5s3{<*h9&WE4)be*OBD*TBqmR-x2{xpQro?%%(kA$HG>9Xr@#d6aqhWGo&mShT39 zee&ebzdt`euR8H*NN8w&G7E>D`lF=BUz{>BUaT_BzQ%I+$M5g&%Q<*?W4G4-uVar% zWJ)h7E1Ra6ee8KY5A(P8_umJEgk16Vn{p_(9_StwOE!bG@%!y2bauX+zhudi;!Q?J uPEXfA`tQ%r!#;g)|NsA=p0LEknwi1C^r?i>wApt-p7(V1b6Mw<&;$U%LXG?Y literal 0 HcmV?d00001 diff --git a/xml-db/database/TDC.xml b/xml-db/database/TDC.xml index f38440f..a1839c8 100644 --- a/xml-db/database/TDC.xml +++ b/xml-db/database/TDC.xml @@ -11,7 +11,7 @@ Channel-specific information - + Number of detected hits in channel @@ -84,61 +84,61 @@ Number of valid triggers received - + Number of valid timing triggers received - + Number of valid triggers received which are not timing triggers - + Number of invalid triggers received - + Number of multi timing triggers received (triggers received before trigger is released) - + Number of spurious triggers received (in case of timing trigger is validated although it was a timing-trigger-less trigger) - + Number of wrong readouts due to spurious triggers - + Number of spikes (pulses narrower than 40 ns) detected at the timing trigger input - + Total time length, that the readout FSM waited in the idle state (with granularity of 10 ns) - + Total time length, that the readout FSM waited in the wait states (with granularity of 10 ns) - + @@ -149,24 +149,24 @@ Number of release signals sent - + Total time length of the readout process (with granularity of 10 ns) - + Number of timeouts detected (too long delay after the timing trigger) - + Number of sent finished signals - + diff --git a/xml-db/get.pl b/xml-db/get.pl index e66e57a..39862da 100755 --- a/xml-db/get.pl +++ b/xml-db/get.pl @@ -2,6 +2,7 @@ use HADES::TrbNet; use Storable qw(lock_store lock_retrieve); use feature "switch"; +use Time::HiRes qw( time ); use CGI::Carp qw(fatalsToBrowser); use if (!defined $ENV{'QUERY_STRING'}), warnings; @@ -18,7 +19,7 @@ my $verbose = 0; my $isbrowser = 0; my $server = $ENV{'SERVER_SOFTWARE'} || ""; my @request; -my ($file,$entity,$netaddr,$name, $style, $storefile); +my ($file,$entity,$netaddr,$name, $style, $storefile, $rates, $cache,$olddata); $ENV{'DAQOPSERVER'}="localhost:7" unless (defined $ENV{'DAQOPSERVER'}); @@ -80,8 +81,8 @@ foreach my $req (@request) { my $isColor = $style =~ /color/i; my $sortAddr = $style =~ /sortaddr/i; $verbose = ($style =~ /verbose/i) ||$verbose; - my $rates = $style =~ /rates/i; - my $cache = $style =~ /cache/i; + $rates = $style =~ /rate/i; + $cache = $style =~ /cache/i; ############################### @@ -105,7 +106,7 @@ foreach my $req (@request) { if($rates) { if(-e $storefile) { - my $olddata = lock_retrieve($storefile); + $olddata = lock_retrieve($storefile); } } @@ -116,10 +117,12 @@ foreach my $req (@request) { ############################### $once = (defined $slice)?1:0; if ($isbrowser) { + $data->{time0}=time(); requestdata($db->{$name},$name,$slice); generateoutput($db->{$name},$name,$slice,$once); if($rates) { - store_lock($data,$storefile); + $data->{time1}=time(); + lock_store($data,$storefile); } } else { @@ -131,13 +134,20 @@ foreach my $req (@request) { #### Formatting of values ############################### sub FormatPretty { - my ($value,$obj,$name,$cont,$class,$cstr) = @_; + my ($value,$obj,$name,$cont,$class,$cstr,$addr,$b) = @_; + $class = "" unless $class; + $value = $value >> ($obj->{start}); $value &= ((1<<$obj->{bits})-1); my $rawvalue = $value; + + if ($rates && $obj->{rate}){ + $value = makerate($obj,$value,$addr,$b); + $class.=" rate"; + } + $value = $value * ($obj->{scale}||1) + ($obj->{scaleoffset}||0); - $class = "" unless $class; $cstr = "" unless $cstr; my $ret, my $cl; if (defined $cont) { @@ -321,7 +331,7 @@ sub generateoutput { $fullc .= ".$slice" if ($once != 1 && defined $obj->{repeat}); my $cstr = sprintf("%s-0x%04x-%s", $entity,$b,$fullc ); my $wr = 1 if $db->{$c}->{mode} =~ /w/; - $ttmp .= FormatPretty($data->{$addr}->{$b},$db->{$c},$c,"td",($wr?"editable":""),$cstr); + $ttmp .= FormatPretty($data->{$addr}->{$b},$db->{$c},$c,"td",($wr?"editable":""),$cstr,$addr,$b); } } elsif($obj->{type} eq "field" || $obj->{type} eq "registerfield") { @@ -329,7 +339,7 @@ sub generateoutput { $fullc .= ".$slice" if ($once != 1 && defined $obj->{repeat}); my $cstr = sprintf("%s-0x%04x-%s", $entity,$b,$fullc ); my $wr = 1 if $obj->{mode} =~ /w/; - $ttmp .= FormatPretty($data->{$addr}->{$b},$obj,$fullc,"td",($wr?"editable":""),$cstr); + $ttmp .= FormatPretty($data->{$addr}->{$b},$obj,$fullc,"td",($wr?"editable":""),$cstr,$addr,$b); } $tarr{sprintf("%05i%04i",$b,$slice)}=$ttmp; } @@ -341,7 +351,18 @@ sub generateoutput { print $t; } - +sub makerate { + my ($obj,$val,$addr,$b) = @_; + if(defined $olddata->{$addr}->{$b}) { + $val -= $olddata->{$addr}->{$b}; + } + my $delay = $data->{time0} - $olddata->{time0}; + while ($val < 0) { + $val += 1<<$obj->{bits}; + } + $val /= $delay; + return $val; + } ############################### #### Analyze Object & print contents (the simple minded way) -- 2.43.0