


if test $# -lt 1 ; then
    echo "usage: `basename $0` <target_tune> FIR_file"
    echo " FIR filter Frequency Response "
    echo " "
    echo "  for  y(0) = c(n1)*X(-n1) + c(n2)*X(-n2) +...+ c(Ntap)*X(-Ntap)"
    echo " "
    echo " FIR file : format"
    echo "   n1  c(n1)" 
    echo "   n2  c(n2)" 
    echo "   n3  c(n3)" 
    echo "   ... "
    echo "  or" 
    echo "   c(n1)  n1" 
    echo "   c(n2)  n2" 
    echo "   c(n3)  n3" 
    echo "   ... "
    exit
fi

function IsNumber {
    echo "$1" | awk '{if ($1+0 == $1) print "true"; else print "false"}'
}

EXE=FIR_resp.py

function getij() {
  i=$1
  j=$2
  shift
  shift
  FILE=$1
  grep -v "^#" $FILE |\
  awk 'BEGIN{ i = '$i' ; j = '$j' }
  {  if( i < 0 ){ ii = NF + i }else{ ii = i } 
     if( j < 0 ){ jj = NF + j }else{ jj = j } 
     if( ii <= NF && jj <= NF ){
         if( $ii !~ /^[0-9+-.]/ ){ printf "# " ; printf( "%.20s %.10s\n", $ii, $jj ) }
         else { printf( "%s %s\n", $ii, $jj ) }  
     }
  }'
}

NU0=0
if `IsNumber $1` ; then
    NU0=$1
    shift
fi
echo $*
for FILE in $* ; do
  if test -s $FILE ; then
    (
      NAME=`echo $FILE|sed 's/.in$//g'|sed 's/.coef$//g'|sed 's/.fir$//g'|sed 's/.out$//g'|sed 's/.coef$//g'`
      RESP=${NAME}.resp
      if test "a$NU0" = "a0" ;then
         echo "( $EXE ${FILE} ) > $RESP"
               ( $EXE ${FILE} ) > $RESP
      else
         echo "( $EXE $NU0 ${FILE} ) > $RESP"
               ( $EXE $NU0 ${FILE} ) > $RESP
      fi 
      grep -v "^#" $RESP| getij 1 2 > ${NAME}.gain
      grep -v "^#" $RESP| getij 1 3 > ${NAME}.phase
      echo "     ${NAME}.gain     : gain_of_FIR(nu)"      
      echo "     ${NAME}.phase    : phase_of_FIR(nu)"      
      echo "     ${NAME}.power    : White noise power passing FIR filter"

      NF=`grep -v "^#" $RESP| head -n 5 | awk '{print NF}' | uniq`
      if test $NF -eq 6 ; then
         grep -v "^#" $RESP| getij 1 4 > ${NAME}_${NU0}.gain_eff
         grep -v "^#" $RESP| getij 1 5 > ${NAME}_${NU0}.phase_ext
         grep -v "^#" $RESP| getij 1 6 > ${NAME}_${NU0}.phase_delta
      fi
      echo "     ${NAME}.gain_eff : Effective gain of FIR = gain x cos( phase - phase(tune_target) )" 
    ) 
  else
    $FILE not exist
  fi
done


#  Mon Nov 18 11:50:01 JST 2024
#  /Users/nakamura/Dropbox/FIR/FIR_tools/coef/python/v5/example/run2
#


#  Fri Jul 4 10:01:38 JST 2025
#  /Users/nakamura/Dropbox/Instrumentation/FIR/SOLEIL_LLFB
#
