#! /bin/ksh

# Usage example:    multiple_whiz_ini xlong 0500 $WHZ/6-fermion/uui-udj-duk/ 05912
#                                             ^    
#                                             |    
#                                             | integer sqrt(s) (GeV)
#                                       

echo $1
echo $2 
echo $3 
echo $4

typeset -Z4 kecm
typeset  -i  ifinal
typeset  -i  ifinalee
typeset  -i  ifinalnn
typeset  -i  ieax
typeset  -i  isingleb
typeset  -i  iffh
typeset  -i  isub
typeset  -i  imax
typeset  -i  iunders

exec < $3results/whizard_submit.prc
typeset -i  i
typeset -Z6 kini=$4
typeset -i  k=$4-1
typeset -Z6 kzfive=$k
echo "initial k= $kzfive"

echo $3 > /var/tmp/process_dir
grep -q single_bosons  /var/tmp/process_dir 
isingleb=$?
echo "isingleb= " $isingleb

grep -q ffh  /var/tmp/process_dir 
iffh=$?
echo "iffh= " $iffh

grep -q ea_x  /var/tmp/process_dir 
ieax=$?
echo "ieax= " $ieax

kecm=$2

while read a b c d e f 
do 
    echo $a | grep '_' | grep -q -v '#'
    iunders=$?

    
    if [[ iunders -eq 0 ]]
    then 

	echo "b= " $b "  isingleb= " $isingleb " ieax= " $ieax
	echo $c > /var/tmp/final_state
	# echo " final_state= " $c
	if [[ $b == e1,E1 ]]
	then

	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=T
		ff[i]="'e1'"
		gg[i]=T
		hh[i]="'E1'"
		ss[i]=T
		tt[i]=F
		vv[i]=T
		ww[i]=F
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    uu[1]='1 0'

	    rr[2]='1 0'
	    uu[2]='0 1'

	    rr[3]='0 1'
	    uu[3]='1 0'

	    rr[4]='0 1'
	    uu[4]='0 1'

	    grep -q E1 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[1]=1
	    fi

	    grep -q e1 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[4]=1
	    fi


	elif [[ $b == e2,E2 ]]
	then

	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=F
		ff[i]="'e2'"
		gg[i]=F
		hh[i]="'E2'"
		ss[i]=T
		tt[i]=F
		vv[i]=T
		ww[i]=F
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    uu[1]='1 0'

	    rr[2]='1 0'
	    uu[2]='0 1'

	    rr[3]='0 1'
	    uu[3]='1 0'

	    rr[4]='0 1'
	    uu[4]='0 1'

	    grep -q E2 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[1]=1
	    fi

	    grep -q e2 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[4]=1
	    fi


	elif [[ $b == b,B ]]
	then

	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=F
		ff[i]="'b'"
		gg[i]=F
		hh[i]="'B'"
		ss[i]=T
		tt[i]=F
		vv[i]=T
		ww[i]=F
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    uu[1]='1 0'

	    rr[2]='1 0'
	    uu[2]='0 1'

	    rr[3]='0 1'
	    uu[3]='1 0'

	    rr[4]='0 1'
	    uu[4]='0 1'

	    grep -q B /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[1]=1
	    fi

	    grep -q b /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[4]=1
	    fi


	elif [[ $b == e1,e1 ]]
	then

	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=T
		ff[i]="'e1'"
		gg[i]=T
		hh[i]="'e1'"
		ss[i]=T
		tt[i]=F
		vv[i]=T
		ww[i]=F
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    uu[1]='1 0'

	    rr[2]='1 0'
	    uu[2]='0 1'

	    rr[3]='0 1'
	    uu[3]='1 0'

	    rr[4]='0 1'
	    uu[4]='0 1'

	    grep -q 'e1.*e1' /var/tmp/final_state
            ifinalee=$?
	    grep -q 'n1.*n1' /var/tmp/final_state
            ifinalnn=$?
	    # echo " ifinalee= " $ifinalee " ifinalnn= " $ifinalnn
            if [[ ifinalnn -eq 0 ]]
	    then
		isub[2]=1
		isub[3]=1
		isub[4]=1
	    elif [[ ifinalee -ne 0 ]]		
	    then
		isub[4]=1
	    fi


