diff --git a/eas/do_sims.sh b/eas/do_sims.sh
index 5e192336487cf489fed818206987f0342bb1594a..3b4157ac72a0d70f2963d50251c5e1078624a33d 100755
--- a/eas/do_sims.sh
+++ b/eas/do_sims.sh
@@ -80,8 +80,8 @@ showhelp() {
echo -e
echo -e "Modifiers"
echo -e " -l : Enables SLURM cluster compatibility (with sbatch)."
+ echo -e " -d : Enable DOCKER compatible mode"
echo -e " -e : Enable CHERENKOV mode"
- echo -e " -d : Enable DEBUG mode"
echo -e " -x : Enable other defaults (It doesn't prompt user for unset parameters)"
echo -e " -? : Shows this help and exit."
echo
@@ -107,6 +107,8 @@ defaults=false
ecut=800
slurm=false
onedataBase="/mnt/datahub.egi.eu/test8/fluka"; # need to change also at rain.pl
+nprocs=$(/usr/bin/nproc) # number of simultaneous process for paralllel local processing
+docker=false
echo
while getopts 'w:k:p:t:v:u:f:h:s:j:c:b:m:n:r:i:o:q:a:?lydex' opt; do
@@ -210,7 +212,7 @@ while getopts 'w:k:p:t:v:u:f:h:s:j:c:b:m:n:r:i:o:q:a:?lydex' opt; do
slurm=true
;;
d)
- debug=true
+ docker=true
;;
x)
defaults=true
@@ -331,7 +333,15 @@ if $highsec; then
fi
if $slurm; then
- echo -e "# INFO: SLURM mode is enable. Will not work in other environments."
+ echo -e "# INFO: SLURM mode is enabled. Will not work in other environments."
+fi
+if $docker; then
+ if [ ! -d $onedataBase ]; then
+ echo; echo -e "ERROR: You are running in DOCKER enabled mode but onedata is not accessible"
+ showhelp
+ exit 1;
+ fi
+ echo -e "# INFO: DOCKER mode is enabled."
fi
corsika_bin="corsika${ver}Linux_${hig}_${lemodel}"
@@ -340,7 +350,7 @@ if [ ! -e $wdir/$corsika_bin ]; then
showhelp
exit 1;
fi
-echo -e "# INFO : Executable file is ($corsika_bin)"
+echo -e "# INFO: Executable file is ($corsika_bin)"
# It is important to now the total time in onedata. Adding total simulation time to the project name...
prj="${prj}_$(printf "%06d" ${tim})"
@@ -435,12 +445,14 @@ fi
rain="$rain -r $wdir -v $ver -h $hig -f $lemodel -b $prj/\$i-*.run"
echo -e "# INFO : rain command: $rain"
-oneout="$onedataBase/S3_${prj}_${site}_${lemodel}"
-[[ ! -d $oneout ]] && mkdir $oneout
-while ! cp -v $wdir/$prj/inject $oneout; do
- sleep 5
-done
-echo -e "# INFO : Results will be transferred to $oneout"
+if $docker; then
+ oneout="$onedataBase/S3_${prj}_${site}_${lemodel}"
+ [[ ! -d $oneout ]] && mkdir $oneout
+ while ! cp -v $wdir/$prj/inject $oneout; do
+ sleep 5
+ done
+ echo -e "# INFO : Results will be transferred to $oneout"
+fi
echo -e "# INFO : Calculations done. Now run the go_${prj}_* scripts in $wdir/"
basenice=19
@@ -454,6 +466,9 @@ if $slurm; then
echo -e "" >> $wdir/go-slurm-$prj.sh
chmod 744 $wdir/go-slurm-$prj.sh
fi
+if $docker; then
+ echo -n > $wdir/go-docker-$prj.run
+fi
stuff=(001206 001608 000703 002412 001105 002814 001407 002010 005626 000904 003216 002713 002311 004020 001909 005224 004018 004822 005525 003919 005123 003115 003517 004521)
t=0
@@ -478,12 +493,18 @@ mv $wdir/go-$prj-all-$n.sh $wdir/go-$prj-all-$n.run
echo $wdir/go-$prj-all-$n.sh >> $wdir/go-slurm-$prj.sh
fi
done
-
+if $docker; then
+ for i in $(seq 0 $[${#stuff[@]}-1]); do
+ nuc=${stuff[$i]}
+ r=${rain/\$i/${nuc}}
+ echo -e "$r" >> $wdir/go-docker-$prj.run
+ done
+ rm $wdir/go-$prj-all-*.sh
+fi
#helium
b=$(basename $(ls -1 $wdir/$prj/000402-*) .run | sed -e "s/000402-//" | awk '{print $1*1.0}')
c=$(basename $(ls -1 $wdir/$prj/000402-*) .run | sed -e "s/000402-//" | awk -v p=${prcHe} '{print int($1/p+0.5)}')
printf -v k "%011d" $c
-
for i in $(seq 1 $prcHe); do
u="0${i}0402"
cat $wdir/$prj/000402-*.run | sed -e "s/000402/$u/" | sed -e "s/$b/$c/" > $wdir/$prj/$u-$k.run
@@ -504,6 +525,14 @@ rm $wdir/$prj/000402-*.run
if $slurm; then
echo $wdir/go-${prj}-he.sh >> $wdir/go-slurm-$prj.sh
fi
+if $docker; then
+ for i in $(seq 1 $prcHe); do
+ u="0${i}0402"
+ r=${rain/\$i/${u}}
+ echo -e "$r" >> $wdir/go-docker-$prj.run
+ done
+ rm $wdir/go-$prj-he.sh
+fi
#protons
b=$(basename $(ls -1 $wdir/$prj/000014-*) .run | sed -e "s/000014-//" | awk '{print $1*1.0}')
@@ -531,9 +560,17 @@ for j in \$(seq $ii $ff); do
done
chmod 644 $wdir/go-$prj-pr-$i.sh
mv $wdir/go-$prj-pr-$i.sh $wdir/go-$prj-pr-$i.run" > $wdir/go-${prj}-pr-$i.sh
-if $slurm; then
- echo $wdir/go-${prj}-pr-$i.sh >> $wdir/go-slurm-$prj.sh
-fi
+ if $slurm; then
+ echo $wdir/go-${prj}-pr-$i.sh >> $wdir/go-slurm-$prj.sh
+ fi
+ if $docker; then
+ for j in $(seq $ii $ff); do
+ printf -v n "%02d" $j
+ u="${n}0014"
+ r=${rain/\$i/${u}}
+ echo -e "$r" >> $wdir/go-docker-$prj.run
+ done
+ fi
done
rm $wdir/$prj/000014-*.run
for i in $(seq 1 $multPr); do
@@ -544,3 +581,28 @@ if $slurm; then
echo -e "mv $wdir/go-slurm-$prj.sh $wdir/go-slurm-$prj.run" >> $wdir/go-slurm-$prj.sh
echo -e "chmod 644 $wdir/go-slurm-$prj.run" >> $wdir/go-slurm-$prj.sh
fi
+if $docker; then
+ rm $wdir/go-${prj}-pr-*.sh
+ rm -r
+ echo -e "#!/bin/bash" > $wdir/go-docker-$prj.sh
+ echo -e "# go docker $prj" >> $wdir/go-docker-$prj.sh
+ echo -e "" >> $wdir/go-docker-$prj.sh
+ echo -e "N=\$(/usr/bin/nproc)" >> $wdir/go-docker-$prj.sh
+ echo -e "nl=\$(cat $wdir/go-docker-$prj.run | wc -l)" >> $wdir/go-docker-$prj.sh
+ echo -e "np=0" >> $wdir/go-docker-$prj.sh
+ echo -e "nr=0" >> $wdir/go-docker-$prj.sh
+ echo -e "while IFS= read -r line; do" >> $wdir/go-docker-$prj.sh
+ echo -e " eval \${line}" >> $wdir/go-docker-$prj.sh
+ echo -e " ((nr++))" >> $wdir/go-docker-$prj.sh
+ echo -e " np=\$(ps aux | grep corsika77402 | grep -v grep | wc -l)" >> $wdir/go-docker-$prj.sh
+ echo -e " echo \$np: \$nr/\$nl" >> $wdir/go-docker-$prj.sh
+ echo -e " while [ \$np -ge \$N ]; do" >> $wdir/go-docker-$prj.sh
+ echo -e " sleep 3;" >> $wdir/go-docker-$prj.sh
+ echo -e " np=\$(ps aux | grep corsika77402 | grep -v grep | wc -l)" >> $wdir/go-docker-$prj.sh
+ echo -e " done" >> $wdir/go-docker-$prj.sh
+ echo -e "done < $wdir/go-docker-$prj.run" >> $wdir/go-docker-$prj.sh
+ echo -e "mv $wdir/go-dockerslurm-$prj.sh $wdir/go-slurm-$prj.run" >> $wdir/go-slurm-$prj.sh
+ echo -e "chmod 644 $wdir/go-slurm-$prj.run" >> $wdir/go-slurm-$prj.sh
+ chmod 744 $wdir/go-docker-$prj.sh
+ eval $wdir/go-docker-$prj.sh
+fi
diff --git a/eas/rain.pl b/eas/rain.pl
index f0a0ad488d8eec294c15fe22d7ac733de25824a8..9f3ab950c492b98c39686f86379aceed5550e9f9 100755
--- a/eas/rain.pl
+++ b/eas/rain.pl
@@ -60,6 +60,7 @@ my $wdir = "x";
my $crk_ver = "77402";
my $heim = "QGSII";
my $debug = 0;
+my $docker = 0;
my $help = 0;
my $slurm = 0;
my $highsec = 0;
@@ -169,7 +170,7 @@ while ($_ = $ARGV[0]) {
$help++;
}
if (/-d$/i) {
- $debug++;
+ $docker++;
}
if (/-mu$/i) {
$imuaddi=1;
@@ -210,30 +211,31 @@ $package = $package . "_thin" if ($ithin != 0);
my $usage="
$0 $VERSION\n
Usage: $0 options\n
- -b Activates batch mode
- -i Disable PLOTSH and PLOTSH2 modes (usual simms production)
- -d Debug mode: only shows what it should do. Don't start simulation
-r <working directory> Specify where corsika bin files are located
-v <version> Corsika version number
-h <high energy interaction model> High energy interaction model used for compilation of CORSIKA (EPOS|QGSII|SIBYLL)
-f <low energy interaction model> Low energy interaction model used for compilation of CORSIKA (gheisha|fluka)
- -l Enables SLURM cluster compatibility (with sbatch).
+ -s <site> Choice site for simulation (some predefined sites: hess|sac|etn|ber|bga|lim|glr|mch|mge|and|mpc|cha|cid|mor|ccs|lsc|mbo)
+ -a <high energy ecuts (GeV)> Enables and set high energy cuts for ECUTS
+ -m <energy> Defines energy (in GeV) for monoenergetic showers (CHERENKOV)
+ -q <theta> Defines zenith angle (in degs) for fixed angle showers (CHERENKOV)
+ -p <prmpar> Defines primary particle (see table 4 pg 87) (CHERENKOV)
-t <EFRCTHN> <WMAX> <RMAX> Enables THIN Mode (see manual for pg 62 for values)
-th <THINRAT> <WEITRAT> If THIN Mode, select different thining levels for Hadronic (THINH) ...
-te <THINRAT> <WEITRAT> ... and electromagnetic particles (THINEM)
- -a <high energy ecuts (GeV)> Enables and set high energy cuts for ECUTS
+ -b Activates batch mode
+ -i Disable PLOTSH and PLOTSH2 modes (usual simms production)
+ -l Enables SLURM cluster compatibility (with sbatch).
+ -d Enables DOCKER mode (oneclient should be running)
-z Enables CHERENKOV mode
-mu Enables additional information from muons and EM particles
-g Enables GRID mode
- -s <site> Choice site for simulation (some predefined sites: hess|sac|etn|ber|bga|lim|glr|mch|mge|and|mpc|cha|cid|mor|ccs|lsc|mbo)
- -m <energy> Defines energy (in GeV) for monoenergetic showers (CHERENKOV)
- -q <theta> Defines zenith angle (in degs) for fixed angle showers (CHERENKOV)
- -p <prmpar> Defines primary particle (see table 4 pg 87) (CHERENKOV)
\n";
die "$usage\n" if ($help != 0);
print STDERR "\nWARNING! You are running in DEBUG mode. I'll only show what I should do\n\n" if ($debug != 0);
print STDERR "\nWARNING! CHERENKOV mode is enabled.\n\n" if ($cherenkov != 0);
+print STDERR "\nWARNING! DOCKER mode is enabled.\n\n" if ($docker != 0);
print STDERR "\nWARNING! Site selected for simulation: $site.\n\n" unless ($site eq "");
if ($runmode != 0) {
@@ -577,7 +579,6 @@ EXIT
my $binout = sprintf("$direct/DAT%06d",$run_nr);
my $out = "$direct/DAT$name.lst";
my $script = "$home/run-$prj-$name.sh";
- my $oneout = "$onedataBase/S3_${prj}_${site}_${lemodel}";
unless ($debug != 0) {
opendir(IMD, "$direct/") or system("mkdir $direct/");
closedir(IMD);
@@ -595,11 +596,14 @@ EXIT
print $fh "echo \"compressing output files...\"\n";
print $fh "bzip2 -9v $binout\n";
print $fh "bzip2 -9v $out\n";
- print $fh "echo \"tranferring to onedata...\"\n";
- print $fh "while ! cp -v $binout.bz2 $oneout; do sleep 5; done\n";
- print $fh "while ! cp -v $file $oneout; do sleep 5; done\n";
- print $fh "while ! cp -v $out.bz2 $oneout; do sleep 5; done\n";
- print $fh "rm $binout.bz2 $file $out.bz2\n";
+ if ($docker != 0) {
+ my $oneout = "$onedataBase/S3_${prj}_${site}_${lemodel}";
+ print $fh "echo \"tranferring to onedata...\"\n";
+ print $fh "while ! cp -v $binout.bz2 $oneout; do sleep 5; done\n";
+ print $fh "while ! cp -v $file $oneout; do sleep 5; done\n";
+ print $fh "while ! cp -v $out.bz2 $oneout; do sleep 5; done\n";
+ print $fh "rm $binout.bz2 $file $out.bz2\n";
+ }
print $fh "rm $script\n";
close($fh);
system("chmod 777 $script");
@@ -613,7 +617,7 @@ EXIT
print "# $getjson\n";
if ($slurm != 0) {
print "###################################################################\n";
- $cmd="sbatch -p debug -o ${name}_srun_%j.log ${script}";
+ $cmd="sbatch -p cpu36c -o ${name}_srun_%j.log ${script}";
}
else {
print "# in screen $name\n";
@@ -628,8 +632,3 @@ EXIT
}
}
}
-unless ($grid != 0) {
- print "###################################################################\n";
- print "# BYE BYE\n";
- print "###################################################################\n";
-}