#!/bin/sh
#
# ========================================================================
#
# *
# * This file is part of MARS, the MAGIC Analysis and Reconstruction
# * Software. It is distributed to you in the hope that it can be a useful
# * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
# * It is distributed WITHOUT ANY WARRANTY.
# *
# * Permission to use, copy, modify and distribute this software and its
# * documentation for any purpose is hereby granted without fee,
# * provided that the above copyright notice appear in all copies and
# * that both that copyright notice and this permission notice appear
# * in supporting documentation. It is provided "as is" without express
# * or implied warranty.
# *
#
#
#   Author(s): Daniela Dorner  08/2004 <mailto:dorner@astro.uni-wuerzburg.de>
#
#   Copyright: MAGIC Software Development, 2000-2006
#
#
# ========================================================================
#
# This script links a special callisto.rc for data, for which the 
# calibration with the standard callisto.rc failes. 
# 
# The sequences with failing calibration are searched by searching for the 
# reason of failure in the callisto.log Then the special callisto.rc is 
# linked to the directory of the sequence. 
#

program=makecallistolinks
source /home/`whoami`/Mars/datacenter/scripts/sourcefile

set -C

callistorcseq=callisto.rc
callistorcnew=callisto_Dec04Jan05.rc

scriptlogpath=$logpath/run/$program/`date +%Y/%m/%d`
makedir $scriptlogpath
scriptlog=$scriptlogpath/$program`date +%F`.log

date >> $scriptlog 2>&1

# check if script is already running
lockfile=$lockpath/lock-$program.txt
checklock  >> $scriptlog 2>&1

# reason why calibration with standard callisto.rc fails
reason1="Pulse is too much to the right, cannot go beyond logain limits!"
reason2="Pulse is too much to the left, cannot go below 0!"
echo "reason1: "$reason1 >> $scriptlog 2>&1
echo "reason2: "$reason2 >> $scriptlog 2>&1

# find files containing reason 
files=`find $datapath/callisto/ -name callisto*.log`
if [ "$files" = "" ]
then 
   echo "nothing to do -> exit"  >> $scriptlog 2>&1
   rm -v $lockfile >> $scriptlog 2>&1
fi

column=fCallisto
table=SequenceProcessStatus

cd $mars

# make links for callisto.rc for which the callisto.log contains reason
for file in $files
do 
   pulse=`cat $file | grep "$reason1\|$reason2"`
   sequ=`echo $file | cut -d/ -f6`
   path=`dirname $file`
   callistorc=$path/$callistorcseq

   if [ ! "$pulse" = "" ]
   then
      if ! ls -l $callistorc | grep $callistorcnew >> $scriptlog 2>&1
      then 
         # resetting the calibration
         echo "resetting the callisto for sequence $sequ" >> $scriptlog 2>&1
         echo "  reason: $pulse" >> $scriptlog 2>&1
         resetlogpath=$logpath/resetcallisto
         echo "resetlogpath: $resetlogpath" >> $scriptlog 2>&1
         makedir $resetlogpath >> $scriptlog 2>&1
         resetlog=$resetlogpath/reset-callisto-$sequ.log

         check1=`root -q -b $macrospath/resetcolumn.C+\("\"$column\""\,"\"$table\""\,"\"$sequ\""\,"\"$sequ\""\,kFALSE\) | tee $resetlog | grep int | sed -e 's/(int)//'`
         case $check1 in
            1)   echo "check1=$check1 -> everything ok, callisto has been reset " >> $scriptlog 2>&1
                 ;;
            *)   echo "check1=$check1 -> ERROR -> step could not be resetted -> continue " >> $scriptlog 2>&1
                 continue ;;
         esac
         #linking callisto.rc
         ln -vfs $setuppath/callisto/$callistorcnew $callistorc >> $scriptlog 2>&1
      fi
   fi
done

rm -v $lockfile >> $scriptlog 2>&1

set +C

date  >> $scriptlog 2>&1

