1 |
#!/bin/bash
|
2 |
# This script submitts all jobs to naf, which are defined in dataset
|
3 |
|
4 |
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 |
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/GJets_V01/
|
9 |
# 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 |
# srm://dcache-se-cms.desy.de:8443/srm/managerv2?SFN=/pnfs/desy.de/cms/tier2/store/user/jschulz/nTuples/GVJets_V01/
|
13 |
)
|
14 |
# settings
|
15 |
version="14"
|
16 |
outputFolder=/scratch/hh/dust/naf/cms/user/kiesel
|
17 |
files_per_job=20
|
18 |
|
19 |
fetchScript=getOutput_${version}.sh
|
20 |
echo "#!/bin/bash -e" > $fetchScript
|
21 |
chmod +x $fetchScript
|
22 |
|
23 |
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 |
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 |
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 |
outputFileName=$outputFolder/${jobPrefix}_tree.root
|
50 |
|
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 |
echo make >> $script
|
61 |
|
62 |
echo ./executable $outputFileName $files_to_submit >> $script
|
63 |
chmod +x $script
|
64 |
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 |
done # all jobs
|
68 |
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 |
done #dataset
|