+++ /dev/null
-FROM opensuse:42.3
-
-
-##################################################
-## Go4 + dabc + root ##
-##################################################
-
-
-
-RUN zypper ref
-
-RUN zypper --non-interactive in \
- wget curl \
- tar zlib \
- cmake gcc gcc-c++ \
- libX11-devel libXext-devel libXft-devel libXpm-devel\
- git subversion \
- libqt4-devel\
- git bash cmake gcc-c++ gcc binutils \
- xorg-x11-libX11-devel xorg-x11-libXpm-devel xorg-x11-devel \
- xorg-x11-proto-devel xorg-x11-libXext-devel \
- gcc-fortran libopenssl-devel \
- pcre-devel Mesa glew-devel pkg-config libmysqlclient-devel \
- fftw3-devel libcfitsio-devel graphviz-devel \
- libdns_sd avahi-compat-mDNSResponder-devel openldap2-devel \
- python-devel libxml2-devel krb5-devel gsl-devel libqt4-devel \
- glu-devel \
- xterm screen xvfb-run x11vnc openbox \
- boost-devel
-
-RUN svn co https://subversion.gsi.de/dabc/trb3
-
-RUN cd trb3; make -j4; cat $(find . -iname "makelog.txt")
-### root, go4, dabc and stream are successfully installed!
-
-
-
-
-##################################################
-## trbnet + daqtools ##
-##################################################
-
-
-RUN zypper --non-interactive in \
- vim \
- dhcp-server\
- rpcbind \
- gnuplot \
- ImageMagick \
- perl-XML-LibXML \
- glibc-locale \
- tmux \
- xorg-x11-Xvnc \
- emacs \
- htop \
- ncdu \
- psmisc \
- python-jsonpath-rw \
- python-pip
-
-RUN pip install --upgrade pip; pip install pandas
-
-RUN cpan Data::TreeDumper Date::Format File::chdir
-
-RUN zypper --non-interactive in \
- libtirpc-devel
-
-RUN git clone git://jspc29.x-matter.uni-frankfurt.de/projects/trbnettools.git;\
- cd /trbnettools; \
- git checkout 02cf
-
-
-RUN cd /trbnettools/libtrbnet_perl; \
- perl Makefile.PL; \
- cd /trbnettools; \
- make clean;
-
-RUN cd /trbnettools; \
- make TRB3=1
-
-RUN cd /trbnettools; \
- make TRB3=1 install
-
-RUN echo "/trbnettools/liblocal" >> /etc/ld.so.conf.d/trbnet.conf;\
- ldconfig -v
-
-ENV PATH=$PATH:/trbnettools/bin
-
-RUN git clone git://jspc29.x-matter.uni-frankfurt.de/projects/daqtools.git
-
-RUN cd daqtools/xml-db; \
- ./xml-db.pl
-
-##################################################
-## patches + misc ##
-##################################################
-
-### replace httpi with a modified version, because the httpi in daqtools won't run as root
-COPY build_files/httpi /daqtools/web/httpi
-
-RUN . /trb3/trb3login
-
-RUN cd /trb3/; . /trb3/trb3login; make -j4 update
-
-## 2019-02-11 - - fix strange dabc error
-RUN cd /trb3/; . /trb3/trb3login; make -j4 update
-
-RUN zypper --non-interactive in \
- firefox \
- lxpanel
-
-RUN pip install prettytable python2-pythondialog
+++ /dev/null
-
-name=$(basename $(pwd))
-
-docker build -t $name . || exit
-
-
+++ /dev/null
-
-name=$(basename $(pwd))
-
-docker build -t $name . || exit
-
-docker run --net host -v $(pwd)/conf:/conf -v $(pwd)/workdir:/workdir --rm -it \
---name $name \
-$name /workdir/start.sh
-
+++ /dev/null
-
-name=$(basename $(pwd))
-
-docker build -t $name . || exit
-
-docker run --net host -v $(pwd)/conf:/conf -v $(pwd)/workdir:/workdir --rm -it \
---name $name \
-$name /bin/bash
-
+++ /dev/null
-#!/usr/bin/perl
-use POSIX qw(SIGALRM SIGTERM sigaction);
-
-use lib "./";
-use lib "./include";
-use Digest::SHA::PurePerl qw(sha1_base64);
-
-
-$VERSION = "1.7 (Demonic/Linux)";
-
-# HTTPi Hypertext Tiny Truncated Process Implementation
-# Copyright 1999-2010 Cameron Kaiser and Contributors # All rights reserved
-# Please read LICENSE # Do not strip this copyright message.
-
-###############################################################
-# WHITE HATS ONLY BELOW THIS POINT -- SEE DOCUMENTATION FIRST #
-###############################################################
-
-%system_content_types =
- ("html" => "text/html",
- "htm" => "text/html",
- "txt" => "text/plain",
- "xml" => "text/xml",
- "xsl" => "text/xml",
- "xhtml" => "application/xhtml+xml",
- "css" => "text/css",
- "gif" => "image/gif",
- "jpeg" => "image/jpeg",
- "jpg" => "image/jpeg",
- "bmp" => "image/bmp",
- "png" => "image/png",
- "tif" => "image/tiff",
- "tiff" => "image/tiff",
- "ico" => "image/x-icon",
- "svg" => "image/svg+xml",
- "svgz" => "image/svg+xml",
- "wbmp" => "image/vnd.wap.wbmp",
- "wbm" => "image/vnd.wap.wbmp",
- "xbm" => "image/x-xbitmap",
- "mp3" => "audio/x-mpeg",
- "wma" => "audio/x-ms-wma",
- "wav" => "audio/x-wav",
- "au" => "audio/basic",
- "aif" => "audio/x-aiff",
- "aiff" => "audio/x-aiff",
- "ogg" => "audio/x-ogg",
- "oga" => "audio/x-ogg",
- "mid" => "audio/midi",
- "wma" => "audio/x-ms-wma",
- "mpeg" => "video/mpeg",
- "mpg" => "video/mpeg",
- "aac" => "audio/aac",
- "ogv" => "video/x-ogg",
- "ogx" => "application/x-ogg",
- "avi" => "video/x-msvideo",
- "wmv" => "video/x-ms-wmv",
- "asf" => "video/x-ms-asf",
- "mov" => "video/quicktime",
- "mp4" => "video/mp4",
- "rv" => "video/vnd.m-realvideo",
- "rm" => "application/vnd.m-realmedia",
- "ra" => "audio/vnd.m-realaudio",
- "ram" => "audio/vnd.m-realaudio",
- "pdf" => "application/pdf",
- "fdf" => "application/vnd.fdf",
- "class" => "application/octet-stream",
- "jar" => "application/octet-stream",
- "js" => "application/x-javascript",
- "lnk" => "application/x-hyperlink",
- "prg" => "application/x-c64-prg-binary",
- "d64" => "application/x-c64-disk-image",
- "tar" => "application/x-tar",
- "sit" => "application/x-stuffit",
- "Z" => "application/x-compress",
- "gz" => "application/x-gzip",
- "dmg" => "application/octet-stream",
- "img" => "application/octet-stream",
- "lzh" => "application/octet-stream",
- "lha" => "application/octet-stream",
- "exe" => "application/octet-stream",
- "com" => "application/octet-stream",
- "zip" => "application/x-zip-compressed",
- "hqx" => "application/x-binhex",
- "swf" => "x-shockwave-flash",
- "flv" => "video/x-flv",
-
- "bin" => "application/octet-stream");
-
-# comment in to enable logs
-#$logfile = "./access.log";
-$path = "./htdocs";
-$sockaddr = 'S n a4 x8';
-
-$server_host = $ARGV[0];
-$server_port = $ARGV[1];
-
-die("$0 [host] [port] required. got >$server_host< >$server_port<") unless ($server_host and $server_port);
-
-%content_types =
- ("html" => "text/html",
- "htm" => "text/html",
- "shtml" => "text/html"
- );
-%restrictions = (
- "/nw" => "^10\.##^Mozilla#MSIE",
- "/status" => "####voyeur:daNrZR3TcSwD2",
- "/" => "###(NPBot|WebZIP|HTTrack|eCatch|Offline Explorer|UdmSearch|WebCopier|internetseer|MSIECrawler|SuperBot|LinkWalker|Tutorial Crawler|WebReaper)",
- );
- # See documentation for interpreting this string.
-
-$headers = <<"EOF";
-Server: TRB3-DAQ based on HTTPi/$VERSION
-MIME-Version: 1.0
-EOF
-
-
-%content_types = (%system_content_types, %content_types);
-undef %system_content_types;
-
-#if ($pid = fork()) { exit; }
-$0 = "dhttpi: binding port ...";
-$bindthis = pack($sockaddr, 2, $server_port, pack('C4', 0, 0, 0, 0));
-socket(S, 2, 1, 6);
-setsockopt(S, 1, 2, 1);
-bind(S, $bindthis) || die("$0: while binding port $server_port:\n\"$!\"\n");
-listen(S, 128);
-$0 = "dhttpi: connected and waiting ANY:$server_port";
-
-$statiosuptime = time();
-
-sub sock_to_host {
- return ($cache_hn, $cache_port, $cache_ip)
- if (length($cache_ip));
-
- return (undef, undef, undef) if (!$sock);
- my($AFC, $cache_port, $thataddr, $zero) = unpack($sockaddr, $sock);
- $cache_ip = join('.', unpack("C4", $thataddr));
- $cache_hn =
- gethostbyaddr($thataddr, 2) ||
- $cache_ip;
- return ($cache_hn, $cache_port, $cache_ip);
-}
-
-
-sub htsponse {
- ($currentcode, $currentstring) = (@_);
- return if (0+$httpver < 1);
- my($what) = <<"EOF";
-HTTP/$httpver $currentcode $currentstring
-${headers}Date: $rfcdate
-EOF
- $what =~ s/\n/\r\n/g;
- print STDOUT $what;
- &hthead("Connection: close") if (0+$httpver > 1);
-}
-
-sub hthead {
- my($header, $term) = (@_);
- return if (0+$httpver < 1);
- print STDOUT "$header\r\n" , ($term) ? "\r\n" : "";
-}
-
-sub htcontent {
- my($what, $ctype, $mode) = (@_);
- ($contentlength) = $mode || length($what);
- &hthead("Content-Length: $contentlength");
- &hthead("Content-Type: $ctype", 1);
- return if ($method eq 'HEAD' || $mode);
- print STDOUT $what;
-}
-
-sub log {
- if ($logfile && open(J, ">>$logfile")) {
- my $q = $address . (($variables) ? "?$variables" : "");
- $contentlength += 0;
- $contentlength = 0 if ($method eq 'HEAD');
- my ($hostname, $port, $ip) = &sock_to_host();
- $hostname ||= "-";
- $httpuser ||= "-";
- print J <<"EOF";
-$hostname - $httpuser [$date] "$method $q HTTP/$httpver" $currentcode $contentlength "$httpref" "$httpua"
-EOF
- close(J);
- }
-}
-
-
-sub bye { exit; }
-sub byebye { kill(9,$secondary_pid) if ($secondary_pid); exit; }
-
-sub dead {
- &htsponse(500, "Server Error");
- &hterror("Server Error", <<"EOF");
-The server cannot comply with your request for resource <tt>$::address</tt>.
-Please attempt to notify the administrators.
-<p>Useful(?) debugging information:
-<pre>
-@_
-</pre>
-EOF
- &log; exit;
-}
-
-sub defaultsignals {
- $SIG{'__DIE__'} = \&dead;
- sigaction SIGALRM, new POSIX::SigAction \&bye
- or die "sigalrm failed: $!\n";
- sigaction SIGTERM, new POSIX::SigAction \&byebye
- or die "sigterm failed: $!\n";
-}
-&defaultsignals;
-
-sub alarmsignals {
- undef $SIG{'__DIE__'};
- sigaction SIGALRM, new POSIX::SigAction sub { die; }
- or die "sigalrm failed: $!\n";
-}
-
-sub master {
- $0 = "dhttpi: handling request";
-$sock = getpeername(STDIN);
-$rfcdate = &rfctime(scalar gmtime, 1);
-$date = scalar localtime;
-($dow, $mon, $dt, $tm, $yr) = ($date =~
- m/(...) (...) (..) (..:..:..) (....)/);
-$dt += 0;
-$dt = substr("0$dt", length("0$dt") - 2, 2);
-$date = "$dt/$mon/$yr:$tm +0000";
-
-select(STDOUT); $|=1; $address = 0;
-alarm 5;
-while (<STDIN>) {
- if(/^([A-Z]+)\s+([^\s]+)\s+([^\s\r\l\n]*)/) {
- $method = $1;
- $address = $2;
- $httpver = $3;
- $httpref = '';
- $httpua = '';
- $httpver = ($httpver =~ m#HTTP/([0-9]\.[0-9]+)#) ?
- ($1) : (0.9);
- $address =~ s#^http://[^/]+/#/#;
- $0 = $execstring = "dhttpi: $method $address $httpver";
- next unless ($httpver < 1);
- } else {
- s/[\r\l\n\s]+$//;
- (/^Host:\s+(.+)/i) && ($httphost = substr($1, 0, 255))
- && ($httphost =~ s/:\d+$//);
- (/^Referer:\s+(.+)/i) && ($httpref = substr($1, 0, 1024));
- (/^User-agent:\s+(.+)/i) && ($httpua = substr($1, 0, 1024));
- (/^Content-length:\s+(\d+)/i) &&
- ($ENV{'CONTENT_LENGTH'} = $httpcl = 0+$1);
- (/^Content-type:\s+(.+)/i) &&
- ($ENV{'CONTENT_TYPE'} = $httpct = substr($1, 0, 255));
- (/^Expect:\s+/) && ($expect = 1);
- (/^Cookie:\s+(.+)/i) &&
- ($ENV{'HTTP_COOKIE'} = substr($1, 0, 16384));
- (/^Authorization:\s+Basic (.+)/i) &&
- ($httprawu = substr($1, 0, 1024));
- (/^Range:\s+(.+)/i) &&
- ($ENV{'CONTENT_RANGE'} = substr($1, 0, 255));
- (/^If-Modified-Since:\s+(.+)/i) &&
- ($modsince = $ENV{'HTTP_IF_MODIFIED_SINCE'} =
- substr($1, 0, 255));
- (/^Accept:\s+(.+)/i) &&
- ($ENV{'HTTP_ACCEPT'} = substr($1, 0, 255));
- (/^Accept-([a-zA-Z0-9]+):\s+(.+)/i) &&
- ($ENV{'HTTP_ACCEPT_'.uc(substr($1, 0, 16))} =
- substr($2, 0, 255));
- (/^X-Requested-With:\s+(.+)/i) &&
- ($ENV{'HTTP_X_REQUESTED_WITH'} = substr($1, 0, 1024));
-
- (/^Origin:\s+(.+)/i) &&
- ($ENV{'HTTP_ORIGIN'} = substr($1, 0, 1024));
- (/^Upgrade:\s+(.+)/i) &&
- ($ENV{'HTTP_UPGRADE'} = substr($1, 0, 1024));
- (/^Sec-WebSocket-Protocol:\s+(.+)/i) &&
- ($ENV{'WEBSOCKET_PROTOCOL'} = substr($1, 0, 1024));
- (/^Sec-WebSocket-Version:\s+(-?\d+)/i) &&
- ($ENV{'WEBSOCKET_VERSION'} = substr($1, 0, 8));
- (/^Sec-WebSocket-Extensions:\s+(-?\d+)/i) &&
- ($ENV{'WEBSOCKET_EXTENSIONS'} = substr($1, 0, 1024));
- (/^Sec-WebSocket-Key:\s+(\S+)/i) &&
- ($ENV{'WEBSOCKET_KEY'} = substr($1, 0, 1024));
-
- next unless (/^$/);
- }
- if ($expect) {
- &htsponse(417, "Expectation Failed");
- &hterror("Expectation Failed",
- "The server does not support this method.");
- &log; exit;
- }
- if (!length($address) || (0+$httpver > 1 && !$httphost)) {
- &htsponse(400, "Bad Request");
- &hterror("Bad Request",
- "The server cannot understand your request.");
- &log; exit;
- }
- if ($method !~ /^(GET|HEAD|POST)$/) {
- &htsponse(501, "Not Implemented");
- &hterror("Not Implemented",
- "Only GET, HEAD and POST are supported.");
- &log; exit;
- }
-
-
- if ($ENV{'HTTP_UPGRADE'} eq 'websocket') {
- if ($method ne "GET" || !$ENV{'WEBSOCKET_KEY'}) {
- &htsponse(400, "Bad request");
- &hterror("Bad request",
- "Illegal websocket opening handshake");
- &log; exit;
- }
-
- $ENV{'WEBSOCKET_ACCEPT'} =
- sha1_base64($ENV{'WEBSOCKET_KEY'} . "258EAFA5-E914-47DA-95CA-C5AB0DC85B11") . "=";
-
-
- }
-
-
-
- ($address, $variables) = split(/\?/, $address);
- $address =~ s/%([0-9a-fA-F]{2})/pack("H2", $1)/eg;
- $address=~ s#^/?#/#;
- 1 while $address =~ s#/\.(/|$)#\1#;
- 1 while $address =~ s#/[^/]*/\.\.(/|$)#\1#;
- 1 while $address =~ s#^/\.\.(/|$)#\1#;
- $fail = 0;
- J: foreach(sort { length $a <=> length $b }
- keys %restrictions) {
- next if ($address !~ /^$_/);
- ($allowip, $denyip, $allowua, $denyua, $auser) =
- split(/#/, $restrictions{$_});
- if ($allowip || $denyip) {
- ($hostname, $port, $ip) = &sock_to_host();
- ($allowip && $ip !~ /$allowip/) && ($fail = 1,
- last J);
- ($denyip && $ip =~ /$denyip/) && ($fail = 1,
- last J);
- }
- ($allowua && $httpua !~ /$allowua/) &&
- ($fail = 2, last J);
- ($denyua && $httpua =~ /$denyua/) &&
- ($fail = 2, last J);
- }
- if ($fail) {
- &htsponse(403, "Forbidden");
- if ($fail == 1) {
- &hterror("Forbidden (Client Disallowed)", <<"EOF");
-Your network address (<i>$ip</i>) is not allowed to access this resource.
-EOF
- &log; exit;
- } else {
- &hterror("Forbidden (Browser Disallowed)", <<"EOF");
-The browser you are using (<i>$httpua</i>) is not capable of or
-is not allowed access to this resource.
-EOF
- &log; exit;
- }
- }
- if ($auser) {
- $httprawu =~ tr#A-Za-z0-9+/##cd;
- $httprawu =~ tr#A-Za-z0-9+/# -_#;
- $httprawu = unpack("u", pack("c", 32+0.75*length($httprawu))
- . $httprawu);
- ($httpuser, $httppw) = split(/:/, $httprawu);
- $fail = 1;
- foreach $user (split(/,/, $auser)) {
- ($user, $pw) = split(/:/, $user);
- ($fail = 0, last) if ($user eq $httpuser &&
- crypt($httppw, substr($pw, 0, 2)) eq $pw);
- }
- if ($fail) {
- $httpuser = '';
- &htsponse(401, "Authorization Required");
- &hthead("WWW-Authenticate: Basic realm=\"$address\"");
- &hterror("Authorization Required", <<"EOF");
-You must provide a username and password to use this resource. Either you
-entered this information incorrectly, or your browser does not know how to
-present the credentials required.
-EOF
- &log; exit;
- }
- }
-
- alarm 0;
-
-
-
-
- $raddress = "$path$address"
- ;
- 1 while ($raddress =~ s#//#/#);
- &hterror301("http://$server_host:$server_port$address/")
- if ($address !~ m#/$# && -d $raddress);
- $raddress = (-r "${raddress}index.shtml") ?
- "${raddress}index.shtml" : "${raddress}index.html"
- if (-d $raddress);
- IRED: ($hostname, $port, $ip) = &sock_to_host();
- if(!sysopen(S, $raddress, 0)) { &hterror404; } else {
- if ((-x $raddress)
- ) {
- $currentcode = 100; &nsecmodel;
- $ENV{'REQUEST_METHOD'} = $method;
- $ENV{'SERVER_NAME'} = $server_host;
- $ENV{'SERVER_PROTOCOL'} = "HTTP/$httpver";
- $ENV{'SERVER_SOFTWARE'} = "HTTPi/$VERSION";
- $ENV{'SERVER_PORT'} = "$server_port";
- $ENV{'SERVER_URL'} = "http://$server_host:$server_port/";
- $ENV{'SCRIPT_FILENAME'} = $raddress;
- $ENV{'SCRIPT_NAME'} = $address;
- $ENV{'REMOTE_HOST'} = $hostname;
- $ENV{'REMOTE_ADDR'} = $ip;
- $ENV{'REMOTE_PORT'} = $port;
- $ENV{'QUERY_STRING'} = $variables;
- $ENV{'HTTP_USER_AGENT'} = $httpua;
- $ENV{'HTTP_REFERER'} = $httpref;
- undef $pid;
- if ($pid = fork()) { kill 15, $$; exit; }
- elsif (!defined($pid)) {
- die
- "temporary(?) fork error, please retry request: $!\n";
- } else {
- require $raddress;
- exit;
- }
- }
- ($x,$x,$x,$x,$x,$x,$x,$length,$x,$mtime) = stat(S);
- $ctype = 0;
- foreach(keys %content_types) {
- if ($raddress =~ /\.$_$/i) {
- $ctype = $content_types{$_};
- }
- }
- $mtime = &rfctime($mtime);
-SERVEIT:
- if ($mtime eq $modsince) {
- &htsponse(304, "Not Modified");
- &hthead("Last-Modified: $mtime", 1);
- &log; exit;
- }
- $ctype ||= 'text/plain';
- if ($pid = fork()) { kill 15, $$; exit; }
- $contentlength ||= $length;
- &htsponse(200, "OK");
- &hthead("Last-Modified: $mtime");
- &htcontent("", $ctype, $length);
- &nsecmodel;
- $bytecount = 0;
- unless ($method eq 'HEAD') {
- while(!eof(S)) {
- read(S, $q, 32768);
- print STDOUT $q;
- $bytecount += 32768;
- $0 = $execstring .
- " ($bytecount bytes sent)";
- }
- }
- alarm 0;
- }
- exit;
-}
-
-exit;
-}
-
-
-sub nsecmodel {
- &log;
- ($x,$x,$x,$x,$uid,$gid) = stat(S);
- #(!$uid || !$gid || $uid < 2 ) &&
-# die "resource is root-owned, secured or not stat-able\n";
-# if (!$<) {
-# ($) = "$gid $gid") || die "can't set egid to $gid";
-# ($> = $uid) || die "can't set euid to $uid";
-# ($( = "$gid $gid") || die "can't set rgid to $gid";
-# ($< = $uid) || die "can't set ruid to $uid";
-# }
-}
-
-sub rfctime {
- my $mtime = shift;
- $mtime = (scalar gmtime $mtime) if (!(shift));
- my ($dow, $mon, $dt, $tm, $yr) =
- ($mtime =~ m/(...) (...) (..) (..:..:..) (....)/);
- $dt += 0; $yr += 0;
- return "$dow, $dt $mon $yr $tm GMT";
-}
-
-sub hterror {
- my($errstr, @expl) = (@_);
- &htcontent(<<"EOF", "text/html");
-<html>
-<body>
-<h1>$errstr</h1>
-@expl
-<hr>
-<address><a href = "http://httpi.floodgap.com/">httpi/$VERSION</a>
-by Cameron Kaiser</address>
-</body>
-</html>
-EOF
- }
-
-sub hterror404 {
- &htsponse(404, "Not Found");
- &hterror("Not Found",
- "The resource <tt>$address</tt> was not found on this system.");
- &log; exit;
-}
-
-sub hterror301 {
- &htsponse(301, "Moved Permanently");
- &hthead("Location: @_");
- &hterror("Resource Moved Permanently",
- "This resource has moved <a href = \"@_\">here</a>.");
- &log; exit;
-}
-
-
-$0 = "dhttpi: on ANY:$server_port, ready!";
-$master_pid = $$;
-for (;;) {
- if ($secondary_pid = fork()) {
- waitpid($secondary_pid, 0);
- $0 = "dhttpi: on ANY:$server_port, last request " .
- scalar localtime;
- } else {
- $0 = "dhttpi (child of $master_pid): waiting for connect";
- $addr=accept(NS,S);
- open(STDIN, "<&NS");
- open(STDOUT, ">&NS");
- &defaultsignals;
- &master;
- exit;
- }
-}
+++ /dev/null
-#!/bin/bash
-
-
-trbcmd s 0x7100000390255228 0x00 0x0350
-trbcmd s 0x8c0000039025fa28 0x01 0x0351
-trbcmd s 0xb00000039053e328 0x02 0x0352
-trbcmd s 0x790000039053dc28 0x03 0x0353
-trbcmd s 0x920000039053d928 0x05 0xc035
-echo "FPGAs after addressing"
-trbcmd i 0xffff
+++ /dev/null
-#!/bin/bash
-
-cd /conf
-
-
-
-echo "configure container"
-
-export TRB3_PORT=35
-export DAQOPSERVER=localhost:$TRB3_PORT
-export TRB3_SERVER=192.168.4.240
-export CTS_GUI_PORT=1148
-export CTS_ENDPOINT=0xc035
-export DISPLAY=:2 # go4 window will be sent to $DISPLAY, if provide_vnc == yes , then it will be this x11 display
-
-export PULSER=192.168.103.74
-
-> conf_log.txt
-
-provide_dhcp=yes
-#edit conf/dhcpd.conf, enter your trb3 MAC address ###
-provide_trbnetd=yes
-
-provide_cts_gui=yes
-
-provide_vnc=yes
-vnc_password=
-vnc_port=5902
-vnc_geometry=1500x1024
-
-
-# tmux new-session -d -s x11vnc -n x11vnc "x11vnc -forever -create -rfbport 5902 #(nopasswd)"
-
-# set paths for go4/dabc/stream
-. /trb3/trb3login
-
-
-
-### no need to touch the rest of the file ###
-
- echo ... >> conf_log.txt
- echo DAQOPSERVER=$DAQOPSERVER >> conf_log.txt
- echo >> conf_log.txt
-
-if [ $provide_dhcp == "yes" ]; then
- echo starting dhcp server
- cp dhcpd.conf /etc/dhcpd.conf
- > /tmp/dhcp_leasefile
- dhcpd -lf /tmp/dhcp_leasefile
- echo ... >> conf_log.txt
- echo dhcp server started >> conf_log.txt
- echo using config file /conf/dhcpd.conf >> conf_log.txt
- echo >> conf_log.txt
-fi
-
-if [ $provide_trbnetd == "yes" ]; then
- trbnetd -i $TRB3_PORT
- echo ... >> conf_log.txt
- echo started trbnetd >> conf_log.txt
- echo TRB3_SERVER=$TRB3_SERVER >> conf_log.txt
- echo port $TRB3_PORT >> conf_log.txt
- echo >> conf_log.txt
-fi
-
-if [ $provide_cts_gui == "yes" ]; then
-# screen -S cts_gui -d -m ./start_cts_gui.sh
- tmux new-session -d -s cts_gui -n cts_gui "cd /daqtools/web; perl ./cts_gui --endpoint $CTS_ENDPOINT --quiet --noopenxterm --port $CTS_GUI_PORT"
-# tmux new-window -t main:1 -n "cts_gui" "cd /daqtools/web; perl ./cts_gui --endpoint $CTS_ENDPOINT --quiet --noopenxterm --port $CTS_GUI_PORT"
- echo ... >> conf_log.txt
- echo started cts_gui with following parameters:>> conf_log.txt
- echo --endpoint $CTS_ENDPOINT >> conf_log.txt
- echo --port $CTS_GUI_PORT >> conf_log.txt
- echo >> conf_log.txt
-fi
-
-if [ $provide_vnc == "yes" ]; then
- mkdir -p $HOME/.vnc/
- echo $vnc_password | vncpasswd -f > $HOME/.vnc/passwd
- tmux new-session -d -s vnc -n vnc "echo starting vnc server on port $vnc_port for display $DISPLAY; vncserver $DISPLAY -rfbauth $HOME/.vnc/passwd -rfbport $vnc_port -geometry $vnc_geometry ;/bin/bash"
-
- echo ... >> conf_log.txt
- echo "started vnc server (e.g. for Go4 window)" >> conf_log.txt
- echo port=$vnc_port >> conf_log.txt
- echo DISPLAY=$DISPLAY >> conf_log.txt
- echo password=$vnc_password >> conf_log.txt
- echo >> conf_log.txt
- echo connect with: vncviewer localhost:$vnc_port >> conf_log.txt
- echo >> conf_log.txt
-fi
-
-./addresses.sh
-
-/daqtools/tools/loadregisterdb.pl register_configgbe.db
-/daqtools/tools/loadregisterdb.pl register_configgbe_ip.db
-sleep 1
-./conf_cts.sh
-./conf_tdcs.sh
-
-
-echo "done"
+++ /dev/null
-#!/bin/bash
-
-# CTS Configuration dump
-# generated: 2019-02-05 15:10
-# CTS Compile time: 2019-01-21 14:47
-#
-# trbcmd Dev. Reg. Value
-trbcmd setbit 0xc035 0xa00c 0x80000000 # Disable all triggers
-trbcmd w 0xc035 0xa008 0xffffffff # cts_fsm_limits: ro=65535, td=65535
-trbcmd w 0xc035 0xa009 0x00000001 # cts_readout_config:
- # channel_cnt=false, idle_dead_cnt=false, input_cnt=true
- # timestamp=false, trg_cnt=false
-trbcmd w 0xc035 0xa00c 0x80000400 # cts_throttle: enable=true, stop=false, threshold=0
-trbcmd w 0xc035 0xa00d 0x00000001 # cts_eventbuilder:
- # cal_eb=0, mask=0000 0000 0000 0001, rr_interval=0
- # use_cal_eb=false
-trbcmd w 0xc035 0xa101 0xffff0400 # trg_channel_mask: edge=1111 1111 1111 1111, mask=0000 0100 0000 0000
-trbcmd w 0xc035 0xa124 0x00000000 # trg_input_config0: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa125 0x00000000 # trg_input_config1: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa126 0x00000000 # trg_input_config2: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa127 0x00000000 # trg_input_config3: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa128 0x00000000 # trg_input_config4: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa129 0x00000000 # trg_input_config5: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa12a 0x00000000 # trg_input_config6: delay=0, invert=false, override=off, spike_rej=0
-trbcmd w 0xc035 0xa13b 0x000f0000 # trg_coin_config0:
- # coin_mask=0000 0000, inhibit_mask=0000 0000
- # window=15
-trbcmd w 0xc035 0xa13c 0x000f0000 # trg_coin_config1:
- # coin_mask=0000 0000, inhibit_mask=0000 0000
- # window=15
-trbcmd w 0xc035 0xa13e 0x00000000 # trg_input_mux0: input=extclk[0]
-trbcmd w 0xc035 0xa13f 0x00000001 # trg_input_mux1: input=extclk[1]
-trbcmd w 0xc035 0xa140 0x00000002 # trg_input_mux2: input=trgext[2]
-trbcmd w 0xc035 0xa141 0x00000003 # trg_input_mux3: input=trgext[3]
-trbcmd w 0xc035 0xa142 0x00000004 # trg_input_mux4: input=jeclin[0]
-trbcmd w 0xc035 0xa143 0x00000005 # trg_input_mux5: input=jeclin[1]
-trbcmd w 0xc035 0xa144 0x00000006 # trg_input_mux6: input=jeclin[2]
-trbcmd w 0xc035 0xa146 0x00000000 # trg_addon_output_mux0: input=itc[0]
-trbcmd w 0xc035 0xa147 0x00000001 # trg_addon_output_mux1: input=itc[1]
-trbcmd w 0xc035 0xa148 0x00000002 # trg_addon_output_mux2: input=itc[2]
-trbcmd w 0xc035 0xa149 0x00000003 # trg_addon_output_mux3: input=itc[3]
-trbcmd w 0xc035 0xa14a 0x00000004 # trg_addon_output_mux4: input=itc[4]
-trbcmd w 0xc035 0xa14b 0x00000005 # trg_addon_output_mux5: input=itc[5]
-trbcmd w 0xc035 0xa14c 0x00000006 # trg_addon_output_mux6: input=itc[6]
-trbcmd w 0xc035 0xa14d 0x00000007 # trg_addon_output_mux7: input=itc[7]
-trbcmd w 0xc035 0xa14f 0x00010000 # trg_periph_config0: mask=0001 0000 0000 0000 0000
-trbcmd w 0xc035 0xa150 0x00000000 # trg_periph_config1: mask=0000 0000 0000 0000 0000
-trbcmd w 0xc035 0xa151 0x00000000 # trg_periph_config2: mask=0000 0000 0000 0000 0000
-trbcmd w 0xc035 0xa152 0x00000000 # trg_periph_config3: mask=0000 0000 0000 0000 0000
-trbcmd w 0xc035 0xa154 0x000061a7 # trg_pulser_config0: low_duration=24999
-trbcmd w 0xc035 0xa155 0x00000003 # trg_pulser_config1: low_duration=3
-trbcmd w 0xc035 0xa157 0x00000000 # trg_random_pulser_config0: threshold=0
-trbcmd w 0xc035 0xa159 0x1111111d # _trg_trigger_types0:
- # type0=0xd_tdc_calibration_trigger, type1=0x1_physics_trigger
- # type2=0x1_physics_trigger, type3=0x1_physics_trigger
- # type4=0x1_physics_trigger, type5=0x1_physics_trigger
- # type6=0x1_physics_trigger, type7=0x1_physics_trigger
-trbcmd w 0xc035 0xa15a 0x11111111 # _trg_trigger_types1:
- # type10=0x1_physics_trigger, type11=0x1_physics_trigger
- # type12=0x1_physics_trigger, type13=0x1_physics_trigger
- # type14=0x1_physics_trigger, type15=0x1_physics_trigger
- # type8=0x1_physics_trigger, type9=0x1_physics_trigger
-trbcmd clearbit 0xc035 0xa00c 0x80000000 # Enable all triggers
-
+++ /dev/null
-...
-DAQOPSERVER=localhost:35
-
-...
-dhcp server started
-using config file /conf/dhcpd.conf
-
-...
-started trbnetd
-TRB3_SERVER=192.168.4.240
-port 35
-
-...
-started cts_gui with following parameters:
---endpoint 0xc035
---port 1148
-
-...
-started vnc server (e.g. for Go4 window)
-port=5902
-DISPLAY=:2
-password=
-
-connect with: vncviewer localhost:5902
-
+++ /dev/null
-#!/bin/bash
-
-
-
-### all tdcs ###
-
-for TDC in 0x0350 0x0351 0x0352 0x0353; do
-
- # invert the first 32 channels
- trbcmd w $TDC 0xc805 0xFFFFFFFF
-
- # enable trigger windows +-1000 ns
- trbcmd w $TDC 0xc801 0x80c800c8
-
- # set channel ringbuffer size
- trbcmd w $TDC 0xc804 10
-
-done
-
-
-### tdcs with pasttrec attached ###
-
-for TDC in 0x0350 0x0351; do
-
- # enable the first 16 channels (CONN1)
- trbcmd setbit $TDC 0xc802 0x0000FFFF
-
- # enable the second 16 channels (CONN2)
- trbcmd setbit $TDC 0xc802 0xFFFF0000
-
-done
-
-
-### reference time TDC ###
-
-for TDC in 0x0353; do
-
- # non- invert the first channel
- trbcmd clearbit $TDC 0xc805 0x1
-
- # enable the first channel
- trbcmd setbit $TDC 0xc802 0x1
-
- # enable Florian's trigger Logic
- trbcmd setbit $TDC 0xe000 0x1
- # enable edge detect
- trbcmd setbit $TDC 0xe008 0x1
- # merge outputs
- trbcmd setbit $TDC 0xe018 0x1
- # delay 0 cycles
- trbcmd setbit $TDC 0xe100 0x0
- # stretcher on, five cycles
- #trbcmd setbit $TDC 0xe200 0x10005
-
-done
+++ /dev/null
-
-shared-network em1 {
- subnet 192.168.4.0 netmask 255.255.255.0 {
- option subnet-mask 255.255.255.0;
- option broadcast-address 192.168.4.255;
- option routers 192.168.4.254;
- #option domain-name-servers 141.2.242.36;
- #option domain-name "x-matter.uni-frankfurt.de";
- default-lease-time 86400;
- max-lease-time 172800;
- }
-}
- host trb3_148 { hardware ethernet 02:00:f8:00:be:30; fixed-address 192.168.4.240;}
- host trb3_148_new { hardware ethernet da:7a:37:0e:f4:30; fixed-address 192.168.4.240;}
- host trb3_148_old { hardware ethernet 02:00:be:30:f4:0e; fixed-address 192.168.4.240;}
- host trb3_35 { hardware ethernet da:7a:33:90:53:d9; fixed-address 192.168.4.240;}
+++ /dev/null
-
-
-
-!Register table
-# Type # C0 # C1 # C2 # C3 # C4 # C5 # C6 # C7 # C8 # C9 #
-###################################################################################################
- 0 0x8300 0x8305 0x8307 0x8308 0x830b
- 1 0x8301 0x8302 0x8304 0x8309 0x830c 0x830e 0x830f 0x8310
-
-
-!Value table
-# SubEvtId UseGbE MultiQueue Trig. Num. InclTrgType
-# Hub # Type # C0 # C1 # C2 # C3 # C4 #
-##################################################################################
- 0xc035 0 0xc035 1 0 0xffffff 1
-
-
-
-#These values to not need to be written - for completeness only
-# SubEvtDec QueDec FrameSize RX enable SubEvtSize Evt/Queue QueueClose MaxQueueSize
-# Hub # Type # C0 # C1 # C2 # C3 # C4 # C5 # C6 # C7 #
-##########################################################################################################################
-# 0xff7f 1 0x00020001 0x00030062 0x578 1 59800 200 32000 60000
+++ /dev/null
-###########################################################################################
-#Eventbuilders:
-# EB 0: hadespc001 eth1 ports 50000 - 50099
-
-!Register table
-# Type # C0 # C1 # C2 # C3 # C4 #
-#######################################################
-#new memory locations
- 0 0x8100 0x8101 0x8102 0x8103 0x8107
- 1 0x8110 0x8111 0x8112 0x8113 0x8117
- 2 0x8120 0x8121 0x8122 0x8123 0x8127
- 3 0x8130 0x8131 0x8132 0x8133 0x8137
- 4 0x8140 0x8141 0x8142 0x8143 0x8147
- 5 0x8150 0x8151 0x8152 0x8153 0x8157
- 6 0x8160 0x8161 0x8162 0x8163 0x8167
- 7 0x8170 0x8171 0x8172 0x8173 0x8177
- 8 0x8180 0x8181 0x8182 0x8183 0x8187
- 9 0x8190 0x8191 0x8192 0x8193 0x8197
- 10 0x81A0 0x81A1 0x81A2 0x81A3 0x81A7
- 11 0x81B0 0x81B1 0x81B2 0x81B3 0x81B7
- 12 0x81C0 0x81C1 0x81C2 0x81C3 0x81C7
- 13 0x81D0 0x81D1 0x81D2 0x81D3 0x81D7
- 14 0x81E0 0x81E1 0x81E2 0x81E3 0x81E7
- 15 0x81F0 0x81F1 0x81F2 0x81F3 0x81F7
-
-!Value table
-# Dest MAC Dest MAC Dest IP Dest Port Src Port
-# Hub # Type # C0 # C1 # C2 # C3 # C4 #
-####################################################################################
-
- 0xc035 0 0xBB61482F 0xECF4 0xc0a804fe 50002 0xc350
-
-
-
+++ /dev/null
-#!/bin/bash
-
-trbcmd reload 0x0350
-trbcmd reload 0x0351
-trbcmd reload 0x0352
-trbcmd reload 0x0353
-trbcmd reload 0xc035
-
-sleep 4
-
-./addresses.sh
+++ /dev/null
-<?xml version="1.0"?>
-
-<!--
-This is example file how HADAQ event building should be configured in DABC.
-Event building process implemented in Combiner module of hadaq::CombinerModule class.
-Module can have several inputs, each with separate port number for receiving data
-from TRB boards. For every input one could configure only UDP port number - host name is ignored.
-First output of combiner module reserved for the connection to the MBS transmitter module.
-Second output can be use to store data in hld files.
-To enable HLD file storage one should specify NumOutputs for Combiner module
-and provide hld file name for Output1 port
-
- <NumOutputs value="2"/>
- <OutputPort name="Output1" url="hld://dabc.hld?maxsize=2000"/>
-
-File name fill be extended according to HADAQ naming convetion.
-
-Optionally one can enable MBS transmitter module, which converts HLD to LMD format.
-To enable transmitter, one should specify auto="true" in configuration which says DABC
-to automatically create module when starting application.
-First output of the module reserved for stream server, second output can be used to
-store data in lmd files.
-
-By default, HTTP server is enabled. Do disable it, remove <HttpServer> section or
-put <HttpServer name="http" auto="false">. One could change http port number.
-When dabc runs, in any browser address like
-http://your_dabc_host_name:8090 can be opened. At the moment http server provides:
- - ratemeters from EventBuilder and Transmitter
- - log fields
- - commands to start/stop hld and lmd files from browser
-
-It is also possible to attach go4 analysis to that server, that also histograms
-from online analysis will appear. For that one should specify
-"-dabc your_dabc_host_name" argument when starting analysis. Like:
- [shell] go4analysis -stream dabc_node -dabc dabc_node
-When launching analysis from the gui, extra arguments "-dabc your_dabc_host_name"
-should be specified.
-
-There is well-known problem with using VNC viewer and mbs stream server.
-Both by default are using port 6002. One could change port number for stream server.
-Just set other number in configuration of output port of transmitter module, for instance
- <OutputPort name="Output0" url="mbs://Stream:6789"/>
-In this case one should specify that port number when starting go4 analysis like:
- [shell] go4analysis -stream dabc_node:6789 -dabc dabc_node:4444
-When starting analysis from the go4 gui, one should specify stream server with port number too.
-
--->
-
-<dabc version="2">
- <Context host="localhost" name="EventBuilder">
- <Run>
- <lib value="libDabcMbs.so"/>
- <lib value="libDabcHadaq.so"/>
- <lib value="libDabcHttp.so"/>
- <lib value="libDabcStream.so"/>
- <logfile value="hadaqevtbuild.log"/>
- <loglevel value="-1"/>
- <loglimit value="1000"/>
- <control value="true"/>
- <threads_layout value="balanced"/>
- </Run>
-
- <HttpServer name="http" port="8091"/>
-
- <!-- If uncommented, all internal manager structures will be published in the web server -->
- <!-- Publisher name="publ" manager="true"/ -->
-
- <!-- If uncommented, profiling will be enabled for all threads -->
- <!-- Thread name="*" publ="true" prof="true"/ -->
-
- <MemoryPool name="Pool">
- <BufferSize value="2000000"/>
- <NumBuffers value="1000"/>
- </MemoryPool>
-
- <!-- these are default parameters for TDC calibration modules -->
- <Module name="Input*TdcCal">
- <InputPort name="Input*" queue="30"/>
-
- <FineMin value="31"/>
- <FineMax value="515"/>
- <NumChannels value="33"/>
- <EdgeMask value="2"/> <!-- 1: only leading edge 2:leading/trailing individual 3:statistics from leading used 4:statistics merged -->
- <HistFilling value="4"/>
- <CalibrFile value="/workdir/tdc_calib"/> <!-- local/-->
- <!--DisableCalibrationFor value="0"/-->
- <Auto value="100000"/>
-
- <!-- TRB value="0x8010"/-->
- <!-- HUB value="0x9000"/-->
- <!-- TDC value="[0x8a00,0x8a01,0x8a02,0x8a03]"/-->
- <Dummy value="true"/>
- </Module>
-
-
- <Module name="Combiner" class="hadaq::CombinerModule">
- <!-- these parameters will force to create inputs/outputs of module -->
- <NumInputs value="1"/>
- <NumOutputs value="2"/>
-
- <InputPort name="Input0" url="hadaq://host:50002" urlopt1=""/>
-<!-- <InputPort name="Input0" url="hadaq://host:50061" urlopt1=""/> -->
- <!-- <InputPort name="Input1" url="hadaq://host:50008" urlopt1=""/> -->
- <!-- <InputPort name="Input2" url="hadaq://host:50084" urlopt1=""/> -->
- <!-- <InputPort name="Input3" url="hadaq://host:50158" urlopt1=""/> -->
-
-
- <!-- <InputPort name="Input4" url="hadaq://host:10104" urlopt1="trb=0x8030&tdc=[0x3030,0x3031,0x3032,0x3033]&dummy"/> -->
- <!-- <InputPort name="Input5" url="hadaq://host:10105" urlopt1="trb=0x8040&tdc=[0x3040,0x3041,0x3042,0x3043]&dummy"/> -->
-
- <!-- <InputPort name="Input0" url="hadaq://host:50021" urlopt1="trb=0x8000&hub=0x8100&tdc=[0xC000,0xC001,0xC003]&dummy"/> -->
- <!-- <InputPort name="Input1" url="hadaq://host:50094" urlopt1="trb=0x8003&tdc=[0xC00C,0xC00D,0xC00E,0xC00F]&dummy"/> -->
- <!-- <InputPort name="Input2" url="hadaq://host:50096" urlopt1="trb=0x8002&tdc=[0xC008,0xC009,0xC00A,0xC00B]&dummy"/> -->
- <!-- <InputPort name="Input3" url="hadaq://host:10104" urlopt1="trb=0x8030&tdc=[0x3030,0x3031,0x3032,0x3033]&dummy"/> -->
- <!-- <InputPort name="Input4" url="hadaq://host:10105" urlopt1="trb=0x8040&tdc=[0x3040,0x3041,0x3042,0x3043]&dummy"/> -->
-
- <!-- <InputPort name="Input*" queue="30"
- urlopt="udpbuf=20000&mtu=64512&flush=3.0&observer=false&debug&resort"/>
- -->
-
- <InputPort name="Input*" queue="30" urlopt="udpbuf=400000&mtu=64512&flush=1&observer=false&debug"/>
-
- <ExtraDebug value="false"/>
-
- <!-- this is stream server for online monitoring, normally always on -->
- <OutputPort name="Output0" url="mbs://Stream:6789?iter=hadaq_iter&subid=0x1f"/>
-
- <!-- this is example of HLD file storage - local and RFIO -->
- <OutputPort name="Output1" url="hld:///tmp/TDC_data.hld?maxsize=2000"/>
- <!--OutputPort name="Output1" url="hld:///linev/path/dabc.hld?maxsize=1900&rfio"/-->
-
- <DoShmControl value="false"/>
- <FlushTimeout value="1.0"/>
- <BuildDropTimeout value="1000"/>
-
- <!-- take event sequence number from vulom/roc sync message at cts -->
- <UseSyncSequenceNumber value="false"/>
- <SyncSubeventId value="0x8000"/>
- <SyncTriggerMask value="0x01"/>
- <PrintSync value="false"/>
- <FlushBySync value="false"/>
-
- <!--TriggerNumRange: defines when trigger sequence number wraps. only 16 bit for HADES EBs, 24 bit for trb3! -->
- <TriggerNumRange value="0x10000"/>
-
- <!--AccountLostEventDiff: if true, missing trigger sequence number are added as lost events to stats. Disabled for multiple event builder mode! -->
- <AccountLostEventDiff value="true"/>
-
- <!-- rate meters configuration -->
- <HadaqData width="4" prec="2" low="0" up="10" debug="1"/>
- <HadaqEvents width="5" prec="1" low="0" up="1000" debug="1"/>
- <HadaqDroppedData width="5" prec="3" low="0" up="1" debug="1"/>
- <HadaqLostEvents width="4" prec="2" low="0" up="100" debug="1"/>
- </Module>
-
- <!-- Uncomment to see terminal output like old event builder -->
- <Module name="Term" class="hadaq::TerminalModule" period="0.3" clear="false"/>
-
- </Context>
-
-</dabc>
+++ /dev/null
-// this is example for
-
-
-#include <stdlib.h>
-
-void first()
-{
- //base::ProcMgr::instance()->SetRawAnalysis(true);
- base::ProcMgr::instance()->SetTriggeredAnalysis(true);
-
- // all new instances get this value
- base::ProcMgr::instance()->SetHistFilling(4);
-
- // this limits used for liner calibrations when nothing else is available
- hadaq::TdcMessage::SetFineLimits(10, 510);
-
- // default channel numbers and edges mask
- hadaq::TrbProcessor::SetDefaults(33, 0x2);
-// hadaq::TdcProcessor::SetDefaults(1000);
- //hadaq::TdcProcessor::DisableCalibrationFor(0,8);
- // [min..max] range for TDC ids
- //hadaq::TrbProcessor::SetTDCRange(0x610, 0x613);
- hadaq::TrbProcessor::SetTDCRange(0x0350, 0x0353);
-
- // configure ToT calibration parameters
- // first - minimal number of counts in ToT histogram
- // second - maximal RMS value
- hadaq::TdcProcessor::SetToTCalibr(100, 0.2);
-
- //hadaq::T
- // [min..max] range for HUB ids
- hadaq::TrbProcessor::SetHUBRange(0xc001, 0xcfff);
-
- // when first argument true - TRB/TDC will be created on-the-fly
- // second parameter is function name, called after elements are created
- hadaq::HldProcessor* hld = new hadaq::HldProcessor(true, "after_create");
-
- const char* calname = getenv("CALNAME");
- if ((calname==0) || (*calname==0)) calname = "test_";
- const char* calmode = getenv("CALMODE");
- int cnt = (calmode && *calmode) ? atoi(calmode) : 0;
- const char* caltrig = getenv("CALTRIG");
- unsigned trig = (caltrig && *caltrig) ? atoi(caltrig) : 0x0;
- const char* uset = getenv("USETEMP");
- unsigned use_temp = 0; // 0x80000000;
- if ((uset!=0) && (*uset!=0) && (strcmp(uset,"1")==0)) use_temp = 0x80000000;
-
- printf("HLD configure calibration calfile:%s cnt:%d trig:%X temp:%X\n", calname, cnt, trig, use_temp);
-
- // first parameter if filename prefix for calibration files
- // and calibration mode (empty string - no file I/O)
- // second parameter is hits count for autocalibration
- // 0 - only load calibration
- // -1 - accumulate data and store calibrations only at the end
- // >0 - automatic calibration after N hits in each active channel
- // third parameter is trigger type mask used for calibration
- // (1 << 0xD) - special 0XD trigger with internal pulser, used also for TOT calibration
- // 0x3FFF - all kinds of trigger types will be used for calibration (excluding 0xE and 0xF)
- // 0x80000000 in mask enables usage of temperature correction
-// hld->ConfigureCalibration(calname, cnt, /*(1 << trig) | use_temp*/ 0x3fff);
- hld->ConfigureCalibration("test_", -1, (1 << 0xD));
-
-
- // only accept trigger type 0x1 when storing file
- //new hadaq::HldFilter(0x0);
-
- // create ROOT file store
-// base::ProcMgr::instance()->CreateStore("td.root");
-
- // 0 - disable store
- // 1 - std::vector<hadaq::TdcMessageExt> - includes original TDC message
- // 2 - std::vector<hadaq::MessageFloat> - compact form, without channel 0, stamp as float (relative to ch0)
- // 3 - std::vector<hadaq::MessageDouble> - compact form, with channel 0, absolute time stamp as double
- base::ProcMgr::instance()->SetStoreKind(1);
-
-}
-
-// extern "C" required by DABC to find function from compiled code
-
-extern "C" void after_create(hadaq::HldProcessor* hld)
-{
- printf("Called after all sub-components are created\n");
-
- if (hld==0) return;
-
- for (unsigned k=0;k<hld->NumberOfTRB();k++) {
- hadaq::TrbProcessor* trb = hld->GetTRB(k);
- if (trb==0) continue;
- printf("Configure %s!\n", trb->GetName());
- trb->SetPrintErrors(10);
- }
-
- unsigned firsttdc = 0;
-
- for (unsigned k=0;k<hld->NumberOfTDC();k++) {
- hadaq::TdcProcessor* tdc = hld->GetTDC(k);
- if (tdc==0) continue;
-
- if (firsttdc == 0) firsttdc = tdc->GetID();
-
- printf("Configure %s!\n", tdc->GetName());
-
- // try to build abs time difference between 0 channels
- // if (tdc->GetID() != firsttdc)
- // tdc->SetRefChannel(0, 0, (0x70000 | firsttdc), 6000, -20., 20.);
-
- tdc->SetUseLastHit(false);
-
- // tdc->DisableCalibrationFor(0);
-
- // if (tdc->GetID() == 0x1130);
-
- for (int n=1;n<49;++n)
- tdc->SetRefChannel(n,0, 0xffff, 6000, -200, 200); // LED DIFF
- }
-}
-
-
+++ /dev/null
-// Automatically generated startup script
-// Do not change it!
-
-go4->SetMainWindowState(4,"000000ff00000000fd000000020000000000000125000002e8fc0200000001fb0000001600420072006f00770073006500720044006f0063006b0100000073000002e80000007a00ffffff000000030000063c00000082fc0100000001fc000000000000063c0000003d00fffffffa000000000200000003fb00000016004c006f00670049006e0066006f0044006f0063006b0100000000ffffffff0000005300fffffffb0000001a004d006200730056006900650077006500720044006f0063006b0000000000ffffffff0000006500fffffffb0000001e0044004100420043004d006f006e00690074006f00720044006f0063006b0000000279000000ce000000000000000000000511000002e800000004000000040000000800000008fc0000000800000002000000040000001600460069006c00650054006f006f006c0042006100720100000000ffffffff0000000000000000000000160047006f00340054006f006f006c00730042006100720100000106ffffffff00000000000000000000001e0041006e0061006c00790073006900730054006f006f006c004200610072010000024a0000025800000000000000000000001a0044006900760069006400650050006100640044006f0063006b0000000395000000e40000000000000000000000020000000000000002000000020000002400420072006f0077007300650072004f007000740069006f006e00730044006f0063006b01000000000000010200000000000000000000001e0044007200610077004f007000740069006f006e00730044006f0063006b01000001020000037e00000000000000000000000200000002000000240048006900730044007200610077004f007000740069006f006e00730044006f0063006b0000000000000001290000000000000000000000180047006f0034005300740079006c00650044006f0063006b0000000000000004b10000000000000000000000020000000200000020005300630061006c0065004f007000740069006f006e00730044006f0063006b0000000000000004b100000000000000000000002c0041006e0061006c00790073006900730043006f006d006d0061006e00640054006f006f006c0042006100720100000000ffffffff0000000000000000000000030000000000000003000000010000001e0043006f006d006d0061006e0064004c0069006e00650044006f0063006b0000000000000004b1000000000000000000000003000000010000001c00540072006500650056006900650077006500720044006f0063006b0000000000000004b10000000000000000");
-go4->SetMainWindowGeometry(4,"01d9d0cb00010000000000140000000c000006570000042d00000018000000240000065300000429000000000000");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqgif.so");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqico.so");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqjpeg.so");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqmng.so");
-go4->LoadLibrary("/usr/lib64/libmng.so.1");
-go4->LoadLibrary("/usr/lib64/liblcms.so.1");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqsvg.so");
-go4->LoadLibrary("/usr/lib64/libQtSvg.so.4");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqtga.so");
-go4->LoadLibrary("/usr/lib64/qt4/plugins/imageformats/libqtiff.so");
-go4->LoadLibrary("/lib64/libnss_mdns_minimal.so.2");
-go4->LoadLibrary("/lib64/libnss_dns.so.2");
-go4->LoadLibrary("/lib64/libresolv.so.2");
-
-go4->LaunchAnalysis("MyAnalysis", ".", "", "localhost", Go4_sh, Go4_qt, Go4_lib);
-go4->WaitAnalysis(300);
-
-// configuration of analysis
-go4->AnalysisAutoSave("Go4AutoSave.root", 500, 5, kTRUE, kFALSE);
-go4->AnalysisConfigName("Go4AnalysisPrefs.root");
-
-// step Analysis
-go4->ConfigStep("Analysis", kTRUE, kTRUE, kFALSE);
-go4->StepMbsStreamSource("Analysis", "localhost:6789", 1);
-go4->StepFileStore("Analysis", "NoOutputDefined", kTRUE, 32000, 99, 5, 10000);
-
-go4->SubmitAnalysisConfig(20);
-
-go4->SetAnalysisConfigMode(-1);
-go4->SetAnalysisTerminalMode(1);
-
-go4->StartAnalysis();
-
-// in some analysis one requires to wait several seconds before new histograms appears
-// go4->Wait(1);
-go4->RefreshNamesList();
-
+++ /dev/null
-#include <stdio.h>
-#include <iostream>
-#include <fstream>
-#include <map>
-
-#include "TTree.h"
-#include "TFile.h"
-#include "TSystem.h"
-#include "TString.h"
-#include "TH1.h"
-#include "TH2.h"
-#include "TCanvas.h"
-#include "TGo4AnalysisObjectManager.h"
-
-
-#include "base/EventProc.h"
-#include "base/Event.h"
-#include "hadaq/TdcSubEvent.h"
-
-#define CHANNELS 33
-#define REFCHAN 0
-// #define REFCHAN_B 0
-
-#define VERBOSE 0
-#define TAKE_FIRST_HIT 1
-
-
-
-// Muentz-Torte
-#define t1_L -400 // EE
-#define t1_R 400 // EE
-#define tot_L -10 // EE
-#define tot_R 1000 // EE
-
-#define ref_channel_offset -75 //ns fine measured ref channel relative to coarse measured cts trigger channel
-//#define ref_channel_offset 0 //ns fine measured ref channel relative to coarse measured cts trigger channel
-
-// in the first iteration, scanning through data in the coincidence window, rejecting hits (fuzzy edges)
-
-//#define spike_rejection 90 //ns for ASD8 0x72 (25000) with LASER
-// #define spike_rejection 90 //ns for PASTTREC pt10 // for t1 calibration
-//#define spike_rejection 60 //ns for PASTTREC pt10
-// #define spike_rejection 45 //ns for PASTTREC with all the nice filters
-// #define spike_rejection 90 //ns for PASTTREC pt15
-//#define spike_rejection 100 //ns for PASTTREC pt20
-// #define spike_rejection 30 //ns for ASD8 0xA9
-// #define spike_rejection 60 //ns for ASD8 0x72
-// #define spike_rejection 75 //ns for ASD8 0x52
-//#define spike_rejection 47 //ns for ASD8 thr 37000 with LASER
-// #define spike_rejection 90 //ns for PASTTREC pt20 with LASER
-//#define spike_rejection 90 //ns for PASTTREC pt20 with Fe55
-
-#define spike_rejection 30
-#define spike_rejection_refchan 10
-
-#define individual_spike_rejection 0
-
-//#define ref_spike_rejection 100
-
-
-//#define t1_accept_L (-250 + ref_channel_offset) //ns // GSI Dlab
-//#define t1_accept_L (-1000000 + ref_channel_offset) //ns // HZDR fe55
-#define t1_accept_L (-2000 + ref_channel_offset) //ns // EE
-//#define t1_accept_L (-150 + ref_channel_offset) //ns // Muentz-Torte
-//#define t1_accept_R (100 + ref_channel_offset)//ns // GSI Dlab
-//#define t1_accept_R (1000000 + ref_channel_offset)//ns // HZDR fe55
-#define t1_accept_R (2000 + ref_channel_offset)//ns // EE
-// #define t1_accept_R (-130 + ref_channel_offset)//ns // Muentz-Torte
-// #define t1_accept_R (-90 + ref_channel_offset)//ns // ASD8 with thr 0x52
-
-#define fish_proj_cut 20
-
-
-
-// real cuts on selected data
-
-#define max_tot 1000000 // Muentz-Torte
-#define t1_cut_L -2000
-#define t1_cut_R 2000
-
-
-// #define coincidence_rejection 7
-#define accept_hits_per_layer 20
-
-#define enable_coincidence_rejection 0
-
-#define enable_single_hits 0
-#define enable_one_hit_per_layer 1
-#define enable_two_to_one_hits 0
-
-
-
-// TFile* tree_out;
-std::map<std::string,int> trig_no;
-std::map<std::string,TTree*> data_tree;
-Bool_t write_tree = false;
-
-
-
-Bool_t file_exists(TString fname){
-
- fstream src_file(fname.Data());
- return src_file.good();
-}
-
-TString from_env(TString env_var,TString default_val){
- if(gSystem->Getenv(env_var)){
- return gSystem->Getenv(env_var);
- }
- return default_val;
-}
-
-
-
-class SecondProc : public base::EventProc {
- protected:
-
- std::string fTdcId; //!< tdc id where channels will be selected
-
- double fHits[8]; //!< 8 channel, abstract hits
-
- base::H1handle hNumHits; //!< histogram with hits number
-// base::H2handle h2D;
-
-// base::H1handle totCh1; //!< histogram with hits number
-// base::H1handle totCh2; //!< histogram with hits number
-
-
- base::H1handle tot_h[CHANNELS];
- base::H1handle tot_untrig_h[CHANNELS];
- base::H1handle t1_h[CHANNELS];
- base::H1handle potato_h[CHANNELS];
- base::H1handle meta_potato_h;
- base::H1handle meta_t1_h;
- base::H1handle meta_tot_h;
- base::H1handle meta_tot_2d;
- base::H1handle meta_t1_2d;
- base::H1handle coinc_matrix;
-// base::H1handle meta_fish;
-// base::H1handle meta_fish_proj;
-// base::H1handle fishes[FISHES];
-// base::H1handle fish_proj[FISHES];
- base::H1handle efficiency_h;
- base::H1handle ref_counts_h;
- base::H1handle dut_counts_h;
-
-
- int entry_chan;
- int entry_ref_chan;
- double entry_t1;
- double entry_tot;
-
-
-
-
-
-// int evt_no;
-
- public:
- SecondProc(const char* procname, const char* _tdcid) :
- base::EventProc(procname),
- fTdcId(_tdcid),
- hNumHits(0)
- {
- printf("Create %s for %s\n", GetName(), fTdcId.c_str());
-
- hNumHits = MakeH1("FineAll","Fine all", 1020, 0, 1020, "fine");
-// h2D = MakeH2("h2d","title", 100, -20, 20, 100, -20,20,"x;y");
-// totCh1 = MakeH1("totCh1","totCh1", 20000, -200, 200, "ns");
-// totCh2 = MakeH1("totCh2","totCh2", 20000, -200, 200, "ns");
-
-
- if(from_env("tree_out","false") == "true"){
- write_tree = true;
- }
-
- trig_no[fTdcId] = 0;
- data_tree[fTdcId] = new TTree((TString) fTdcId,"data recorded");
- data_tree[fTdcId]->Branch("trig_no",&trig_no[fTdcId]);
- data_tree[fTdcId]->Branch("t1",&entry_t1);
- data_tree[fTdcId]->Branch("tot",&entry_tot);
- data_tree[fTdcId]->Branch("chan",&entry_chan);
- data_tree[fTdcId]->Branch("ref_chan",&entry_ref_chan);
-
-
- for( unsigned i=0; i<CHANNELS; i++ ) {
- char chno[16];
- sprintf(chno,"Ch%02d_t1",i);
- t1_h[i] = MakeH1(chno,chno, 2000, t1_L, t1_R, "ns");
- sprintf(chno,"Ch%02d_tot",i);
- tot_h[i] = MakeH1(chno,chno, 4000, tot_L, tot_R, "ns");
- sprintf(chno,"Ch%02d_tot_untrig",i);
- tot_untrig_h[i] = MakeH1(chno,chno, 4000, tot_L, tot_R, "ns");
- sprintf(chno,"Ch%02d_potato",i);
- potato_h[i] = MakeH2(chno,chno,500,t1_L,t1_R,500, tot_L, tot_R, "t1 (ns);tot (ns)");
- }
-
- meta_t1_h = MakeH1("meta_t1","meta_t1", 2000, t1_L, t1_R, "ns");
- meta_t1_2d = MakeH2("meta_t1_2d","meta_t1_2d", 2000, t1_L, t1_R,CHANNELS-1,0.5,CHANNELS-0.5, "ns;channel#");
- meta_tot_h = MakeH1("meta_tot","meta_tot", 4000, tot_L, tot_R, "ns");
- meta_tot_2d = MakeH2("meta_tot_2d","meta_tot_2d", 2000, tot_L, tot_R,CHANNELS-1,0.5,CHANNELS-0.5, "ns;channel#");
- meta_potato_h = MakeH2("meta_potato","meta_potato",500,t1_L,t1_R,500, tot_L, tot_R, "t1 (ns);tot (ns)");
-
-// evt_no = 0;
-
-// ref_counts_h = MakeH1("ref_counts","ref_counts", CHANNELS -1, 0.5, CHANNELS-0.5, "channel #");
-// dut_counts_h = MakeH1("dut_counts","dut_counts", CHANNELS -1, 0.5, CHANNELS-0.5, "channel #");
- efficiency_h = MakeH1("efficiency","efficiency", CHANNELS -1, 0.5, CHANNELS-0.5, "channel #;kind:F");
- ((TH1F*) efficiency_h)->SetDrawOption("P0");
- ((TH1F*) efficiency_h)->SetMarkerStyle(22);
- ((TH1F*) efficiency_h)->GetXaxis()->SetNdivisions(55);
-
- coinc_matrix = MakeH2("coinc_matrix","coinc_matrix",12,-2.5,9.5,10,15-0.5,24+0.5, "channels 0-7;channels 16-23");
- //meta_fish = MakeH2("meta_fish","meta_fish",250,-300,200,200,-100,100, "T_A+T_B;T_B-T_A");
-
- //meta_fish_proj = MakeH1("meta_fish_proj","meta_fish_proj",250,-300,200, "T_A+T_B;counts");
-
-
-
- // enable storing already in constructor
- SetStoreEnabled();
- }
-
- virtual void UserPostLoop(void) {
-
- static Int_t was_called_before = 0;
-
- cout << "--- User Post Loop " << fTdcId << endl;
-// TFile* tree_out = new TFile( Form("tree_out_%s.root",fTdcId.c_str()) ,"RECREATE");
-
- if(from_env("tree_out","false") == "true"){
-
- cout << "write tree_out.root" << endl;
- TFile* tree_out;
-
-
- if(was_called_before){
- tree_out = new TFile("tree_out.root","UPDATE");
- } else {
- tree_out = new TFile("tree_out.root","RECREATE");
- }
- tree_out->cd();
- data_tree[fTdcId]->Write();
- tree_out->Write();
- tree_out->Close();
- delete tree_out;
- }
- was_called_before ++;
- }
-
-
- virtual void CreateBranch(TTree* t)
- {
- // only called when tree is created in first.C
- // one can ignore
- t->Branch(GetName(), fHits, "hits[8]/D");
- }
-
- virtual bool Process(base::Event* ev)
- {
-// printf("### DEBUG ###\n");
- for (unsigned n=0;n<8;n++) fHits[n] = 0.;
-
- hadaq::TdcSubEvent* sub =
- dynamic_cast<hadaq::TdcSubEvent*> (ev->GetSubEvent(fTdcId));
-
- if(VERBOSE) cout<< "tdc: " << fTdcId << " evt no: " << trig_no[fTdcId] << endl;
- if (sub==0) return false;
-
-// printf("%s process sub %d %s\n", GetName(), sub->Size(), fTdcId.c_str());
-
-
- static float effective_spike_rejection = from_env("spike_rejection", TString::Itoa(spike_rejection,10) ).Atof();
-
-
-// static int ref_counts[CHANNELS];
-// static int dut_counts[CHANNELS];
-// static bool is_dut[CHANNELS];
-
-
- // this is only run once --
- static bool is_initialized=false;
- if(not(is_initialized)){
- for( int i = 0; i<31; i++){
-// ref_counts[i] = 0;
-// dut_counts[i] = 0;
-// is_dut[i] = false;
-// if((overlaps[i][0] >= 0) && (overlaps[i][1] >= 0)){
-// is_dut[i] = true;
-// }
- }
-
-
-
-
- is_initialized = true;
- }
- // ------
-
- double num(0), ch0tm(0), ch1tm(0), ch2tm(0), ch3tm(0);
- double t1_candidate[CHANNELS];
- double t2_candidate[CHANNELS];
- double t1[CHANNELS];
- double t2[CHANNELS];
- bool got_rising[CHANNELS];
- bool got_falling[CHANNELS];
- bool got_real_hit[CHANNELS];
- double tot[CHANNELS];
- for (unsigned i=0; i<CHANNELS; i++) {
- got_rising[i] = false;
- got_falling[i] = false;
- got_real_hit[i] = false;
- }
-
-
- for (unsigned cnt=0;cnt<sub->Size();cnt++) {
- const hadaq::TdcMessageExt& ext = sub->msg(cnt);
-
- unsigned chid = ( ext.msg().getHitChannel() );
- bool rising = ext.msg().isHitRisingEdge(); // use this line for rising edge first/positive pulses
-
- if (chid==0) {
- ch0tm = ext.GetGlobalTime();
- got_real_hit[chid] = true;
- t1[chid] = 0;
- tot[chid] = 100e-9;
- continue;
-
- }
-
-
- // full time
- double tm = ext.GetGlobalTime();
- if((chid) >= CHANNELS) {continue;} // channel out of range of analysis
- if(rising){
-
-
- if( !(TAKE_FIRST_HIT && got_real_hit[chid]) ){ // block subsequent hits if TAKE_FIRST_HIT setting is active
- if((( ((tm)*1e9) > t1_accept_L) && (((tm)*1e9) < t1_accept_R )) ) { // this condition sets another coincidence window, except for REFCHAN_A
- got_rising[chid] = true;
- got_falling[chid] = false;
- t1_candidate[chid] = tm;
- }
- }
- }else{ // if falling edge
-// printf("got falling edge, ch %d\n",(chid));
- if(got_rising[chid]){
- if(not(got_falling[chid])){
- got_falling[chid] = true;
- t2_candidate[chid] = tm;
- Double_t candidate_tot_ns = (t2_candidate[chid] - t1_candidate[chid])*1e9;
-
- if( candidate_tot_ns > effective_spike_rejection || (chid==REFCHAN || candidate_tot_ns > spike_rejection_refchan) ){
- // hit is long enough not to be rejected
- t1[chid] = t1_candidate[chid];
- t2[chid] = t2_candidate[chid];
- tot[chid] = t2[chid] - t1[chid];
- got_real_hit[chid] = true;
-
- // fill untriggered tot histogram
- FillH1(tot_untrig_h[chid],tot[chid]*1e9);
- }
-// printf("got hit, ch %d, tot = %f ns\n",(chid), tot[chid]*1e9);
- }
- }
- }
-
- }
-
-
-
- for( unsigned i=0; i<CHANNELS; i++ ) {
- if(got_real_hit[i]){
-
-// if(got_real_hit[REFCHAN_A] || got_real_hit[REFCHAN_B] || REFCHAN_A == -1 || REFCHAN_B == -1){ // t1 information only makes sense if you have
- // a hit in the reference channel
- double t1_vs_ref = (t1[i] -t1[REFCHAN])*1e9 ;
- if( (t1_vs_ref > t1_cut_L) && (t1_vs_ref < t1_cut_R) && (tot[i]*1e9 < max_tot) ) {
-
- // fill histograms
- FillH1(tot_h[i],tot[i]*1e9);
- FillH2(potato_h[i],t1_vs_ref ,tot[i]*1e9);
- FillH1(t1_h[i],t1_vs_ref ); // without cuts
-// if(t1_vs_ref < -200 && tot[i]*1e9 > 0 ) FillH1(t1_h[i],t1_vs_ref ); // with noise rejecting cuts
- // if( tot[i]*1e9 > 50 ) FillH1(t1_h[i],t1_vs_ref ); // with noise rejecting cuts
-
-
- if( i != 0 ) {
- FillH2(meta_potato_h,t1_vs_ref,tot[i]*1e9);
- FillH1(meta_tot_h,tot[i]*1e9);
- FillH1(meta_t1_h,t1_vs_ref );
- FillH2(meta_tot_2d,tot[i]*1e9,i);
- FillH2(meta_t1_2d,t1_vs_ref,i);
- entry_chan = i;
- entry_t1 = t1_vs_ref;
- entry_tot = tot[i]*1e9;
- if(write_tree){
- data_tree[fTdcId]->Fill();
- }
- }
-
- // efficiency estimation ... this cell, cell #i, is a reference detector
-// ref_counts[i]++; // count up reference counts
-// FillH1(counts_h,i-0.5);
- }
- }
- }
-
-
-
- for (int i = 1 ; i<CHANNELS; i++) {
- // ((TH1F*) efficiency_h)->SetBinContent(i,((float) (((TH1F*) t1_h[i])->GetEntries()) )/((float) (((TH1F*) t1_h[0])->GetEntries())));
- ((TH1F*) efficiency_h)->SetBinContent(i,((float) (((TH1F*) t1_h[i])->Integral()) )/ 600. ); // fixed numer of pulses sent for each channel
- // ((TH1F*) efficiency_h)->SetBinContent(i,((float) (((TH1F*) t1_h[i])->Integral()) )/((float) (((TH1F*) tot_h[i])->Integral()))); ; // normalize by number of signals in same channel without couts, as for almost each trigger a noise signal is measured
- }
-
-
-
-
-// if(got_real_hit[0]){
-// FillH1(totCh1,tot[0]*1e9);
-// }
-// if(got_real_hit[1]){
-// FillH1(totCh2,tot[1]*1e9);ref_counts[i]
-// }
-
-// FillH1(hNumHits, num);
-
-
-// draw_and_save((TH2F*) meta_fish, "meta_fish","./","colz");
-
-// tree_out->cd();
-// data_tree[fTdcId]->Write();
- trig_no[fTdcId]++;
-
- return true;
- }
-
-
-};
-
-
-void second()
-{
- //hadaq::TdcProcessor::SetDefaults(700);
-// tree_out = new TFile("./tree_out.root","RECREATE");
-// new SecondProc("Sec_1130", "TDC_1130");
-// new SecondProc("Sec_0352", "TDC_0353");
- new SecondProc("Sec_0350", "TDC_0350");
- new SecondProc("Sec_0353", "TDC_0353");
-// tree_out->Write();
-// tree_out->Close();
-}
-
+++ /dev/null
-#!/bin/bash
-
-echo "container started"
-
-echo "create main tmux session"
-
-echo "run /conf/conf.sh"
-. /conf/conf.sh
-
-cd /workdir
-tmux new -d -s main
-
-
-
-tmux link-window -s cts_gui:cts_gui -t main
-tmux link-window -s vnc:vnc -t main
-
-
-tmux new-window -t main -n "dabc" "dabc_exe TdcEventBuilder_noHLD.xml;/bin/bash"
-
-
-#tmux new-window -t main -n "go4" "rm *.root; go4 0350_meta.hotstart;/bin/bash"
-tmux new-window -t main -n "go4_ana" "rm *.root; tree_out=false go4analysis -stream localhost:6790 -http localhost:8080;/bin/bash"
-
-# tmux new-window -t main -n "htop" "htop;/bin/bash"
-tmux new-window -t main -n "info" "cat /conf/conf_log.txt; cat info.txt; /bin/bash"
-tmux new-window -t main -n "PT_ctrl" "cd /workdir/pasttrec_ctrl; /bin/bash"
-tmux new-window -t main -n "new" "/bin/bash"
-tmux new-window -t main -n "new" "/bin/bash"
-tmux new-window -t main -n "new" "/bin/bash"
-tmux new-window -t main -n "new" "/bin/bash"
-tmux new-window -t main -n "new" "/bin/bash"
-tmux new-window -t main -n "x11_apps" "lxpanel& sleep 10; firefox localhost:8080& /bin/bash"
-tmux select-window -t main:info
-
-
-tmux a -t main
-
-
-
-
-echo "drop user to shell"
-/bin/bash
-
-echo "terminate container"