# END_MANUAL
runs=
+mcruns=
name=
-sys=1
-snn=900
-field=5
-corrs=corrections
+sys=0
+snn=0
+field=0
+corrs=
dotconf=.config
here=${PWD}
par=0
mc_pat=
my_real_dir=
my_mc_dir=
+uuopts=
+watch=0
# === Various functions ==============================================
# --- Usage ----------------------------------------------------------
Options:
-r,--runs=FILENAME Specify list of runs file ($runs)
+ -R,--mc-runs=FILENAME Specify list of MC runs file ($mcruns)
-n,--name=STRING Base name of jobs ($name)
-S,--sys=SYSTEM Collision system ($sys)
-E,--snn=ENERGY Center of mass energy per nuclean pair ($snn)
-P,--mc-pattern=PATTERN Glob pattern to match when searching ($mc_pat)
-s,--step=STEP Run stage ($step)
-w,--what=TRAINS What to do
+ -c,--corrections=DIR Directory where corrections are stored ($corrs)
-W,--watch Watch for job status and terminate automatically
-a,--par Use par files ($par)
+ -u,--url-opts=OPTIONS Additional user options ($uuopts)
-M,--man Show the manual
-N,--noact Show what will be done
# --- Manual ---------------------------------------------------------
manual()
{
+ prog=`basename $0`
grep ^# $0 | \
sed -n -e '/BEGIN_MANUAL/,/END_MANUAL/ p' | \
- sed -e '/\(BEGIN\|END\)_MANUAL/ d' -e 's/^# //' -e "s,\$0,$0,"
+ sed -e '/\(BEGIN\|END\)_MANUAL/ d' -e 's/^# //' \
+ -e "s,\$0,$prog,"
}
# === Utilities to execute scripts ===================================
local scr=$1
download
for i in *.zip ; do
+ if test "X$i" = "X*.zip" ; then continue ; fi
+ echo "Will extract $i"
d=`basename $i .zip`
if test ! -d $d ; then
mkdir -p $d
(cd $d && script $scr)
done
}
+dndeta_draw()
+{
+ local d=$1
+ (cd $d && \
+ draw ${fwd_dir}/DrawdNdetaSummary.C && \
+ draw ../Draw.C)
+}
# --- Get the grid home dir ------------------------------------------
outputs()
outputs
# Write settings to a file, which we later can source
+ dumpvar=
+ if test $par -gt 0 ; then dumpvar="--par " ; fi
+ if test $watch -gt 0 ; then dumpvar="${dumpvar} --watch " ; fi
cat > ${dotconf} <<EOF
+# Settings:
name="$name"
runs=${runs}
+mcruns=${mcruns}
sys=$sys
snn=$snn
field=$field
my_mc_dir=${my_mc_dir}
par=${par}
now=${now}
+watch=${watch}
+uuopts="${uuopts}"
+# Options
+if false ; then
+ $0 --what=setup --name="$name" --runs="$runs" --mcruns="$mcruns" \
+ --sys="$sys" --snn="$snn" --field="$field" \
+ --real-dir="${real_dir}" --real-pattern="${real_pat}" \
+ --mc-dir="${mc_dir}" --mc-pattern="${mc_pat}" \
+ --now=${now} --url-opts="${uuopts}" ${dumpvar}
+fi
EOF
-
- if test $noact -lt 1 ; then
+ corrdir=${name}_corrs_${now}
+ if test "x$corrs" != "x" && test -d ${corrs} ; then
+ echo "Linking ${corrs} to ${corrdir}"
+ ln -sf $corrs ${corrdir}
+ ln -sf $corrs last_${name}_corrs
+ corrdir=$corrs
+ elif test $noact -lt 1 ; then
mkdir -p ${name}_acc_${now}
- mkdir -p ${name}_corrs_${now}
+ mkdir -p ${corrdir}
rm -f last_${name}_acc last_${name}_corrs
ln -sf ${name}_acc_${now} last_${name}_acc
ln -sf ${name}_corrs_${now} last_${name}_corrs
- cat <<-EOF > ${name}_corrs_${now}/Browse.C
+ cat <<-EOF > ${corrdir}/Browse.C
TObject* Browse()
{
const char* fwd = "$ALICE_ROOT/PWGLF/FORWARD/analysis2";
return db;
}
EOF
- fi
- echo "Make acceptance corrections"
- (cd ${name}_acc_${now} && \
- accGen $run_for_acc && \
- upload )
+ echo "Make acceptance corrections"
+ (cd ${name}_acc_${now} && \
+ accGen $run_for_acc && \
+ upload )
+ fi
+ for i in fmd_corrections.root spd_corrections.root deadstrips.C ; do
+ if test ! -f ${corrdir}/$i ; then continue ; fi
+ echo "Linking ${corrdir}/$i here"
+ ln -fs ${corrdir}/$i .
+ done
}
# --- Run set-ups ----------------------------------------------------
${name}_eloss_${now} \
${name}_mcaod_${now} \
${name}_aod_${now} \
- ${name}_mcdndeta_${now} \
- ${name}_dndeta_${now} \
- ${name}_corrs_${now}
+ ${name}_mcdndeta_*${now} \
+ ${name}_dndeta_*${now} \
+ ${name}_corrs_${now} \
+ last_${name}_acc \
+ last_${name}_corrs \
+ last_${name}_mceloss \
+ last_${name}_eloss \
+ last_${name}_mcaod \
+ last_${name}_aod \
+ last_${name}_mcdndeta* \
+ last_${name}_dndeta* \
+ build.log
+ if test -L fmd_corrections.root ; then
+ rm fmd_corrections.root
+ fi
+ if test -L spd_corrections.root ; then
+ rm spd_corrections.root
+ fi
+}
+
+# --- Check AliEn token ----------------------------------------------
+check_token()
+{
+ uid=`id -u`
+ genv_file=/tmp/gclient_env_${uid}
+
+ if test ! -f ${genv_file} ; then
+ echo "No such file: ${genv_file}, please do alien-token-init" \
+ >/dev/stderr
+ exit 1
+ fi
+ . ${genv_file}
+ alien-token-info | grep -q "Token is still valid"
+ if test $? -ne 0 ; then
+ echo "Token not valid, please re-new" > /dev/stderr
+ exit 1
+ fi
}
# --- Check settings -------------------------------------------------
check()
{
- if test "x$runs" = "x" || test ! -f $runs ; then
- echo "List of run file $runs not found" > /dev/stderr
- exit 1
- fi
- if test "X$name" = X ; then
- echo "No name specified" > /dev/stderr
- exit 1
- fi
- # if test "x$sys" = "x" ; then
- # echo "No collision system specified" > /dev/stderr
- # exit 1
- # fi
- # if test "x$snn" = "x" ; then
- # echo "No center of mass energy specified" > /dev/stderr
- # exit 1
- # fi
- # if test "x$field" = "x" ; then
- # echo "No L3 field setting specified" > /dev/stderr
- # exit 1
- # fi
- if test "x$real_dir" = "x" ; then
- echo "No real data directory specified" > /dev/stderr
- exit 1
- fi
- if test "x$mc_dir" = "x" ; then
- echo "No MC data directory specified" > /dev/stderr
- exit 1
- fi
- if test "x$real_pat" = "x" ; then
- echo "No real data pattern specified" > /dev/stderr
- exit 1
- fi
- if test "x$mc_pat" = "x" ; then
- echo "No MC data pattern specified" > /dev/stderr
- exit 1
- fi
- if test "X$1" != "Xsetup" && test x$now = x ; then
- echo "No date/time specified" > /dev/stderr
- exit 1
- fi
- # case $sys in
- # pp|p-p) sys=1 ;;
- # pbpb|pb-pb|aa|a-a) sys=2 ;;
- # ppb|p-pb|pa|p-a) sys=3 ;;
- # 1|2|3) ;;
- # *) echo "$0: Unknown system: $sys" ; exit 1 ;;
- # esac
-
- cat <<EOF
+ local w=$1
+ if test "x$runs" = "x" || test ! -f $runs ; then
+ echo "List of run file $runs not found" > /dev/stderr
+ exit 1
+ fi
+ if test "x$mcruns" = "x" ; then mcruns=$runs ; fi
+ if test ! -f $mcruns ; then
+ echo "List of MC runs file $mcruns not found" > /dev/stderr
+ exit 1
+ fi
+ if test "X$name" = X ; then
+ echo "No name specified" > /dev/stderr
+ exit 1
+ fi
+ # if test "x$sys" = "x" ; then
+ # echo "No collision system specified" > /dev/stderr
+ # exit 1
+ # fi
+ # if test "x$snn" = "x" ; then
+ # echo "No center of mass energy specified" > /dev/stderr
+ # exit 1
+ # fi
+ # if test "x$field" = "x" ; then
+ # echo "No L3 field setting specified" > /dev/stderr
+ # exit 1
+ # fi
+ if test "x$real_dir" = "x" ; then
+ echo "No real data directory specified" > /dev/stderr
+ exit 1
+ fi
+ if test "x$mc_dir" = "x" ; then
+ echo "No MC data directory specified" > /dev/stderr
+ exit 1
+ fi
+ if test "x$real_pat" = "x" ; then
+ echo "No real data pattern specified" > /dev/stderr
+ exit 1
+ fi
+ if test "x$mc_pat" = "x" ; then
+ echo "No MC data pattern specified" > /dev/stderr
+ exit 1
+ fi
+ if test "X$w" != "Xsetup" && test "x$now" = "x" ; then
+ echo "No date/time specified" > /dev/stderr
+ exit 1
+ fi
+ # sys==0 is OK - autoselect
+ case x$sys in
+ xpp|xp-p) sys=1 ;;
+ xpbpb|xpb-pb|xaa|xa-a) sys=2 ;;
+ xppb|xp-pb|xpa|xp-a) sys=3 ;;
+ x0|x1|x2|x3) ;;
+ x) sys=0 ;;
+ *) echo "$0: Unknown system: $sys" ; exit 1 ;;
+ esac
+
+ check_token
+}
+
+# --- Show the setup -------------------------------------------------
+print_setup()
+{
+ cat <<EOF
Name: $name
Run file: ${runs}
+MC Run file: ${mcruns}
Collision system: $sys
sqrt(s_NN): ${snn}GeV
L3 Field: ${field}kG
MC output directory: ${my_mc_dir}
Use PAR files: ${par}
Date & time: ${now}
-
+Additional URL options: ${uuopts}
EOF
}
allAboard()
{
type=$1 ; shift
+ trig=$1 ; shift
cl=
nme=${name}_${type}
tree=esdTree
opts="--batch"
- uopt="&merge=50&split=50"
+ uopt="&merge=50&split=50&aliroot=last,regular"
mc=0
dir=$real_dir
pat=$real_pat
+ rl=$runs
case $type in
mc*)
# Default dirs are production dirs
dir=$mc_dir
pat=$mc_pat
+ rl=$mcruns
;;
*) ;;
esac
*corr) cl=MakeMCCorrTrain ; mc=1 ;;
*eloss) cl=MakeFMDELossTrain ;;
*aod) cl=MakeAODTrain
- opts="${opts} --corr=. --cent"
+ opts="${opts} --corr=."
# opts="--corr=${name}_corrs_${now} --cent"
# if test $sys -gt 0 && test $snn -gt 0 ; then
# opts="$opts --sys=${sys} --snn=${snn} --field=${field}"
*dndeta) cl=MakedNdetaTrain
tree=aodTree
uopt="${uopt}&concat"
- opts="${opts} --cent"
+ opts="${opts} --cut-edges"
+ case x$trig in
+ xinel)
+ opts="$opts --scheme=trigger,event,background}"
+ opts="$opts --trig=INEL"
+ ;;
+ xnsd)
+ opts="$opts --scheme=trigger,event"
+ opts="$opts --trig=V0AND"
+ ;;
+ xinelgt0)
+ opts="$opts --scheme=trigger,event"
+ opts="$opts --trig=INELGT0"
+ ;;
+ x*) trig= ;;
+ esac
+ if test "x$trig" != "x" ; then
+ nme="${nme}_${trig}"
+ fi
# Modify for input dir for our files
dir=$my_real_dir
pat="*/AliAOD.root"
if test $mc -gt 0 ; then
dir=$my_mc_dir
+ opts="$opts --mc"
fi
;;
*) echo "$0: Unknown type of train: $type" > /dev/stderr ; exit 1 ;;
esac
+ # add centrality flag if we do not know what collision system we're
+ # looking at, or it's PbPb or pPb.
+ case $sys in
+ 0|2|3) opts="$opts --cent" ;;
+ 1) ;;
+ esac
if test $mc -gt 0; then
uopt="${uopt}&mc"
fi
if test $par -gt 0 ; then
uopt="${uopt}&par"
fi
- url="alien://${dir}?run=${runs}&pattern=${pat}${uopt}${aliroot}${root}#${tree}"
+ if test x$uuopts != x ; then
+ uopt="${uopt}&${uuopts}"
+ fi
+ url="alien://${dir}?run=${rl}&pattern=${pat}${uopt}${aliroot}${root}#${tree}"
opts="${opts} --include=$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains"
- opts="${opts} --date=${now} --class=$cl --name=$nme --verbose=2"
+ opts="${opts} --date=${now} --class=$cl --name=$nme --verbose=0"
echo "Running train: runTrain2 ${opts} --url=${url} $@"
if test $noact -gt 0 ; then return ; fi
# --- Run all correction jobs ----------------------------------------
corrs()
{
- allAboard mccorr $@
- allAboard mceloss $@
- allAboard eloss $@
+ allAboard mccorr "" $@
+ allAboard mceloss "" $@
+ allAboard eloss "" $@
}
corrs_terminate()
{
# --- Run all AOD jobs -----------------------------------------------
aods()
{
- allAboard mcaod $@
- allAboard aod $@
+ allAboard mcaod "" $@
+ allAboard aod "" $@
}
aods_terminate()
{
dndetas()
{
allAboard mcdndeta $@
- allAboard dndeta $@
+ if test $sys -eq 1 ; then
+ allAboard dndeta inel $@
+ allAboard dndeta nsd $@
+ allAboard dndeta inelgt0 $@
+ else
+ allAboard dndeta "" $@
+ fi
}
dndetas_terminate()
{
(cd ${name}_mcdndeta_${now} && terminate)
- (cd ${name}_dndeta_${now} && terminate)
+ if test $sys -eq 1 ; then
+ (cd ${name}_dndeta_inel_${now} && terminate)
+ (cd ${name}_dndeta_nsd_${now} && terminate)
+ (cd ${name}_dndeta_inelgt0_${now} && terminate)
+ else
+ (cd ${name}_dndeta_${now} && terminate)
+ fi
}
dndetas_upload()
{
}
dndetas_draw()
{
- (cd ${name}_mcdndeta_${now} && draw ${fwd_dir}/DrawdNdetaSummary.C && \
- draw ../Draw.C)
- (cd ${name}_dndeta_${now} && draw ${fwd_dir}/DrawdNdetaSummary.C && \
- draw ../Draw.C)
+ dndeta_draw ${name}_mcdndeta_${now}
+ if test $sys -eq 1 ; then
+ dndeta_draw ${name}_dndeta_inel_${now}
+ dndeta_draw ${name}_dndeta_nsd_${now}
+ dndeta_draw ${name}_dndeta_inelgt0_${now}
+ else
+ dndeta_draw ${name}_dndeta_${now}
+ fi
}
-# === Executable code
+# === Procedual code =================================================
# --- Source settings if found ---------------------------------------
if test -f $dotconf ; then
source $dotconf
# --- Process command line -------------------------------------------
what=
step=
-watch=1
while test $# -gt 0 ; do
arg=$1
opt=
case $arg in
-r|--runs) runs=$opt ;;
+ -R|--mc-runs) mcruns=$opt ;;
-n|--name) name=$opt ;;
-S|--sys) sys=`echo $opt | tr '[A-Z]' '[a-z]'` ;;
-E|--snn) snn=$opt ;;
-s|--step) step=`echo $opt | tr '[A-Z]' '[a-z]'` ;;
-W|--watch) let watch=\!$watch ;;
-N|--noact) noact=1 ;;
+ -c|--corrections) corrs=$opt ;;
-a|--par) par=1 ;;
+ -u|--url-opts) uuopts="$opt" ;;
-h|--help) usage ; exit 0 ;;
-H|--manual) manual ; exit 0 ;;
*) echo "$0: Unknown option $arg" ; exit 1 ;;
dndeta*) func=dndetas ;;
*) echo "$0: Unknown operation: $what" > /dev/stderr ; exit 1 ;;
esac
-
+print_setup
+
case x$step in
x|xfull) ;;
xterm*) func=${func}_terminate ;;