Support for writing to remote file systems (shift/castor).
authorbuncic <buncic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Feb 2001 18:55:43 +0000 (18:55 +0000)
committerbuncic <buncic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Feb 2001 18:55:43 +0000 (18:55 +0000)
share/alirun

index 95dc7ab..89297eb 100755 (executable)
@@ -1,16 +1,20 @@
-#!/usr/local/bin/bash
+#!/bin/sh
 #############################################################################
 # alirun - a shell script to run AliRoot
 #############################################################################
 #
 # modification history
 # $Log$
+# Revision 1.3  2001/02/01 18:00:23  buncic
+# Use bash in place of sh for compatibility
+#
 # Revision 1.2  2001/02/01 17:46:26  buncic
 # Fixed mktemp on HP and Sun
 #
 # Revision 1.1  2001/01/26 21:22:02  hristov
 # Major upgrade of AliRoot code
 #
+#############################################################################
 #
 # SYNOPSIS
 # alirun [[-d <TPC+ITS+..>|-all]]
 #
 #C<
 ###########################################################################
-
+if [ "$ALIRUN_SHELL" = "" ]
+then
+  ALIRUN_SHELL=bin/sh
+  for shell in bash zsh ksh
+  do
+    for dir in /bin /usr/bin /usr/local/bin
+    do
+      if [ -x $dir/$shell ]
+      then
+        ALIRUN_SHELL=$dir/$shell; export ALIRUN_SHELL 
+        break 2
+      fi
+    done
+  done
+  exec $ALIRUN_SHELL -norc  -noprofile $0 $*
+fi
 ###########################################################################
 AliRun()
 ###########################################################################
@@ -148,13 +167,38 @@ Mktemp()
    echo /tmp/alirun.$$. 
 }
 
+###########################################################################
+Configure()
+###########################################################################
+{
+   if [ -x /usr/local/bin/rfmkdir ] 
+   then
+     MKDIR="/usr/local/bin/rfmkdir"
+   else
+     MKDIR="mkdir"
+   fi
+   if [ -x /usr/local/bin/rfrm ] 
+   then
+     RMDIR="echo y | /usr/local/bin/rfrm -r"
+   else
+     RMDIR="rm -rf"
+   fi
+   if [ -x /usr/local/bin/rfstat ] 
+   then
+     STAT="/usr/local/bin/rfstat" 
+   else
+     STAT="test -d"
+   fi
+}
+
 ###########################################################################
 Cleanup()
 ###########################################################################
 {
-  if [ -d $ALIRUN_TMPDIR ]
+  $STAT $ALIRUN_TMPDIR > /dev/null 2>&1
+  if [ $? -eq 0 ]
   then
-    rm -rf $ALIRUN_TMPDIR
+    $RMDIR $ALIRUN_TMPDIR >/dev/null 2>&1
   fi
 }
 
@@ -242,6 +286,14 @@ HitsMacro()
 ////////////////////////////////////////////////////////////////////////////
 void Simulate()
 {
+   TFile *file = TFile::Open(gSystem->Getenv("CONFIG_FILE"),"recreate");
+
+   //file->UseCache();
+
+   file->SetCompressionLevel(2);
+
+   gAlice->SetBaseFile(gSystem->DirName(gSystem->Getenv("CONFIG_FILE")));
+   
    gAlice->Init(gSystem->Getenv("CONFIG"));
 
    gAlice->Run(1);
@@ -265,11 +317,18 @@ DigitsMacro()
 ////////////////////////////////////////////////////////////////////////////
 void Digitize()
 {
-   gAlice->OpenBaseFile("update");
+   TFile *file = TFile::Open(gSystem->Getenv("CONFIG_FILE"),"update");
+   if (! file ) {
+       cout << "Could not open Hits file. Exiting..." << endl;
+       exit(1);
+   }
+   file->SetCompressionLevel(2);
+
+   //file->UseCache();
 
    if (gAlice) delete gAlice;
    
-   AliRun *gAlice = (AliRun*)gDirectory->Get("gAlice");
+   AliRun *gAlice = (AliRun*)file->Get("gAlice");
   
    gAlice->$mode(gSystem->Getenv("CONFIG_DETECTOR"));
 }
@@ -283,15 +342,14 @@ EOF
 AliRunMakeman()
 ###########################################################################
 {
-   mangen -n tool $0
+   mandir=../man/man4 
+   ./mangen -n tool $0
    if [ $? -eq 0 ]
    then
-     if [ -d ../man/man4 ] 
-     then
-       mv $0.? ../man/man4
-     fi
+     [ ! -d $mandir ]  && mkdir -p $mandir
+     mv `basename $0`.? $mandir
+     exit
    fi
-   exit
 }
 
 ###########################################################################
@@ -336,12 +394,14 @@ AliRunDigits()
 }
 
 
-
 ###########################################################################
+Configure;
+###########################################################################
+
+ALL="MUON RICH TOF ITS TPC PHOS PMD CASTOR ZDC TRD"; # export ALL
+DETECTORS="";                                        # export DETECTORS
+FILE="galice.root";  
 
-ALL="MUON RICH TOF ITS TPC PHOS PMD CASTOR ZDC TRD"; export ALL
-DETECTORS="";                                        export DETECTORS
-CONFIG_FILE="galice.root";                           export CONFIG_FILE
 CONFIG=$ALICE_ROOT/macros/Config.C;                  export CONFIG
 CONFIG_NPARTICLES=50;                                export CONFIG_NPARTICLES
 CONFIG_PATH=`pwd`;                                   export CONFIG_PATH
@@ -433,7 +493,7 @@ do
             ;;
         -f)
             shift 1
-            CONFIG_FILE=$1; export CONFIG_FILE 
+            FILE=$1
             ;;
         -n)
             shift 1
@@ -462,19 +522,49 @@ do
     esac
 done
 
-
 if [ `dirname $OUTPUT` = "." ]
 then
-  OUTPUT=`pwd`/$OUTPUT
+  CONFIG_OUTDIR=`pwd`/$OUTPUT
+else
+  CONFIG_OUTDIR=$OUTPUT
 fi
 
-[ ! -d $OUTPUT        ] && mkdir -p $OUTPUT
-[ ! -d $ALIRUN_TMPDIR ] && mkdir -p $ALIRUN_TMPDIR
+case $CONFIG_OUTDIR in
+  rfio:*|/shift/*|shift:*|/castor/*|castor:*)
+          ROOT_FILE_TYPE="rfio:"
+          ;;
+  root:*)
+          ROOT_FILE_TYPE="root:"
+          ;;
+  http:*)
+          ROOT_FILE_TYPE="http:"
+          ;;
+  file:*)
+          ROOT_FILE_TYPE=""
+          ;;
+        *)
+          ROOT_FILE_TYPE=""
+          ;; 
+esac
+
+export CONFIG_OUTDIR
+export CONFIG_ROOT_FILE_TYPE
+
+for dir in $CONFIG_OUTDIR $ALIRUN_TMPDIR
+do
+  $STAT $dir > /dev/null 2>&1
+  if [ $? -ne 0 ] 
+  then 
+    $MKDIR -p $dir
+  fi
+done
+
+CONFIG_FILE=$ROOT_FILE_TYPE$CONFIG_OUTDIR/$FILE; export CONFIG_FILE
 
 trap Cleanup 2
 
 (
- cd $OUTPUT
+ cd $ALIRUN_TMPDIR
  for cmd in $CMDLIST
  do
     case `type -t AliRun$cmd` in
@@ -488,4 +578,4 @@ trap Cleanup 2
  done
 )
 
-Cleanup
\ No newline at end of file
+Cleanup