Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion GridUtils/sdcc/bkgjobs/bkg_job.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ export n_evt_per_job=200
export builddir="/direct/lbne+u/${USER}/FPFSim/build"
export fpfsim="${builddir}/FPFSim"
export setup="${builddir}/../sdcc_setup.sh"
export libdict="${builddir}/libFPFClasses_rdict.pcm"

# Generator options
export twindow="200 us"
Expand Down
26 changes: 26 additions & 0 deletions GridUtils/sdcc/nujobs/batch_nu_script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

cluster=$1
process=$2
fpfsim=$3
macrolist=$4
setup=$5

echo "Executing JOBID ${cluster}.${process}"

# source the environment
source $setup

# select the macro file
let num=$((${process}+1))
echo "Selecting macro from line ${num} in list:"

macropath=$(tail -n+${num} ${macrolist} | head -n1)
macro=`basename "$macropath"`
echo "$macro"

# running !!
echo "Running ${fpfsim} ${macropath}"
${fpfsim} ${macropath}

echo "Completed JOBID ${cluster}.${process}"
23 changes: 23 additions & 0 deletions GridUtils/sdcc/nujobs/merge_outputs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash

export prodname=$1

export dir="/gpfs01/lbne/users/fpf/${USER}/CONDOR_OUTPUT/${prodname}/${prodname}_*.root"
export out="/gpfs01/lbne/users/fpf/${USER}/CONDOR_OUTPUT/${prodname}/${prodname}.root"
list=""

for f in $(ls ${dir});
do
#echo $f
list+=" ${f}"
done

#echo $list
echo "Merging into ${out}"

if test -f "$out"; then
echo "$out exists. Removing old file"
rm $out
fi

hadd ${out} ${list}
170 changes: 170 additions & 0 deletions GridUtils/sdcc/nujobs/nu_job.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
#!/bin/bash

###-----------------------------------------
### DEFINITION OF PRODUCTION PARAMETERS
###----------------------------------------

# Production name for output directories
# This is used to place output logs and files
export prodname="test_nu_campaign"

# Define how many jobs, how many files
# Jobs will be placed in the same cluster
export n_jobs=10
export n_evt_per_job=200

# Paths to FPFsim build directory
export builddir="/direct/lbne+u/${USER}/FPFSim/build"
export fpfsim="${builddir}/FPFSim"
export setup="${builddir}/../sdcc_setup.sh"

# Path to geometry macro
export geometry="${builddir}/macros/geometry_options/FPF_hall_Option1a_FORMOSAlast_BabyMIND.mac"

# Path to genie gst file on GPFS
export geniegst="/gpfs01/lbne/users/fpf/${USER}/numu_kling_ar40_e5000.gst.root"

# Path to log/output directory
export outdir="/gpfs01/lbne/users/fpf/$USER/CONDOR_OUTPUT"
export logdir="/gpfs01/lbne/users/fpf/$USER/CONDOR_LOGS"

###------------------------------------------------------------------
###------------------------------------------------------------------

function generate_macros {

list=$1

# for each job
for i in $(seq 0 $((${n_jobs}-1)))
do

# setup different seeds per jobs
seed1=$((42+i))
seed2=$((47+i))

# select the start entry for the gst file
istart=$((n_evt_per_job*i))

# select name for output file
outputfile="${prodname}_${i}.root"

# final macro path
macfile="${logdir}/${prodname}/mac/${prodname}_${i}.mac"
if [ -f ${macfile} ]; then
echo "${macfile} exists, delete file first"
rm ${macfile}
fi

# add macro path to list
echo $macfile >> $list
rm temp.mac
cat << EOF >> temp.mac
/control/execute ${geometry}

/random/setSeeds ${seed1} ${seed2}
/run/initialize

/gen/select genie
/gen/genie/genieInput ${geniegst}
/gen/genie/genieIStart ${istart}

/out/flare/save3DEvd false
/out/flare/save2DEvd false
/out/flare/addDiffusion false
/out/fileName ${outputfile}

/run/beamOn ${n_evt_per_job}
EOF

# move the macro to final destination
cp temp.mac ${macfile}
done

}

