#!/bin/bash

#
# verbParallelSimulationParameters.sh
#
#   memorizza nel file di output per la modalita' verbose, se attiva
#   il valore dei parametri della simulazione parallela
#

# 
# 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
# <simulationExecutableAbsolutePath>
#   path assoluto dell'eseguibile da assegnare ad ogni job
#   della simulazione parallela
# <jobsTimeOut>
#   numero di secondi dall'inizio della sua esecuzione trascorso il quale ogni job
#   viene interrotto. Se 0 inibisce il time out 
# <parallelJobsPerHost>
#   numero dei job eseguiti in parallelo su ognuno degli host impegnati nella
#   simulazione. Non deve essere maggiore del minimo numero di core riservati
#   alla simulazione su ogni host 
# <hostsList>
#   elenco dei nomi degli host impegnati nella simulazione, separati da
#   virgola e senza blank
# <geant4EnvVariablesSetUp>
#   path assoluto dello script che setta le variabili di ambiente
#   di Geant4 per la simulazione
# <tspQueuesPositioning>
#   variabile simbolica che, definendo il posizionamento del file
#   di informazioni per la coda di task gestita da tsp 
#   (task spooler), ne permette l'accesso all'host che la
#   utilizza per gestire l'esecuzione parallela dei job.
#   Al file in questione, memorizzato su ogni host nella directory
#   "\tmp", è assegnato il nome della working directory seguito
#   dal suffisso ".tmp"
# <beamCmdString>
#   stringa che nel file di macro individua la direttiva che setta 
#   il numero degli eventi processati da ogni job
# <setSeedsString>
#   stringa che nel file di macro individua la direttiva che setta
#   il seed di generazione casuale di eventi
# <verbOutputFileName>
#   nome del file di output, nella working directory, per la
#   modalita' verbose
# <jobsRuntimeFileName>
#   nome del file, nella working directory, nel
#   quale vengono memorizzati l'istante di sottomissione e di
#   completamento di tutti i job che realizzano la simulazione
# <jobRuntimeFileName>
#   nome del file, nella directory assegnata ad ogni job, nel
#   quale vengono memorizzati i suoi istanti di sottomissione
#   e di completameto
# <scriptsRelativePath>
#   path relativo alla directory g4cParallelSimulation
#   di quella che contiene gli script principali
#   che implementano la simulazione
# <errRelativePath>
#   path relativo alla directory g4cParallelSimulation
#   di quella che contiene gli script per i messaggi
#   di errore
# <verbRelativePath>
#   path relativo alla directory g4cParallelSimulation 
#   di quella che contiene gli script di gestione 
#   della modalita' verbose
# <helpRelativePath>
#   path relativo alla directory g4cParallelSimulation
#   di quella che contiene i messaggi di aiuto al lancio
#   della simulazione
# <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
simulationExecutableAbsolutePath=$6
jobsTimeOut=$7
parallelJobsPerHost=$8
hostsList=$9
geant4EnvVariablesSetUp=${10}
tspQueuesPositioning=${11}
beamCmdString=${12}
setSeedsString=${13}
verbOutputFileName=${14}
jobsRuntimeFileName=${15}
jobRuntimeFileName=${16}
scriptsRelativePath=${17}
errRelativePath=${18}
verbRelativePath=${19}
helpRelativePath=${20}
verbOutputFileRelativePath=${21}

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

# Memorizza nel file di output per la modalita' verbose
# il valore dei parametri della simulazione parallela
cat <<  EOF >> $verbOutputFileRelativePath
Valore dei parametri della simulazione parallela
-
<verbose>: $verbose
<macroFileAbsolutePath>: $macroFileAbsolutePath
<workingDirectoryRelativePath>: $workingDirectoryRelativePath
<totalNumberOfJobs>: $totalNumberOfJobs
<simulationExecutableAbsolutePath>: $simulationExecutableAbsolutePath
<jobsTimeOut>: $jobsTimeOut
<parallelJobsPerHost>: $parallelJobsPerHost
<hostsList>: $hostsList
<geant4EnvVariablesSetUp>: $geant4EnvVariablesSetUp
<tspQueuesPositioning>: $tspQueuesPositioning
<beamCmdString>: $beamCmdString
<setSeedsString>: $setSeedsString
<verbOutputFileName>: $verbOutputFileName
<jobsRuntimeFileName>: $jobsRuntimeFileName
<jobRuntimeFileName>: $jobRuntimeFileName
<scriptsRelativePath>: $scriptsRelativePath 
<errRelativePath>: $errRelativePath 
<verbRelativePath>: $verbRelativePath 
<helpRelativePath>: $helpRelativePath 

EOF

exit 0

