#!/usr/bin/perl -w

$server = $ENV{'SERVER_NAME'};



&writeHtmlProcessPage;


sub writeHtmlProcessPage {
 
#
#    Make sure we are in the main directory, not bin
#
  if (-d "bin") {
#       print "We are in main directory \n";
#       print qx(pwd); 	
  }
  else{
#      print "Not in correct directory \n";
      chdir("../");
      if (-d "bin") {
#	  print "We are in main directory \n";
      }
      else{
	  print "Error gen_crossxhtml-pl must be run from main or bin directory \n";
	  exit;
      }	  
  }  
  $directory=qx(pwd);

#
# name of the output file
#
  $htfile =  "HTML/crossx" . "\.html"; 
  open(PAGE,"> $htfile");
#
# The name of the current run
#
  if($#ARGV < 0) {
      $RunName="Web";
  } else {
      $RunName="$ARGV[0]";
  }

#
# Write out the current running situation
#

#--------
# Getting info
#--------
  open (INCARD,"Cards/proc_card.dat") || die "Error reading file proc_card.dat"; 
  @incard=<INCARD>;
  close (INCARD);

     
# process
  $listpos = 0;
  until($listpos>$#incard){
    if($incard[$listpos] =~ /^#(\s+)Begin(\s+)PROCESS/) {$ini=$listpos};
    if($incard[$listpos] =~ /^#(\s+)End(\s+)PROCESS/)   {$end=$listpos};
    $listpos = $listpos + 1;
  }
#
  $listpos=$ini;
  while($listpos < $end){
    if($incard[$listpos] =~ /^#/) {$listpos = $listpos + 1;
                                   next;};
    if($incard[$listpos] =~ ">") {$interaction=$incard[$listpos]};
    if($incard[$listpos] =~ "end_coup"){$listpos = $end;}
    $listpos = $listpos + 1;
  }
  ($interaction, $junk)=split(/#/ , $interaction);
#($interaction, $junk)=split(/\@/ , $interaction);

#model
  $listpos = 0;
  until($listpos>$#incard){
    if($incard[$listpos] =~ /^#(\s+)Begin(\s+)MODEL/) {$ini=$listpos};
    if($incard[$listpos] =~ /^#(\s+)End(\s+)MODEL/)   {$end=$listpos};
    $listpos = $listpos + 1;
  }
#
      ($model, $junk)   =split(/#/ , $incard[$ini+1]);

  chomp($interaction);
  chomp($model);
   
#--------
# end getting info
#--------
  print PAGE  "<HTML> <HEAD> \n";

  if (-e "RunWeb") {
      print PAGE "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\" > ";
  }
  print PAGE "<META HTTP-EQUIV=\"EXPIRES\" CONTENT=\"20\" > ";
  print PAGE "\n <TITLE>Online Event Generation</TITLE></HEAD> \n <BODY>";
  print PAGE "<H2 align=center> Results for $interaction in the $model</H2> <HR>";

  if (-e "RunWeb" || -e "error") {

     print PAGE "<H2 ALIGN=CENTER><P> Currently Running </H2>";
     print PAGE "<TABLE BORDER=2 ALIGN=CENTER>";
     print PAGE "\<TR ALIGN=CENTER>";
     print PAGE "\<TH nowrap ROWSPAN=2 font color=\"\#0000FF\"> Run Name \n";
     print PAGE "\<TH nowrap ROWSPAN=2 font color=\"\#0000FF\"> Cards\n";
     print PAGE "\<TH nowrap ROWSPAN=2 font color=\"\#0000FF\"> Status   \n";
     print PAGE "\<TH nowrap ROWSPAN=2 font color=\"\#0000FF\"> Results  \n";
     print PAGE "\<TH nowrap ROWSPAN=1 COLSPAN=4 font color=\"\#0000FF\"> Jobs on the cluster\n";
     print PAGE "\<TR> \<TH>   Queued \<TH>  Running \<TH> Done \<TH> Total";

     chdir("./SubProcesses");
#     if (!-e "$RunName"."_results.html") {  
#     if (-e "../RunWeb" || -e "../error") {
     if (-e "../$RunName.log") {print PAGE "\<TR ALIGN=CENTER> \<TD nowrap> <a href=\"../$RunName.log\">$RunName</a> \</TD>";}
     else {print PAGE "\<TR ALIGN=CENTER> \<TD nowrap> $RunName \</TD>";}
     print PAGE "<TD nowrap> <a href=\"../Cards/param_card.dat\">param_card</a><BR><a href=\"../Cards/run_card.dat\">run_card</a><BR><a href=\"../Cards/plot_card.dat\">plot_card</a>";
     if (-e "../Cards/pythia_card.dat") {
	 print PAGE "<BR><a href=\"../Cards/pythia_card.dat\">pythia_card</a>";
	 if (-e "../Cards/pgs_card.dat") {print PAGE "<BR><a href=\"../Cards/pgs_card.dat\">pgs_card</a>";}
     }
     print PAGE " \</TD><TD nowrap> "; 
     if (-e "../survey") {
	 print PAGE "Running Survey\</TD> \<TD nowrap> No results yet \</TD> ";
     }
     else {
	 if (-e "../refine"){
	     print PAGE "Running 1<sup>st</sup> Refine\</TD> \<TD nowrap>";
	 }
	 elsif(-e "../refine2") {
	     print PAGE "Running 2<sup>nd</sup>  Refine\</TD> \<TD nowrap>";
	 }
	 elsif (-e "../error"){
	     print PAGE "Error generating events\</TD> \<TD nowrap>";
	 }
	 else {
	     print PAGE "Running\</TD> \<TD nowrap>";
	 }
	 if (open SIGFILE, "results.html") {
	     $line = <SIGFILE>;
	     $line = <SIGFILE>;
	     $line = <SIGFILE>;
	     $line = <SIGFILE>;
	     
	     print PAGE " \<A HREF\=\"../SubProcesses/results.html\"\>  ";
	     $line = <SIGFILE>;
	     chomp $line;
	     print PAGE "$line";
	     print PAGE "</A> \</TD> \n";
	 }
	 else
	 {print PAGE "</A> \</TD> \n";}
	 
	 close(SIGFILE);
	      
     }
     my($Status,@jobs);
     if( -e "../status"){$Status = qx(cat ../status)}
     else{$Status="Unknown"};
     
     @jobs = split / /, $Status;
     if ( $jobs[0] =~ /^\d+$/){
	      print PAGE "  \<TD> $jobs[0] \<TD>  $jobs[1] \<TD> $jobs[2] \<TD> $jobs[3] \</TR>";}
     else
     {print PAGE " \<TD COLSPAN=4 ALIGN=CENTER> $Status \</TR>"  };
#      }
#}
#  }
  	
     print PAGE "</TABLE>\n";
     print PAGE "\<BR\> \n";
     chdir("../");
     if (-e "Online" && -e "RunWeb") {
	 print PAGE "<H1 align=center> \n";
	 print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_jobs-pl\" METHOD=\"POST\">";
	 print PAGE "<INPUT TYPE=HIDDEN NAME=dir_name VALUE=\"$directory\"> \n";
	 print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"kill\"> \n";
	 print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Stop Job\">  \n";
	 print PAGE "</FORM> \n";
     }
  }
#
# start writing the old runs information
#    
  @runs=();
  chdir("Events/");
  foreach $f (<*_banner.txt>) { 
      if ($f =~ /(.+)_banner.txt/) {push(@runs,$1)}
  }  
  chdir("../");
#  print "run labels : @runs \n";

  print PAGE "<BR>\n";
  print PAGE "\<HTML\> \n";
  print PAGE "\<HEAD\> \n";
  print PAGE "\<\/HEAD\> \n";
  print PAGE "\<BODY\> \n";
  print PAGE "<P> <H2 align=\"center\"> Available Results <\/H2>";	
  
  if(-e "gridpack.tar.gz"){
         print PAGE "<center>Current Grid package for this run: <a href=\"../gridpack.tar.gz\">gridpack.tar.gz</a></center>";
  }
      
  print PAGE "<TABLE BORDER=2 align=\"center\" >  \n";	
  print PAGE "<TR align=\"center\">";	
  print PAGE "<TH>Links</TH> <TH>Events</TH> <TH NOWRAP> Tag </TH><TH NOWRAP> Run </TH> \n";
  print PAGE "<TH>Collider</TH> <TH> Cross section (pb) </TH> <TH> Events  </TH> </TR> \n";
  $collider="";
  $nevents=0;
  $cross=0;
  
  foreach $i (@runs) {
      $res="SubProcesses/".$i."_results.html";
      $eve="Events/".$i."_unweighted_events.lhe.gz";
      $roo="Events/".$i."_unweighted_events.root";
      $plo="Events/".$i."_plots.html";
      $ban="Events/".$i."_banner.txt";
      $pythia="Events/".$i."_pythia_events.hep.gz";
      $pythiaroot="Events/".$i."_pythia_events.root";
      $pythialog="Events/".$i."_pythia.log";
      $pythialhe="Events/".$i."_pythia_events.lhe.gz";
      $pythialheroot="Events/".$i."_pythia_lhe_events.root";
      $pythiaplots="Events/".$i."_pyplots.html";
      $pgs="Events/".$i."_pgs_events.lhco.gz";
      $pgslog="Events/".$i."_pgs.log";
      $pgsroot="Events/".$i."_pgs_events.root";
     
      
      print PAGE "<TR align=\"center\"> ";
      print PAGE "<TD>";
      if(-e "Events/".$i."_1_unweighted_events.lhe.gz"){
         print PAGE "Multi Run $i TOTAL: <br>";
      } elsif (-e "$res"){
         print PAGE "     <a href=\"../$res\">results</a>";
      }
      if(-e "$plo") {print PAGE "     <a href=\"../$plo\">plots</a> ";}
      print PAGE "     <a href=\"../$ban\">banner</a> ";
      print PAGE "<BR> </TD>\n<TD><TABLE BORDER=2 width=\"100%\" align=\"center\" >";
      if(-e "$eve") {print PAGE "    <TR align=\"center\"> <td> Parton-level </td><td><a href=\"../$eve\">LHE</a> ";}
      elsif ( -e "Online" ){
         print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\"  ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
         print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
         print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"banner_run\"> \n";
         print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
         print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Regenerate events\"> \n";
         print PAGE "</FORM> \n";
      }
      if(-e "$roo") {print PAGE "     <a href=\"../$roo\">rootfile</a> </td> </tr>";} else {print PAGE "</td> </tr>";}
      if(-e "$pythia") {print PAGE "  <TR align=\"center\">  <td>Hadron-level<br>(<a href=\"../$pythialog\">Pythia</a>)</td> <td><a href=\"../$pythia\">STDHEP</a> ";
      } elsif(-e "$eve" && -e "Online" ) {
         print PAGE "  <TR align=\"center\">  <td>Hadron-level<br>(Pythia)</td> <td> ";
         print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\"  ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
         print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
         print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"pythia\"> \n";
         print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
         print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Run Pythia\"> \n";
         print PAGE "</FORM> \n";
      }
      if(-e "$pythiaroot") {print PAGE "     <a href=\"../$pythiaroot\">rootfile</a>";}
      if(-e "$pythialhe") {print PAGE "     <a href=\"../$pythialhe\">LHE</a>";}
      if(-e "$pythialheroot") {print PAGE "     <a href=\"../$pythialheroot\">rootfile (LHE)</a>";}
      if(-e "$pythiaplots") {print PAGE "     <a href=\"../$pythiaplots\">plots</a> </td></tr>";} else {print PAGE "</td> </tr>";}
      if(-e "$pgs") {print PAGE "  <TR align=\"center\">  <td>Reco. Objects.<br> (<a href=\"../$pgslog\">PGS</a>)</td><td><a href=\"../$pgs\">LHCO</a>";}
      else {
          if (-e "Online" && -e "$pythia") {
              print PAGE "  <TR align=\"center\">  <td>Reco. Objects.<br>(PGS)</td> <td> ";
              print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\"  ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
              print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
              print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"pgs\"> \n";
              print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
              print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Run PGS\"> \n";
              print PAGE "</FORM> \n";
          }
      }
      if(-e "$pgsroot") {print PAGE "     <a href=\"../$pgsroot\">rootfile</a> </td></tr>";} else {print PAGE "</td> </tr>";}
      print PAGE "</table></TD>";
#extract the information from the banner:
      open(INPUT , "$ban") or die "Could not read from file $ban \n";
      @input=<INPUT>; 
#
# start loop over stored results
#
      foreach $j (@input) {
#find the tag
	  if($j =~ /^(.+)\=.*run_tag.*\!/){$tag=$1;$tag =~ s/'||"//g;}
#find the collider
	  if($j =~ /^(.+)\=.*lpp1.*\!/){$lpp1=$1}
	  if($j =~ /^(.+)\=.*lpp2.*\!/){$lpp2=$1}
	  if($j =~ /^(.+)\=.*ebeam1.*\!/){$ebeam1=$1}
	  if($j =~ /^(.+)\=.*ebeam2.*\!/){$ebeam2=$1}
#find the cross section
	  if($j =~ /^#.*Integrated weight.*:(.+)/){$cross=$1}
#find the number of events
	  if($j =~ /^#.*Number of Events.*:(.+)/){$nevents=$1}
	  
      }# end loop over banner


      $lpp1 =~ s/\s+//g;
      $lpp2 =~ s/\s+//g;
      if($lpp1 eq "0") {$lpp1="e"}
      if($lpp1 eq "1") {$lpp1="p"}
      if($lpp1 eq "-1") {$lpp1="pbar"}
      if($lpp2 eq "0") {$lpp2="e"}
      if($lpp2 eq "1") {$lpp2="p"}
      if($lpp2 eq "-1") {$lpp2="pbar"}
      $collider=$lpp1."     ".$lpp2;
      $collider= $collider."<BR>".$ebeam1." x ".$ebeam2." GeV";
      if (-e "$i.log") {print PAGE "<TD> $tag  </TD> <TD> <a href=\"../$i.log\">$i</a> </TD> <TD> $collider </TD> <TD> $cross </TD> <TD> $nevents";}
      else {print PAGE "<TD> $tag  </TD> <TD> $i </TD> <TD> $collider </TD> <TD> $cross </TD> <TD> $nevents";}
  if (-e "Online") {
      print PAGE "</TD><TD><FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
      print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
      print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
      if(-e "$eve"){
         print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"remove\"> \n";
         print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Remove run\"> \n";
      } else {
         print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"removebanner\"> \n";
         print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Remove banner\"> \n";
      }
      print PAGE "</FORM> \n";
      if(-e "$pythia") {
        print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
        print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
        print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
        print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"remove_pythia\"> \n";
        print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Remove Pythia\"> \n";
        print PAGE "</FORM> \n";
      }
      if(-e "$pgs") {
        print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\">";
        print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
        print PAGE "<INPUT TYPE=HIDDEN NAME=run VALUE=\"$i\"> \n";
        print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"remove_pgs\"> \n";
        print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Remove PGS\"> \n";
        print PAGE "</FORM> \n";
      }
      
      
  }
      print PAGE "</TD></TR>\n";
} # end loop over stored results
  print PAGE "</table>";	

#  if (-e "Online") {
#  print PAGE "<H1 align=center> \n";
#  print PAGE "<FORM ACTION=\"http://$server/cgi-bin/RunProcess/handle_runs-pl\" METHOD=\"POST\">";
#  print PAGE "<INPUT TYPE=HIDDEN NAME=directory VALUE=\"$directory\"> \n";
#  print PAGE "<INPUT TYPE=HIDDEN NAME=whattodo VALUE=\"rmgrid\"> \n";
#  print PAGE "<INPUT TYPE=SUBMIT VALUE=\"Reset VEGAS grid\">  \n";
#  print PAGE "</FORM> \n";
#  }

  print PAGE "\<P><H3 align=center>\<A HREF\=\"../index.html\"\> Main Page \<\/A\>";

  print PAGE "\<\/BODY\> \n";
  print PAGE "\<\/HTML\> \n";
  close(PAGE);
  
} #end sub writeHtmlProcessPage