###------------------------------------------------------------------
###------------------------------------------------------------------

function generate_submission_file {

sub=$1; shift
listpath=$1; shift

cat << EOF >> ${sub}
universe = vanilla
notification = never
executable = batch_nu_script.sh
arguments = \$(ClusterId) \$(ProcId) ${fpfsim} ${listpath} ${setup}
initialdir = ${outdir}/${prodname}
output = ${logdir}/${prodname}/out/\$(ClusterId).\$(ProcId).out
error = ${logdir}/${prodname}/err/\$(ClusterId).\$(ProcId).err
log = ${logdir}/${prodname}/log/\$(ClusterId).\$(ProcId).log
getenv = True
request_memory = 8000
queue ${n_jobs}
EOF

}

###------------------------------------------------------------------
###------------------------------------------------------------------

# create log directories
echo "Creating log directories for: '$prodname'"
mkdir -p ${logdir}/${prodname}/out
mkdir -p ${logdir}/${prodname}/err
mkdir -p ${logdir}/${prodname}/log
mkdir -p ${logdir}/${prodname}/mac

# check if production with the same name already exists
if [ -d "${outdir}/${prodname}" ] && [ "$(ls -A ${outdir}/${prodname})" ]; then
echo "WARNING: ${outdir}/${prodname} is not empty!"
echo "Outputs for production ${prodname} already exist, delete them first"
echo "or change the name for this production!"
exit 1
else
mkdir -p ${outdir}/${prodname}
if [ -d "${logdir}/${prodname}/out/" ] && [ "$(ls -A ${logdir}/${prodname}/out/)" ];
then rm ${logdir}/${prodname}/out/*; fi
if [ -d "${logdir}/${prodname}/err/" ] && [ "$(ls -A ${logdir}/${prodname}/err/)" ];
then rm ${logdir}/${prodname}/err/*; fi
if [ -d "${logdir}/${prodname}/log/" ] && [ "$(ls -A ${logdir}/${prodname}/log/)" ];
then rm ${logdir}/${prodname}/log/*; fi
if [ -d "${logdir}/${prodname}/mac/" ] && [ "$(ls -A ${logdir}/${prodname}/mac/)" ];
then rm ${logdir}/${prodname}/mac/*; fi
fi


# generate all macros for each job
# as well as a list of their paths
echo "Generating list of .mac files..."

macrolist="macrolist.txt"
if [ -f ${macrolist} ]; then
rm ${macrolist}
fi
touch $macrolist

generate_macros $macrolist

macropath="${logdir}/${prodname}/${macrolist}"
cp $macrolist ${macropath}

echo "Generating .sub file..."

subfile=${prodname}.sub
if [ -f ${subfile} ]; then
rm ${subfile}
fi
touch ${subfile}

generate_submission_file $subfile $macropath

echo "Bookeeping submission files..."

cp $subfile ${logdir}/${prodname}

condor_submit $subfile

rm ${macrolist} ${subfile} temp.mac
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ Older versions of FORESEE output events in the HepMC2 format. To run over HepMC2
|Command |Description |
|:--|:--|
|/out/fileName | option for AnalysisManagerMessenger, set name of the file saving all analysis variables|
|/out/saveTrack | if `true` save all tracks, `false` by default, requires `\tracking\storeTrajectory 1`|
|/out/saveAllParticles | if `true` save all particles in the event, `false` by default |
|/out/saveTrajectories | if `true` save full trajectories, `false` by default |
|/out/flare/enableOutput | if `true` save FLArE output, `true` by default |
|/out/flare/save3DEvd | if `true` save 3D spatial distribution of energy deposition, `false` by default |
|/out/flare/save2DEvd | if `true` save 2D spatial distribution of energy deposition, `false` by default |
Expand Down
Loading