#!/usr/bin/env perl
# Averaging of raw spectral functions
# Rok Zitko, rok.zitko@ijs.si, Apr 2012, Jun 2012

use warnings;
use strict;

chomp(my $Nz = `getparam Nz 1_zloop`);
chomp(my $min = `getparam broaden_min 1_zloop`);
chomp(my $max = `getparam broaden_max 1_zloop`);
chomp(my $ratio = `getparam broaden_ratio 1_zloop`);
chomp(my $T = `getparam T 1_zloop`);

print 'average raw spectra, rok.zitko@ijs.si, June 2012'."\n";
print "Nz=$Nz min=$min max=$max ratio=$ratio T=$T\n";

my $pr = "DMNRG_dens";

my $prefix = (-d "res" ? "res" : ".");

avg("spec_${pr}_A_d-A_d.bin",   "$prefix/c-imG.dat");
avg("spec_${pr}_self_d-A_d.bin","$prefix/c-imF.dat");

sub avg
{
    my $in = shift;
    my $out = shift;
    
    system "mkdir -p avgdir";
    system "rm -f avgdir/spec*";
#    avgone($in, "avgdir/spec0.7.dat", 0.7);
#    avgone($in, "avgdir/spec0.8.dat", 0.8);
#    avgone($in, "avgdir/spec0.9.dat", 0.9);
    avgone($in, "avgdir/spec1.0.dat", 1.0);
#    avgone($in, "avgdir/spec1.1.dat", 1.1);
#    avgone($in, "avgdir/spec1.2.dat", 1.2);
#    avgone($in, "avgdir/spec1.3.dat", 1.3);
    system "averagefiles avgdir/spec* >$out";
    system "rm -f avgdir/spec*";
    system "rmdir avgdir";
}

sub avgone
{
    my $in = shift;
    my $out = shift;
    my $omega0 = shift;
    
    unlink ("spec.dat", $out);
    system "broaden -m $min -M $max -r $ratio $in $Nz 0.2 $T $omega0";
    if ($?) {
      die "broaden failed for $in. Exiting.\n";
    }
    system "mv spec.dat $out";
}
