Buonasera,
sto costruendo un piccolo script in Perl che faccia le seguenti cose:
- apra ROOT
- carichi una macro con il comando .L nomemacro.cc
- esegua la macro con il comando nomemacro("nomefile_in", "nomefile_out")
per ogni file presente in una certa cartella. Però non funziona, ma non so dove sbaglio. Si pianta dopo aver scritto "root -l". Forse è un problema legato a root?
I comandi che vorrei far partire automaticamente con questo script sono:
root -l
.L C14TotalFit.cc
C14TotalFit("/home/rootfiles/nomefile.root", "/home/results/nomefile.root.txt")
codice:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use Cwd;
my $infile_path = '/home/rootfiles';
my $outfile_path = '/home/results';
my $here = getcwd;
foreach my $arg (@ARGV){
if (($arg =~ /^help$/i) || ($arg =~/^usage$/i)){
#usage();
exit;
}
elsif ($arg =~ /^infile_path\=(\w+)/){
$infile_path = $1;
}
elsif ($arg =~ /^outfile_path\=(\w+)/){
$outfile_path = $1;
}
else {
die " ERROR: unknown parameter $arg \n";
}
}
chdir $infile_path or die "Cannot chroot to $infile_path: $!\n";
my @files = glob($infile_path."/*.root");
foreach my $file (@files){
my $init = "root -l";
print $init."\n";
`$init`;
my $load = ".L ${here}/C14TotalFit.cc";
print $load."\n";
`$load`;
my $cmd = "C14TotalFit(\"";
$cmd = $cmd.$infile_path.'/';
$cmd = $cmd.basename($file);
$cmd = $cmd."\", \"";
$cmd = $cmd.$outfile_path.'/';
$cmd = $cmd.basename($file);
$cmd = $cmd.".txt";
$cmd = $cmd."\")'";
print $cmd."\n";
`$cmd`;
}
Mille grazie