#!/usr/bin/perl # Jaideep Singh # October 2003 use strict "subs"; sub checkval { $in = $_[0]; if ($in =~ /\!\!WARNING\!\! The executable \"caRepeater\" couldnt be located because of errno \= \"No such file or directory\" You may need to modify your PATH environment variable\. Creating CA repeater with fork\(\) system call\. Repeater will inherit parents process name and resources\. Duplicate resource consumption may occur\.\s*(.*)$/) {$in = $1}; if ((!($in))&&(!($in =~ /^0$/))) {$out = "\?"} else {$out = $in}; # print "the cv is $in\n"; return $out; }; sub jtime { ($sec, $min, $hr, $day, $mon) = @_; # (31,28,31,30,31,30,31,31,30,31,30,31); @mon2day = (0,31,59,90,120,151,181,212,243,273,304,334); $totsec = $sec + 60*($min + 60*($hr + 24*($day -1 + $mon2day[$mon-1]))); return $totsec; }; %mon2num = ( "January" => "01", "February" => "02", "March" => "03", "April" => "04", "May" => "05", "June" => "06", "July" => "07", "August" => "08", "September" => "09", "October" => "10", "November" => "11", "December" => "12", "Jan" => "01", "Feb" => "02", "Mar" => "03", "Apr" => "04", "May" => "05", "Jun" => "06", "Jul" => "07", "Aug" => "08", "Sep" => "09", "Oct" => "10", "Nov" => "11", "Dec" => "12" ); #my @rend = (0) x 5000; #open(RUNLIST,") # { /(\d+)\t(.*)/; # $rend[$1] = $2; }; #close(RUNLIST); #@recount = (0) x 5000; #my @rend; #my @rcom; #open(RUNLIST,") # { /^(.*_(\d+)\..*)$/; # $rend[$2][$recount[$2]] = $1; # print "$1\t$recount[$1]\t$2\n" if ($recount[$1]); # $recount[$2]++; # }; #close(RUNLIST); #open(COMLIST,") # { /^(.*_(\d+)\..*)$/; # $rcom[$2] = $1; # }; #close(COMLIST); my $tzero = jtime(0,0,0,20,4); my $firstrun = 999; my $lastrun = 4218; #$firstrun = $lastrun = 4165; my $numdata = 284; open(RUNOUT,">rightend_mss.raw"); print RUNOUT "
\n";
RUN: for ($runnum=$firstrun;$runnum<=$lastrun;$runnum++) 
     {
        @data = ('\N') x $numdata;
        $data[0] = $runnum;
 	print "$runnum start...\n";
        $data[283] = 0;
        if (open(TESTFILE,"\/home\/jaideep\/gdh\/runfiles_gdh_from_mss\/runfiles_gdh\/halog_com_$runnum\.epics"))
                {
                        LINE: while ()
			{
			if (/Run_type=(.*),beam_energy=(.*),beam_halfwaveplate=(.*),beam_raster=(.*),comment_text=(.*),daq_mode=(.*),kin_name=(.*),leftarm_p=(.*),leftarm_theta=(.*),rightarm_p=(.*),rightarm_theta=(.*),target_halfwaveplate=(.*),target_name=(.*),target_polarization=(.*),target_type=(.*)/) 
			{ $data[10] = checkval($1); 
			  $data[11] = checkval($2);
			  $data[12] = checkval($3);
			  $data[13] = checkval($4);
			  $data[14] = checkval($5);
			  $data[15] = checkval($6);
			  $data[16] = checkval($7);
			  $data[17] = checkval($8);
			  $data[18] = checkval($9);
			  $data[19] = checkval($10);
			  $data[20] = checkval($11);
			  $data[21] = checkval($12);
			  $data[22] = checkval($13);
			  $data[23] = checkval($14);
			  $data[24] = checkval($15);
			  $getcomm = 1;
			  next LINE };
			if ($getcomm) {/([^\n]*)/; $data[282] = $1; $getcomm = 0; next LINE};
			if (/PRESCALE FACTORS:ps1=(\d+).*ps2=(\d+).*ps3=(\d+).*ps4=(\d+).*ps5=(\d+).*ps6=(\d+).*ps7=(\d+).*ps8=(\d+)/) 
			{ $data[25] = checkval($1);
			 $data[26] = checkval($2);
			 $data[27] = checkval($3);
			 $data[28] = checkval($4);
			 $data[29] = checkval($5);
			 $data[30] = checkval($6);
			 $data[31] = checkval($7);
			 $data[32] = checkval($8);
			  next LINE};
			if (/EVENTS\[0\]\:\s*(\d+).*\[\+\]\:\s*(\d+).*\[\-\]\:\s*(\d+)/) 
			{ $data[33] = checkval($1);
			  $data[34] = checkval($2);
			  $data[35] = checkval($3);
			  next LINE};
			if (/TIME  \[0\]\:\s*(.*) mins.*\[\+\]\:\s*(.*) mins.*\[\-\]\:\s*(.*) mins/) 
			{ $data[36] = checkval($1);
			  $data[37] = checkval($2);
			  $data[38] = checkval($3);
			  next LINE};
			if (/LIVE  \[0\]\:\s*(.*)\%.*\[\+\]\:\s*(.*)\%.*\[\-\]\:\s*(.*)\%/)
			{ $data[39] = checkval($1);
			  $data[40] = checkval($2);
			  $data[41] = checkval($3);
			  next LINE};
#		(/TRIGGER RATES:   PRES/REAL/)
			if (/T1\[0\] \:\s*(.*)\/(.*) Hz\s*T2\[0\] \:\s*(.*)\/(.*) Hz\s*T8\[0\] \:\s*(.*)\/(.*) Hz/) 
			{ $data[42] = checkval($1);
			  $data[43] = checkval($2);
			  $data[44] = checkval($3);
			  $data[45] = checkval($4);
			  $data[46] = checkval($5);
			  $data[47] = checkval($6);
			  next LINE};
			if (/T1\[\+\] \:\s*(.*)\/(.*) Hz\s*T2\[\+\] \:\s*(.*)\/(.*) Hz\s*T8\[\+\] \:\s*(.*)\/(.*) Hz/) 
			{ $data[48] = checkval($1);
			  $data[49] = checkval($2);
			  $data[50] = checkval($3);
			  $data[51] = checkval($4);
			  $data[52] = checkval($5);
			  $data[53] = checkval($6);
			  next LINE};
			if (/T1\[\-\] \:\s*(.*)\/(.*) Hz\s*T2\[\-\] \:\s*(.*)\/(.*) Hz\s*T8\[\-\] \:\s*(.*)\/(.*) Hz/) 
			{ $data[54] = checkval($1);
			  $data[55] = checkval($2);
			  $data[56] = checkval($3);
			  $data[57] = checkval($4);
			  $data[58] = checkval($5);
			  $data[59] = checkval($6);
			  next LINE};
#		(/TRIGGER TOTALS:   PRES/REAL/)
			if (/T1\[0\] \:\s*(.*)\/(.*)\s*T2\[0\] \:\s*(.*)\/(.*)\s*T8\[0\] \:\s*(.*)\/(.*)/) 
			{ $data[60] = checkval($1);
			  $data[61] = checkval($2);
			  $data[62] = checkval($3);
			  $data[63] = checkval($4);
			  $data[64] = checkval($5);
			  $data[65] = checkval($6);
			  next LINE};
			if (/T1\[\+\] \:\s*(.*)\/(.*)\s*T2\[\+\] \:\s*(.*)\/(.*)\s*T8\[\+\] \:\s*(.*)\/(.*)/) 
			{ $data[66] = checkval($1);
			  $data[67] = checkval($2);
			  $data[68] = checkval($3);
			  $data[69] = checkval($4);
			  $data[70] = checkval($5);
			  $data[71] = checkval($6);
			  next LINE};
			if (/T1\[\-\] \:\s*(.*)\/(.*)\s*T2\[\-\] \:\s*(.*)\/(.*)\s*T8\[\-\] \:\s*(.*)\/(.*)/) 
			{ $data[72] = checkval($1);
			  $data[73] = checkval($2);
			  $data[74] = checkval($3);
			  $data[75] = checkval($4);
			  $data[76] = checkval($5);
			  $data[77] = checkval($6);
			  next LINE};
#		(/AVERAGE CURRENT/)
			if (/BCM.*\:\s*(.*) uA\s*BCM.*\:\s*(.*) uA\s*BCM.*\:\s*(.*) uA/) 
			{ $data[78] = checkval($1); 
			  $data[79] = checkval($2); 
		 	  $data[80] = checkval($3); 
			  next LINE};
#		(/APPROXIMATE CURRENT ASYMMETRIES/)
			if (/BCM u1 \:\s*(.*) ppm\s*BCM u3 \:\s*(.*) ppm\s*BCM u10\:\s*(.*) ppm/) 
			{ $data[81] = checkval($1); 
			  $data[82] = checkval($2); 
		 	  $data[83] = checkval($3); 
			  next LINE};
			if (/BCM d1 \:\s*(.*) ppm\s*BCM d3 \:\s*(.*) ppm\s*BCM d10\:\s*(.*) ppm/) 
			{ $data[84] = checkval($1); 
			  $data[85] = checkval($2); 
		 	  $data[86] = checkval($3); 
			  next LINE};
#		(/APPROXIMATE BCM CHARGES (C)/) 
			if (/BCM u1 \[0\]\:\s*(.*)\s*BCM u3 \[0\]\:\s*(.*)\s*BCM u10\[0\]\:\s*(.*)\s*/) 
			{ $data[87] = checkval($1); 
			  $data[88] = checkval($2); 
	 		  $data[89] = checkval($3); 
			  next LINE};
			if (/BCM u1 \[\+\]\:\s*(.*)\s*BCM u3 \[\+\]\:\s*(.*)\s*BCM u10\[\+\]\:\s*(.*)\s*/) 
			{ $data[90] = checkval($1); 
			  $data[91] = checkval($2); 
		 	  $data[92] = checkval($3); 
			  next LINE};
			if (/BCM u1 \[\-\]\:\s*(.*)\s*BCM u3 \[\-\]\:\s*(.*)\s*BCM u10\[\-\]\:\s*(.*)\s*/) 
			{ $data[93] = checkval($1); 
			  $data[94] = checkval($2); 
		 	  $data[95] = checkval($3); 
			  next LINE};
			if (/BCM d1 \[0\]\:\s*(.*)\s*BCM d3 \[0\]\:\s*(.*)\s*BCM d10\[0\]\:\s*(.*)\s*/) 
			{ $data[96] = checkval($1); 
			  $data[97] = checkval($2); 
		 	  $data[98] = checkval($3); 
			  next LINE};
			if (/BCM d1 \[\+\]\:\s*(.*)\s*BCM d3 \[\+\]\:\s*(.*)\s*BCM d10\[\+\]\:\s*(.*)\s*/) 
			{ $data[99] = checkval($1); 
			  $data[100] = checkval($2); 
		 	  $data[101] = checkval($3); 
			  next LINE};
			if (/BCM d1 \[\-\]\:\s*(.*)\s*BCM d3 \[\-\]\:\s*(.*)\s*BCM d10\[\-\]\:\s*(.*)\s*/) 
			{ $data[102] = checkval($1); 
			  $data[103] = checkval($2); 
		 	  $data[104] = checkval($3); 
			  next LINE};
			} #end line by line com file
		close(TESTFILE);
		}; #end if com file open
		if (open(TESTFILE2,"\/home\/jaideep\/gdh\/runfiles_gdh_from_mss\/runfiles_gdh\/End_of_Run_$runnum\.epics"))
                {
                        LINE2: while ()
                        {
#	if (/User name ([^<]*)$temp<\/a>"; 
#  		$data[280] = jtime($data[3],$data[2],$data[1],$data[5],$data[4])-$tzero;
  		$data[281] = jtime($data[110],$data[109],$data[108],$data[107],$data[106])-$tzero;
  		$data[283] = 1;
	  	close(TESTFILE2);
		}; # end if file open
	for ($j=0;$j<($numdata-1);$j++) {print RUNOUT "$data[$j]\t"};
  	print RUNOUT "$data[283]\n";
  	print "$data[0]\t$data[283] is done!\n";
}; #end run by run loop
close(RUNOUT);