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

use warnings;

chomp(my $Nz = `getparam Nz param.loop`);
chomp(my $min = `getparam broaden_min param.loop`);
chomp(my $max = `getparam broaden_max param.loop`);
chomp(my $ratio = `getparam broaden_ratio param.loop`);

my $T = `getparam T param.loop`;
chomp($T);

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

my $pr = "FDM_dens";

# Conduction band
avg("spec_${pr}_A_d-A_d.bin",    "res/c-imG.dat");
avg("spec_${pr}_self_d-A_d.bin", "res/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 "$out";
    system "broaden -m $min -M $max -r $ratio $in $Nz 0.2 $T $omega0";
    if ($?) {                                                                                                                                                                                                                                    
      die "broaden failed: $?\n";                                                                                                                                                                                                                
    }  
    system "mv spec.dat $out";
}
