#!/usr/bin/perl -w use strict; use File::Basename; open(FH, $ARGV[0]); open(HITRATE, "> hitrate.dat"); open(NPEAKS, "> npeaks.dat"); my $line; my $filename = ""; my $full_filename; my $np; my $year; my $month; my $day; my $hour; my $min; my $sec = -1; my $nh = 0; my $ns = 0; while ( $line = ) { chomp($line); if ( $line =~ /^\s+[0-9\.]+\s+[0-9\.]+\s+[0-9\.]+\s+[0-9\.]+$/ ) { $np++; } unless ( $line =~ /^Peaks\ from\ peak\ search\ in\ (.+)$/ ) { next; } $full_filename = $1; # Process last image if ( $filename ) { unless ( $filename =~ /LCLS_(\d+)_([A-Za-z]+)(\d+)_(\d\d)(\d\d)(\d\d)_/ ) { printf(STDERR "Wrong filename format '%s'!\n", $filename); exit(1); } my $new_year = $1; my $new_month = $2; my $new_day = $3; my $new_hour = $4; my $new_min = $5; my $new_sec = $6; if ( $new_sec != $sec ) { if ( $ns > 0 ) { printf(HITRATE "%s/%s/%s-%s:%s:%s %f\n", $year, $month, $day, $hour, $min, $sec, $nh); } $year = $new_year; $month = $new_month; $day = $new_day; $hour = $new_hour; $min = $new_min; $sec = $new_sec; $nh = 0; $ns = 0; } printf(NPEAKS "%s/%s/%s-%s:%s:%s %f\n", $year, $month, $day, $hour, $min, $sec, $np); printf("%s: %i peaks\n", $filename, $np); if ( $np > 10 ) { $nh++; } $ns++; } $filename = basename($full_filename); $np = 0; } close(FH); close(HITRATE); close(NPEAKS); open(GP, "| gnuplot"); print(GP "set term postscript enhanced font \"Helvetica,20\"\n"); print(GP "set output \"hitrate.ps\"\n"); print(GP "set title \"Hit rate\"\n"); print(GP "set xtics nomirror rotate by -60\n"); print(GP "set xdata time\n"); print(GP "set timefmt \"%Y/%b/%d-%H:%M:%S\"\n"); print(GP "set format x \"%d/%b %H:%M\"\n"); print(GP "set rmargin 6\n"); print(GP "unset key\n"); print(GP "plot [] [] \"hitrate.dat\" u 1:2 w points\n"); print(GP "set xtics nomirror rotate by -60\n"); print(GP "set title \"Number of Peaks per Image\"\n"); print(GP "set xdata time\n"); print(GP "set timefmt \"%Y/%b/%d-%H:%M:%S\"\n"); print(GP "set format x \"%d/%b %H:%M\"\n"); print(GP "unset key\n"); print(GP "plot [] [] \"npeaks.dat\" u 1:2 w points\n"); close(GP); system("ps2pdf hitrate.ps"); unlink("hitrate.dat"); unlink("hitrate.ps");