1 |
kiesel |
1.1 |
#!/bin/bash
|
2 |
|
|
# This script submitts all jobs to naf, which are defined in dataset
|
3 |
|
|
|
4 |
kiesel |
1.2 |
datasets=(
|
5 |
|
|
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/QCD_250-500_V01/
|
6 |
|
|
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/QCD_500-1000_V01/
|
7 |
|
|
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/QCD_1000-inf_V01/
|
8 |
kiesel |
1.6 |
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/GJets_V01/
|
9 |
kiesel |
1.7 |
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/WJets_V01/
|
10 |
|
|
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/TTJets_V01/
|
11 |
|
|
srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/DY_to_ee/
|
12 |
kiesel |
1.2 |
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/GVJets_V01/
|
13 |
|
|
)
|
14 |
kiesel |
1.1 |
# settings
|
15 |
kiesel |
1.7 |
version="14"
|
16 |
kiesel |
1.6 |
outputFolder=/scratch/hh/dust/naf/cms/user/kiesel
|
17 |
kiesel |
1.1 |
files_per_job=20
|
18 |
|
|
|
19 |
kiesel |
1.6 |
fetchScript=getOutput_${version}.sh
|
20 |
|
|
echo "#!/bin/bash -e" > $fetchScript
|
21 |
|
|
chmod +x $fetchScript
|
22 |
|
|
|
23 |
kiesel |
1.1 |
for dataset in "${datasets[@]}"; do
|
24 |
|
|
|
25 |
|
|
# get folder name as best description for job
|
26 |
|
|
job_name=$(echo $dataset|rev|cut -d'/' -f2|rev)
|
27 |
|
|
# Since root can't handle -, it will be substituted to _
|
28 |
|
|
job_name=$(echo $job_name|sed 's/-/_/g')
|
29 |
|
|
|
30 |
kiesel |
1.2 |
files=( $(srmls -offset 0 -count 999 $dataset|grep root|awk '{print $2 }') )
|
31 |
|
|
# Ugly hack to get more than 1000 files (up to 2000).
|
32 |
|
|
files+=( $(srmls -offset 1000 -count 1999 $dataset|grep root|awk '{print $2 }') )
|
33 |
kiesel |
1.1 |
number_of_jobs=$(expr ${#files[@]} / $files_per_job + 1 )
|
34 |
|
|
|
35 |
|
|
# just for testing purpurse
|
36 |
|
|
#TMPDIR=/tmp
|
37 |
|
|
|
38 |
|
|
|
39 |
|
|
for (( job=1; job<=$number_of_jobs; job++ )); do
|
40 |
|
|
|
41 |
|
|
jobPrefix=${job_name}.${version}__${job}
|
42 |
|
|
|
43 |
|
|
files_to_submit=""
|
44 |
|
|
for (( i=$(expr $job \* $files_per_job - $files_per_job ); i<$(expr $job \* $files_per_job ); i++ )); do
|
45 |
|
|
if [[ "${files[$i]}" != "" ]]; then
|
46 |
|
|
files_to_submit=$files_to_submit"dcap://dcache-cms-dcap.desy.de"${files[$i]}" "
|
47 |
|
|
fi
|
48 |
|
|
done # files for one job
|
49 |
kiesel |
1.6 |
outputFileName=$outputFolder/${jobPrefix}_tree.root
|
50 |
kiesel |
1.1 |
|
51 |
|
|
# now that we have all information, get data
|
52 |
|
|
script=$jobPrefix.sh
|
53 |
|
|
|
54 |
|
|
echo export SCRAM_ARCH="slc5_amd64_gcc462" > $script
|
55 |
|
|
echo export VO_CMS_SW_DIR=/cvmfs/cms.cern.ch >> $script
|
56 |
|
|
echo source $VO_CMS_SW_DIR/cmsset_default.sh >> $script
|
57 |
|
|
echo cd $HOME/CMSSW_5_3_8/src >> $script
|
58 |
|
|
echo cmsenv >> $script
|
59 |
|
|
echo cd $HOME/treeWriter >> $script
|
60 |
kiesel |
1.6 |
echo make >> $script
|
61 |
kiesel |
1.1 |
|
62 |
|
|
echo ./executable $outputFileName $files_to_submit >> $script
|
63 |
|
|
chmod +x $script
|
64 |
kiesel |
1.6 |
qsub -b y -j y -l h_cpu=7:00:00 -l site=hh `pwd`/$jobPrefix.sh
|
65 |
|
|
# i: merge stdout and stderr
|
66 |
|
|
# o: log file
|
67 |
kiesel |
1.1 |
done # all jobs
|
68 |
kiesel |
1.6 |
echo "rm ${job_name}.${version}__*.sh" >> $fetchScript
|
69 |
|
|
echo "rm ~/${job_name}.${version}__*.sh.o*" >> $fetchScript
|
70 |
|
|
echo "hadd $outputFolder/${job_name}.${version}_tree.root $outputFolder/${job_name}.${version}__*.root" >> $fetchScript
|
71 |
|
|
echo "rm $outputFolder/${job_name}.${version}__*.root" >> $fetchScript
|
72 |
kiesel |
1.1 |
done #dataset
|