#!/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 # # Copyright: MAGIC Software Development, 2000-2007 # # # ======================================================================== # # 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. # source `dirname $0`/sourcefile printprocesslog "INFO starting $0" program=makecallistolinks column=fCallisto table=SequenceProcessStatus set -C scriptlog=$runlogpath/$program`date +%F`.log date >> $scriptlog 2>&1 # check if script is already running lockfile=$lockpath/lock-$program.txt checklock >> $scriptlog 2>&1 callistorcseq=callisto.rc callistorcnew=callisto_Dec04Jan05.rc # reason why calibration with standard callisto.rc fails #reason1="Pulse is too much to the right, cannot go beyond logain limits!" #.* == hi or lo reason1="Pulse is too much to the right, out of .*-gain range" #reason2="No entry for resource id '2[45]' found in" 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 finish >> $scriptlog 2>&1 fi cd $mars # make links for callisto.rc for which the callisto.log contains reason printprocesslog "INFO linking callisto.rc files" for file in $files do # pulse=`cat $file | grep "$reason1\|$reason2"` pulse=`cat $file | grep "$reason1"` 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 printprocesslog "INFO linking $callistorcnew to $callistorc for sequ $sequ" # resetting the calibration echo "resetting the callisto for sequence $sequ" >> $scriptlog 2>&1 echo " reason: $pulse" >> $scriptlog 2>&1 resetlogpath=$logpath/resetcallisto 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 | intgrep` case $check1 in 1) echo " check1=$check1 -> everything ok, callisto has been reset " >> $scriptlog 2>&1 printprocesslog "INFO resetted calibration successfully for sequence $sequ" ;; 0) echo " check1=$check1 -> no connection to db -> continue..." >> $scriptlog 2>&1 printprocesslog "WARN connection to DB failed" check="no" ;; *) echo " check1=$check1 -> ERROR -> step could not be resetted -> continue " >> $scriptlog 2>&1 printprocesslog "ERROR resetcolumn.C failed for fCallisto for sequ $sequ" continue ;; esac #linking callisto.rc ln -vfs $setuppath/callisto/$callistorcnew $callistorc >> $scriptlog 2>&1 fi fi done finish >> $scriptlog 2>&1