#!/usr/bin/perl -w

use strict;
use Getopt::Long;
use POSIX;

my $cross=0;
GetOptions('cross'=>\$cross);


my $index = 1;
$index = 1 if ($cross);

my @amp = ();

while (<>) {

  my @line = split;
  push @amp, $line[$index];
}

my $npoint = scalar(@amp);

my $window = 10;
$window = 0 if ($cross);

my $n=0;
my $sum=0;
my $sumsqr=0;

my $i;
for ($i=floor($npoint*0.15); $i<$npoint/2-$window; $i++) {
  $n++;
  $sum += $amp[$i];
  $sumsqr += $amp[$i]*$amp[$i];
}
for ($i=$npoint/2+$window; $i<ceil($npoint*0.85); $i++) {
  $n++;
  $sum += $amp[$i];
  $sumsqr += $amp[$i]*$amp[$i];
}


my $mean = $sum/$n;
my $rms = sqrt($sumsqr/$n - $mean*$mean);
my $SNR;
if ($rms==0) {
  $SNR=0;
} else {
  if ($cross) {
    $SNR = $amp[$npoint/2]/$rms;
  } else {
    $SNR = ($amp[$npoint/2]-$mean)/$rms;
  }
}
my $peak;
if ($cross) {
  $peak = $mean;
} else {
  $peak = $amp[$npoint/2]-$mean;
}

printf("%.3f  %.3f %.1f %.2f\n", $mean, $rms, $peak, $SNR);
