
use strict;

use lib 'd:/Programs/Perl/lib';
use Utils;
use JFile;
use Sci::Optics;

my $path = "Cu2O.pal";
$path = $ARGV[0] if(@ARGV > 0);
my $outfile = "Out.csv";
if(@ARGV > 1)  {
	$outfile = $ARGV[1];
}
else {
	my ($drive, $directory, $filename, $ext, $lastdir, $filebody) = Deps::SplitFilePath($path);
	$outfile = Deps::MakePath("$drive$directory", "$filebody-out.csv", 0);
}
print "In File : $path\n";
print "Out File: $outfile\n";

my $out = new JFile;
$out->Open($outfile, "w") or die $!;
$out->print("E(eV),wl(nm),e1,e2,n,k,alpha(cm-1)\n");

my $in = new MultiColumnData();
my ($nData, $pLabelArray, @DataArray) = $in->Read($path);
print "n=$nData  ", join(',', @$pLabelArray), "\n";
my $pE  = $in->GetXData("E.*", ".*eV.*");
my $pe1 = $in->GetYData(".*e1.*");
my $pe2 = $in->GetYData(".*e2.*");
print "p=$pE, $pe1, $pe2\n";
for(my $i = 0 ; $i < $nData ; $i++) {
	my $E = $pE->[$i];
	my $wl = Optics::eVTonm($E);
	my $e1 = $pe1->[$i];
	my $e2 = $pe2->[$i];
	my ($n, $k) = Optics::EpsToNK($e1, $e2);
	my $alpha = Optics::KToAlpha($wl, $k);
	print "$E: $e1, $e2 => $wl: $n, $k, $alpha\n";
	$out->print("$E,$wl,$e1,$e2,$n,$k,$alpha\n");
}

$out->Close();