#	elif  [[ $b == e1,A && isingleb -ne 0 ]]
	elif  [[ $b == e1,A && ieax -ne 0 && isingleb -ne 0 ]]
	then





	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ff[i]="'e1'"
		ee[i]=T
		ss[i]=T
		tt[i]=F
		uu[i]='0 0'
		vv[i]=F
		gg[i]=T
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    hh[1]="'E1'"
	    ww[1]=T

	    rr[2]='1 0'
	    hh[2]="'A'"
	    ww[2]=F

	    rr[3]='0 1'
	    hh[3]="'E1'"
	    ww[3]=T

	    rr[4]='0 1'
	    hh[4]="'A'"
	    ww[4]=F


	    grep -q e1 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[3]=1
		isub[4]=1
	    fi



	elif [[ $b == e1,A && ieax -eq 0 ]]
	then

	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=T
		ff[i]="'e1'"
		gg[i]=T
		hh[i]="'A'"
		ss[i]=T
		tt[i]=F
		vv[i]=T
		ww[i]=F
                isub[i]=0
		i=i+1
	    done

	    rr[1]='1 0'
	    uu[1]='1 0'

	    rr[2]='1 0'
	    uu[2]='0 1'

	    rr[3]='0 1'
	    uu[3]='1 0'

	    rr[4]='0 1'
	    uu[4]='0 1'

	    grep -q e1 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[3]=1
		isub[4]=1
	    fi

	elif  [[ $b == A,E1 ]]
	then


	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		hh[i]="'E1'"
		ee[i]=T
		ss[i]=F
		ww[i]=F
		rr[i]='0 0'
		vv[i]=T
		gg[i]=T
                isub[i]=0
		i=i+1
	    done

	    ff[1]="'e1'"
	    tt[1]=T
	    uu[1]='1 0'
		    
	    ff[2]="'A'"
	    tt[2]=F
	    uu[2]='1 0'

	    ff[3]="'e1'"
	    tt[3]=T
	    uu[3]='0 1'

	    ff[4]="'A'"
	    tt[4]=F
	    uu[4]='0 1'

	    grep -q E1 /var/tmp/final_state
            ifinal=$?
            if [[ ifinal -ne 0 ]]
	    then
		isub[1]=1
		isub[2]=1
	    fi


	elif  [[ $b == A,A ]]
	then


	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ee[i]=T
		gg[i]=T
		rr[i]='0 0'
		uu[i]='0 0'
		ss[i]=F
		vv[i]=F
                isub[i]=0
		i=i+1
	    done

	    tt[1]=T
	    ww[1]=T
	    ff[1]="'e1'"
	    hh[1]="'E1'"

	    tt[2]=T
	    ww[2]=F
	    ff[2]="'e1'"
	    hh[2]="'A'"

	    tt[3]=F
	    ww[3]=T
	    ff[3]="'A'"
	    hh[3]="'E1'"

	    tt[4]=F
	    ww[4]=F
	    ff[4]="'A'"
	    hh[4]="'A'"


 	elif  [[ $b == e1,A && isingleb -eq 0 ]]
 	then
 
 
 
 
 
 	    i=1
 	    imax=4
 	    while [[ i -le 4 ]]
 	    do
 		ff[i]="'e1'"
 		ee[i]=F
 		ss[i]=F
 		tt[i]=F
 		uu[i]='0 0'
 		vv[i]=F
 		gg[i]=F
                 isub[i]=0
 		i=i+1
 	    done
 
 	    rr[1]='1 0'
 	    hh[1]="'E1'"
 	    ww[1]=F
 	    isub[1]=1
 
 	    rr[2]='1 0'
 	    hh[2]="'A'"
 	    ww[2]=F
 
 	    rr[3]='0 1'
 	    hh[3]="'E1'"
 	    ww[3]=F
 
 	    rr[4]='0 1'
 	    hh[4]="'A'"
 	    ww[4]=F
 
 
 	    grep -q e1 /var/tmp/final_state
             ifinal=$?
             if [[ ifinal -ne 0 ]]
 	    then
 		isub[3]=1
 		isub[4]=1
 	    fi
 


 	elif  [[ $b == n1,H && isingleb -eq 0 ]]
	then





	    i=1
	    imax=4
	    while [[ i -le 4 ]]
	    do
		ff[i]="'n1'"
		ee[i]=F
		ss[i]=F
		tt[i]=F
		uu[i]='0 0'
		vv[i]=F
		gg[i]=F
                isub[i]=1
		i=i+1
	    done

	    rr[1]='1 0'
	    hh[1]="'N1'"
	    ww[1]=F

	    rr[2]='1 0'
	    hh[2]="'H'"
	    ww[2]=F
	    isub[2]=0

	    rr[3]='0 1'
	    hh[3]="'E1'"
	    ww[3]=F

	    rr[4]='0 1'
	    hh[4]="'H'"
	    ww[4]=F




	else
	    print ' unexpected b=' $b
	    print ' program will now stop'
	    exit 1
	fi

	if [[ iffh -eq 0 ]]
	then
	    ooval=2.9
	else
	    ooval=5.5
	fi

	i=1
	while [[ i -le imax ]]
	do
            typeset -i k
	    k=k+1
	    kzfive=$k
	    echo "============ multiple_whiz_ini is preparing a job submission =============="
	    if [ ! -e $3results/multiple_cardswhiz_in ] ; then
               echo "$3results/multiple_cardswhiz_in does not exist"
               exit 1
            fi
            if [ ! -e $3results/whizard_default_cuts.cut1 ] ; then
               echo "$3results/whizard_default_cuts.cut1 does not exist"
               exit 1
            fi
	    echo $a $b $kzfive $i ${isub[i]}
	    sed -e "s/rrrr/${rr[i]}/" -e "s/ssss/${ss[i]}/" -e "s/tttt/${tt[i]}/"  \
	        -e "s/uuuu/${uu[i]}/" -e "s/vvvv/${vv[i]}/" -e "s/wwww/${ww[i]}/" \
	        -e "s/yyyy/$a/"       -e "s/eeee/${ee[i]}/" -e "s/ffff/${ff[i]}/" \
	        -e "s/gggg/${gg[i]}/" -e "s/hhhh/${hh[i]}/" -e "s/kkkk/$kecm/" \
	        -e "s/oooo/$ooval/"   $3results/multiple_cardswhiz_in \
		>  $3results/cardswhiz_in
	    cp $3results/whizard_default_cuts.cut1  $3results/whizard.cut1
	    sed "s/yyyy/$a/" $3results/whizard_default_cuts.cut1 >  $3results/whizard.cut1
	  #  echo " call whiz_ini_option " $1 $2 $3 $kzfive ${isub[i]}
	    whiz_ini_option $1 $2 $3 $kzfive ${isub[i]}
            echo $kzfive > last_processID.txt
	    i=i+1
	done


    fi
done
whizprint=whiz_print_$kini'_'$kzfive'.'log
multiple_print_ini $1 $2 $3 $kini > $whizprint
