Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 7049)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 7050)
@@ -115,4 +115,7 @@
    * datacenter/scripts/buildsequenceentries
      - adapted paths
+
+   * datacenter/scripts/runganymed
+     - added (script to run ganymed automatically for datasets)
 
    * steps.rc
Index: /trunk/MagicSoft/Mars/datacenter/scripts/runganymed
===================================================================
--- /trunk/MagicSoft/Mars/datacenter/scripts/runganymed	(revision 7050)
+++ /trunk/MagicSoft/Mars/datacenter/scripts/runganymed	(revision 7050)
@@ -0,0 +1,223 @@
+#!/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-2004
+#
+#
+# ========================================================================
+#
+#
+
+source /home/operator/Mars/datacenter/scripts/sourcefile
+
+set -C
+
+table=DataSetProcessStatus
+column=fGanymed
+date=NULL
+datetime=`date +%F-%H-%M-%S`
+year=`date +%Y`
+pno=24 # number of processes, i.e. number of todo-files
+
+todofile=/magic/datacenter/lists/ToDo-$table-$column
+getstatuslogpath=$logpath/getstatus/ganymed/$year
+getstatuslog=$getstatuslogpath/getstatus-ganymed-$datetime.log
+
+scriptlogpath=$logpath/run/ganymed/`date +%Y/%m/%d`
+if [ ! -d $scriptlogpath ]
+then
+  mkdir -pv $scriptlogpath 
+  if [ ! -d $scriptlogpath ]
+  then 
+     echo "could not make scriptlogpath "$scriptlogpath 
+     exit
+  fi
+fi
+
+scriptlog=$scriptlogpath/runganymed-$datetime.log
+
+date >> $scriptlog 2>&1
+
+
+if [ ! -d $getstatuslogpath ]
+then
+  mkdir -pv $getstatuslogpath >> $scriptlog 2>&1
+  if [ ! -d $getstatuslogpath ]
+  then 
+     echo "could not make getstatuslogpath "$getstatuslogpath >> $scriptlog 2>&1
+     date  >> $scriptlog 2>&1
+     exit
+  fi
+fi
+
+#cd $mars
+
+macrospath=/home/operator/Mars.cvs/datacenter/macros
+cd /home/operator/Mars.cvs
+
+date > $lockpath/lock-getting-ganymed-list.txt >> $scriptlog 2>&1
+checklock0=$?
+case $checklock0 in 
+    0)   echo "checklock0=$checklock0 -> continue " >> $scriptlog 2>&1;;
+    1)   echo "checklock0=$checklock0 -> file exists " >> $scriptlog 2>&1
+         echo "-> getting list for ganymed is running -> exit" >> $scriptlog 2>&1
+         date  >> $scriptlog 2>&1
+         exit;;
+    *)   echo "checklock0=$checklock0 -> something went completely wrong" >> $scriptlog 2>&1;;
+esac
+
+echo "checking if other todo-files are there" >> $scriptlog 2>&1
+if  ls $todofile-[1-9]*.txt >> $scriptlog 2>&1
+then 
+   echo "other file(s) on disk " >> $scriptlog 2>&1
+   echo " -> choose one file and run ganymed" >> $scriptlog 2>&1
+else
+   echo "getting list..." >> $scriptlog 2>&1
+   check0=`root -q -b $macrospath/getdolist.C+\("\"$table\""\,"\"$column\""\,"\"$date\""\) | tee $getstatuslog | grep int | sed -e 's/(int)//'`
+   
+   case $check0 in 
+       1)   echo "check0=$check0 -> everthing ok -> run ganymed" >> $scriptlog 2>&1;;
+       *)   echo "check0=$check0 -> ERROR -> step has to be repeated" >> $scriptlog 2>&1;;
+   esac
+   echo "cutting to-do-file" >> $scriptlog 2>&1
+   echo "getting no of lines" >> $scriptlog 2>&1
+   lines=`cat $todofile.txt | wc -l`
+   echo "number of lines: "$lines >> $scriptlog 2>&1
+   while (( "$lines" < "$pno" ))
+   do
+      echo "# of lines ($lines) < # of processes ($pno) "
+      pno=`expr $pno / 2` 
+   done
+   echo "pno: "$pno
+   nofiles=`expr $lines / \( $pno - 1 \)`
+   echo "number of files: "$nofiles >> $scriptlog 2>&1
+   echo "deviding todo-file" >> $scriptlog 2>&1
+   for (( j=1 ; j <= $pno ; j++ ))
+   do 
+     begin=$(echo "1 + ( ($j - 1) * $nofiles)" | bc -l)
+     end=$(echo "$begin + $nofiles - 1" | bc -l)
+     echo "begin: "$begin >> $scriptlog 2>&1
+     echo "end: "$end >> $scriptlog 2>&1
+     file=${todofile}-${j}.txt
+     echo "file: "$file >> $scriptlog 2>&1
+     sed -ne ''"$begin"','"$end"'w '"$file"'' $todofile.txt
+   done
+
+   rm -v $todofile.txt >> $scriptlog 2>&1
+fi
+
+rm -v $lockpath/lock-getting-ganymed-list.txt >> $scriptlog 2>&1
+
+nr=bla
+echo "finding the right todo-file" >> $scriptlog 2>&1
+for (( i = 1; i <= $pno ; i++ ))
+do 
+   if ! ls $todofile-$i.txt >> $scriptlog 2>&1
+   then 
+      echo "file is not on disk -> continue" >> $scriptlog 2>&1
+      continue
+   fi
+   date > $lockpath/lock-$table-$column-$i.txt >> $scriptlog 2>&1 
+   checklock=$?
+   case $checklock in 
+       0)   echo "checklock=$checklock -> setting number" >> $scriptlog 2>&1
+            nr=${i}
+            break;;
+       1)   echo "checklock=$checklock -> file exists -> continue" >> $scriptlog 2>&1;;
+       *)   echo "checklock=$checklock -> something went completely wrong" >> $scriptlog 2>&1;;
+   esac
+done
+
+case $nr in
+   bla)      echo "everything is beeing processed -> exit" >> $scriptlog 2>&1
+             date  >> $scriptlog 2>&1
+             exit;;
+   12345678) echo "process nr: "$nr >> $scriptlog 2>&1;;
+esac
+
+
+datasets=(`cat $todofile-$nr.txt`)
+
+if [ "$datasets" = "" ]
+then 
+   echo "nothing to do -> exit"  >> $scriptlog 2>&1
+   rm -v $todofile-$nr.txt >> $scriptlog 2>&1
+   rm -v $lockpath/lock-$table-$column-$nr.txt >> $scriptlog 2>&1
+   date  >> $scriptlog 2>&1
+   exit
+fi
+
+echo "datasets: "${datasets[@]} >> $scriptlog 2>&1
+
+for dataset in ${datasets[@]}
+do 
+  no=`printf %08d $dataset | cut -c 0-4`
+  outpath="/magic/data/ganymed/$no/"`printf %08d $dataset`
+  inpath=`echo $outpath | sed -e 's/ganymed/star/'`
+  echo "inpath: "$inpath >> $scriptlog 2>&1
+  echo "outpath: "$outpath >> $scriptlog 2>&1
+  if [ ! -d $outpath ]
+  then
+    mkdir -pv $outpath >> $scriptlog 2>&1
+    if [ ! -d $outpath ]
+    then 
+       echo "could not make outpath $outpath -> continue " >> $scriptlog 2>&1
+       continue
+    fi
+  fi
+  datasetfile="/magic/datasets/$no/dataset"`printf %08d $dataset`".txt"
+  echo "datasetfile: "$datasetfile >> $scriptlog 2>&1
+  
+  echo "run ganymed..." >> $scriptlog 2>&1
+  ./ganymed -b -q -f --log=$outpath/ganymed$dataset.log --ind=$inpath --out=$outpath $datasetfile  2>> $scriptlog> /dev/null
+  check1=$?
+
+  case $check1 in
+     0)   echo "check1=$check1 -> everthing ok " >> $scriptlog 2>&1
+          echo "-> inserting the status for ganymed for dataset $dataset into the db" >> $scriptlog 2>&1
+          setstatuslogpath=$logpath/setstatus/ganymed/$no
+          if [ ! -d $setstatuslogpath ]
+          then
+            mkdir -pv $setstatuslogpath >> $scriptlog 2>&1
+            if [ ! -d $setstatuslogpath ]
+            then 
+               echo "could not make setstatuslogpath "$setstatuslogpath >> $scriptlog 2>&1
+               continue
+            fi
+          fi
+          setstatuslog=$setstatuslogpath/setstatus-ganymed
+          check4=`root -q -b $macrospath/setstatus.C+\("\"$dataset\""\,"\"$table\""\,"\"$column\""\,"\"Now()\""\) | tee $setstatuslog-$dataset.log | grep int | sed -e 's/(int)//'`
+          case $check4 in
+  	     1)   echo "check4=$check4 -> everthing ok, status has been set" >> $scriptlog 2>&1;;
+  	     *)   echo "check4=$check4 -> ERROR -> step could not be set" >> $scriptlog 2>&1;;
+          esac
+  	  ;;
+     *)   echo "check1=$check1 -> ERROR -> step has to be repeated" >> $scriptlog 2>&1;;
+  esac
+done
+
+rm -v $todofile-$nr.txt >> $scriptlog 2>&1
+rm -v $lockpath/lock-$table-$column-$nr.txt >> $scriptlog 2>&1
+
+set +C
+
+date  >> $scriptlog 2>&1
+
