#!/usr/bin/perl

# First data file:
$first_num = 'XXXXX';

# Last data file:
$last_num =  'XXXXX';

# First data file -1 (!!!):
$job_number = 'XXXXN';

# Queue to run:
$job_que = 'farmX@h1farm01';
$work_srv = 'h1zeut02:';

# User name:
$user = "tsurin";

$actual_post = $first_num;
$actual = $first_num;
$exename = "dstmain";

$data_dir = "/acs/data/YY/rawd/NN/";
$data_tmp = "HERA04.H1RAWD.CXX";

$dstcards = "/x01/usr/$user/BST_PAD/Ntuple/Steer/dst.cards";
$jobpath  = "/x01/usr/$user/BST_PAD/Ntuple/DSTcode/$exename";
$datadir  = "/x01/usr/$user/BST_PAD/Ntuple/Hbook/";
$pooldir  = "/x01/usr/$user/BST_PAD/Ntuple/Pool/";

LOOP: {

if($actual > $last_num)
{print "WOW!! I'm finished, bye...\n"; exit;}

$job_running = 0;

open(QSTAT,"qstat -i -u $user \@h1farm01 | grep $user |");
while(<QSTAT>) {++($job_running);}
close(QSTAT);

print "Actually last file: $actual_post\n";  
print "$job_running jobs are already queued\n";
print "Submitting a new job...\n"; ++($job_number);

# creating submit script...

$sub_file = "dst.job_" . $job_number;
$out_file = "dst.out_" . $job_number;
$err_file = "dst.err_" . $job_number;
$hbk_file = "dst.hbk_" . $job_number;
$crd_file = "dst.crd_" . $job_number;
$log_file = "dst.log_" . $job_number;
$tmp_file = "dst.tmp_" . $job_number;
$r1 = 'PBS -N';
$q1 = 'PBS -q';
$o1 = 'PBS -o';
$e1 = 'PBS -e';

$poolpath = $pooldir;

open(SUBMIT,">>$sub_file");

print SUBMIT <<"EndOfSub";

# $r1 $sub_file
# $q1 $job_que
# $o1 $out_file
# $e1 $err_file

# for the pc farm use

cd /pbstmp/\$PBS_JOBID
scp $work_srv$jobpath ./
scp $work_srv$pooldir$crd_file ./

$exename < $crd_file > $log_file

gzip $hbk_file

scp $hbk_file.gz $work_srv$datadir
scp $log_file    $work_srv$pooldir

EndOfSub

print SUBMIT "\n";
close(SUBMIT);

$poolpath = $poolpath.$sub_file;
$poolsubmit = $poolpath;

# creating qcards file...
   
open(CARDS,">>$tmp_file");
$actual_file = $data_dir.$data_tmp.$actual_post;
++($actual_post);
++$actual;

$local_number = 1;

print CARDS <<"EndOfCards";
OPEN BOSINPUT UNIT=1 READ SKIPCOREV SKIPNXF &
FILE="$actual_file"
SELECT BOSINPUT RECNAME=RUNEVENT

EndOfCards

while($local_number <= 0  && $actual <= $last_num)
  {$actual_file = $data_tmp.$actual_post;
   print CARDS ",$data_dir$actual_file";
   ++$local_number;
   ++($actual_post);
   ++$actual;}

print CARDS <<"EndOfCards1";

END

HBKO 60 '$hbk_file'

EndOfCards1
close(CARDS);

$poolpath = $pooldir;
$poolpath = $poolpath.$crd_file;

system("cat $tmp_file $dstcards > $poolpath");
system("rm  $tmp_file");
system("echo $poolsubmit");
system("qsub $poolsubmit");

redo LOOP;}
