#!/bin/bash

#
# verbEnvSimulationsAndSeeds.sh
#
#   Memorizza nel file di output per la modalita' verbose, se attiva,
#   il nome delle directory, all'interno di quella di lavoro, 
#   insieme alla coppia di valori specificati per il seed per la
#   generazione casuale di eventi assegnati ad ogni job
#

#
# Parametri
#
# <verbose>
#   i valori ammessi per il parametro sono 0 o 1.
#   Se 1 attiva la modalita' verbose di esecuzione dello script
# <callingScript>
#   nome dello script chiamante
# <macroFileAbsolutePath>
#   path assoluto del file di macro a partire dal quale vengono generati
#   quelli per le simulazioni eseguite dai singoli job 
# <workingDirectoryRelativePath>
#   path relativo alla directory g4cParallelSimulation di quella
#   di lavoro che contiene le subdirectory assegnate ai job che
#   realizzano la simulazione, il file con le informazioni relative
#   ai loro istanti di sottomissione e di completamento e il file di
#   output per la modalita' verbose
# <totalNumberOfJobs>
#   numero totale dei job che realizzano la simulazione parallela.
#   Deve preferibilmente essere minore o uguale del numero di host
#   impegnati moltiplicato per il minimo numero di core che su ogni
#   host vengono riservati alla simulazione
# <setSeedsString>
#   stringa che nel file di macro individua la direttiva che setta
#   il seed di generazione dei numeri casuali
# <verbOutputFileRelativePath>
#   path relativo alla directory g4cParallelSimulation del file
#   di output per la modalita' verbose
#

# Estrae i parametri dello script dalla sua chiamata
verbose=$1
callingScript=$2
macroFileAbsolutePath=$3
workingDirectoryRelativePath=$4
totalNumberOfJobs=$5
setSeedsString=$6
verbOutputFileRelativePath=$7

# Esce se la modalita' verbose non e' attiva
if test $verbose -eq 0
then
   exit 0
fi

# estrae il nome della working directory dal path
# relativo alla directory g4cParallelSimulation
workingDirectoryName=$(basename $workingDirectoryRelativePath)

# Scandisce i job che realizzano la simulazione
for index in $(seq 1 $totalNumberOfJobs)
do
   # Per il job i-esimo
   # Si posiziona all'interno della directory a questo associata
   cd  $workingDirectoryRelativePath"/"$workingDirectoryName"-$index"

   # Estrae dal file di macro in questa contenuto la coppia di valori
   # per il seed del generatore casuale di eventi  
   randString=$(grep "$setSeedsString" $(basename $macroFileAbsolutePath))
   # Debug:  2>&1)
   read seedCmd seedValue_1 seedValue_2 <<< $randString
   
   # Si riposiziona all'interno della directory g4cParallelSimulation
   cd ../..
   
   # Memorizza nel file di output per la modalita' verbose
   # il nome delle directory, all'interno di quella di lavoro,
   # insieme alla coppia di valori specificati per il seed per la
   # generazione casuale di eventi assegnati al job
   cat <<  EOF >> $verbOutputFileRelativePath
Simulation: $workingDirectoryName-$index
Seed:  $seedValue_1 $seedValue_2

EOF

done
exit 0




