Changeset 8626 for trunk/MagicSoft/Mars/scripts/dospectrum
- Timestamp:
- 06/29/07 15:33:20 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/MagicSoft/Mars/scripts/dospectrum ¶
r8482 r8626 1 1 #!/bin/sh 2 # 2 # 3 3 # ======================================================================== 4 4 # … … 18 18 # 19 19 # 20 # Author(s): Daniela Dorner 0 5/2006<mailto:dorner@astro.uni-wuerzburg.de>21 # 22 # Copyright: MAGIC Software Development, 2000-200 620 # Author(s): Daniela Dorner 06/2007 <mailto:dorner@astro.uni-wuerzburg.de> 21 # 22 # Copyright: MAGIC Software Development, 2000-2007 23 23 # 24 24 # 25 25 # ======================================================================== 26 26 # 27 #28 #29 27 ############################################################################## 30 28 # 31 # This script creates the ganymed.rc files with different parameter sets (the32 # parameters 1 and 3 are changed in steps). Then the script runs ganymed and33 # sponde for this different parameter sets.34 # 35 # variables, that have to be set by the user:36 # 37 # - path directory, where the files are stored38 # - mars directory, where your Mars version is stored39 # - dataset dataset file, which shall be used (filename without path)40 # the file has to be stored in the dataset directory in the41 # path42 # - par*step step width for changing the parameter *43 # - par*numminus number of steps going to smaller values of the parameter *44 # - par*num number of steps for changing the parameter *45 # - spondenum number of sponde rc file (also of the root and log file)46 # - ganymednum number of ganymed root file47 # 48 # Please make sure, that you provide the following files:49 # - $path/setup/ganymed$ganymednum.rc50 # - $path/setup/sponde$spondenum.rc51 # - $path/datasets/mcdataset-for-sponde.txt (if you use the script preparemc,52 # this file is produced automatically)53 # - $path/datasets/$datasetfilename (you give the datasetfilename below, but54 # you have to make sure, that it is in the directory $path/datasets55 # 56 # To re-run ganymed (e.g. with new Software-Version), you have to delete57 # the ganymed*.root files or set a new ganymednum.58 # 29 # This script is: 30 # - writing rc-files with different sets of cuts 31 # the set of cuts can be steered with the variables 32 # $par3step, $par3numminus, $par3num and 33 # $par1step, $par1numminus, $par1num 34 # par*step step width for changing the parameter * 35 # (suggested value: 0.005) 36 # par*numminus number of steps going to smaller values of the parameter * 37 # (starting value in your ganymed.rc file) 38 # par*num number of steps for changing the parameter * 39 # par3: Cut1.Param3 from the ganymed.rc file 40 # par1: Cut1.Param1 from the ganymed.rc file 41 # - writing a condor dag file for spectrum study 42 # With submitting this dag file with condor_submit_dag to condor from your 43 # Mars directroy you are running ganymed and sponde for all different rc 44 # files. The condor dag man is taking care of the order of the jobs, 45 # i.e. that sponde is started just when ganymed has been finished. 46 # 47 # To start several spondes please set the arrays $spondes. 48 # It is also possible to start new spondes without rerunning 49 # ganymed and/or the other spondes. To do so, please set the 50 # variables $doganymed and $spondedones accordingly 51 # 52 # Remark: You have to submit the condor dag file from your Mars directory. 53 # 54 # For more detailed information read the comments directly before 55 # each variable. 56 # 59 57 ############################################################################## 60 61 62 # to be set by the user 63 path=/home/dorner/crabspectrum 64 mars=/home/dorner/mars.cvs 65 datasetfilename=datasetcrab2005-2.txt 66 spondenum=0 67 ganymednum=1 68 # settings for parameter 3 58 # 59 60 # 61 # instructions and setup of the script 62 # please set the variables according to your analysis 63 # 64 65 # path for you analysis 66 path=/home/dorner/final_analysis 67 # path where your condor dagfile is stored and where you need 68 # the files processds.submit and processsponde.submit 69 condorpath=$path/condor 70 # path to store your resourcefiles 71 # you should have there the ganymed.rc, which you want to use 72 # and your sponde.rc files 73 rcpath=$path/resources 74 ganymedrc=$rcpath/ganymed_onoff.rc 75 # outpath for your spectrum results 76 # a directory for each set of cuts will be created there and 77 # the ganymed and sponde output will be stored in these directories 78 specpath=/results/spectrumSet2 79 # name of your dataset 80 # it has to be stored as dataset$dataset.txt in the directory 81 # $path/datasets 82 dataset="20060002" 83 # this is the name of the condor-dag file, which you have to submit 84 # with condor_submit_dag from your Mars directory 85 dagfile=$condorpath/set2spectrum.dag3 86 # here you define whether ganymed still has to be done 87 # if yes, set the variable $doganymed to "yes" 88 #doganymed="yes" 89 doganymed="no" 90 # sponde.rc files have to be in the directory $rcpath 91 # they need to have the naming sponde1.rc, sponde2.rc, sponde3.rc 92 # (numbers in the following array) 93 # the sponde.root files will be named in the same way (sponde(num).root) 94 spondes=( 1 2 ) 95 # in this array you define whether the sponde is already done 96 spondedones=( "done" "" ) 97 98 # this is the mc dataset, which has been created with the script 99 # preparemc 100 mcdataset=$path/mc/mcdataset2.txt 101 102 # values for par3 69 103 par3step=0.005 70 104 par3numminus=10 71 105 par3num=13 72 # settings for parameter1106 # values for par1 73 107 par1step=0.005 74 108 par1numminus=1 75 par1num=7 76 77 78 function printsetup() 79 { 80 echo "you set the following parameters: " 81 echo " path: $path " 82 echo " ganymedrc: $ganymedrc" 83 echo " sponderc: $sponderc" 84 echo " dataset: $dataset" 85 echo " mcdataset: $mcdataset" 86 echo " spondenum: $spondenum" 87 echo " ganymednum: $ganymednum" 88 echo " par1: -$par1numminus to $par1num in $par1step steps" 89 echo " par3: -$par3numminus to $par3num in $par3step steps" 90 } 91 92 #general variables 93 datasetpath=$path/datasets 94 setuppath=$path/setup 95 #resultpath=$path/ganyspec 96 resultpath=$path/ganyspec`echo $datasetfilename | sed -e 's/[.]txt//'` 97 dataset=$datasetpath/$datasetfilename 98 mcdataset=$datasetpath/mcdataset-for-sponde.txt 99 ganymedrc=$setuppath/ganymed$ganymednum.rc 100 sponderc=$setuppath/sponde$spondenum.rc 101 setuplog=$setuppath/setup`date +%F-%H-%M-%S`.log 102 103 if ! ls $ganymedrc >/dev/null 2>&1 104 then 105 echo "couldn't find $ganymedrc." 106 echo "please provide the file $ganymedrc and re-run the script" 107 exit 108 fi 109 110 if ! ls $sponderc >/dev/null 2>&1 111 then 112 echo "couldn't find $sponderc." 113 echo "do you want to continue anyhow? (ganymed will be done)" 114 echo "please insert y, if you want continue" 115 echo " n, if you want quit" 116 117 answer=`head -n 1` 118 case $answer in 119 y) echo "continue creating rc files and running ganymed" 120 ;; 121 n) echo "please provide the file $ganymedrc and re-run the script" 122 exit 123 ;; 124 *) echo "your answer is not clear -> exit" 125 exit 126 ;; 127 esac 128 129 fi 130 131 #start of the script 132 printsetup 133 printsetup > $setuplog 134 135 mkdir -pv $resultpath 136 137 echo "generating the ganymed.rc files with different parameter sets" 138 # generating the ganymed.rc files with different parameter sets 109 par1num=7 110 111 # 112 # end of setup 113 # beginning of script 114 # 115 116 # some checks 117 # checking if the given files and paths are existing 118 if ! [ -e $mcdataset ] 119 then 120 echo "Your mc dataset file $mcdataset does not exist." 121 exit 122 fi 123 if ! [ -e $path$specpath ] 124 then 125 echo "Your output path $path$specpath does not exist." 126 exit 127 fi 128 if ! [ -e $path/datasets/dataset$dataset.txt ] 129 then 130 echo "Your dataset file $path/datasets/dataset$dataset.txt does not exist." 131 exit 132 fi 133 if ! [ -e $ganymedrc ] 134 then 135 echo "Your ganymed rc file $ganymedrc does not exist." 136 exit 137 fi 138 for (( l=0 ; l < ${#spondes[@]} ; l++ )) 139 do 140 if ! [ -e $rcpath/sponde${spondes[$l]}.rc ] 141 then 142 echo "Your sponde rc file $rcpath/sponde${spondes[$l]}.rc does not exist." 143 exit 144 fi 145 done 146 147 # get the parameters 139 148 par3=`cat $ganymedrc | grep 'Cut1.Param3' | cut -d: -f2` 140 149 par1=`cat $ganymedrc | grep 'Cut1.Param1' | cut -d: -f2` 141 142 echo "parameter: 3 $par3 , 1 $par1" 143 150 echo "parameters: " 151 echo " par3= $par3" 152 echo " par1= $par1" 153 echo "" 154 155 # calculate the parameters with which you start 144 156 start3=`echo $par3 - \( $par3numminus*$par3step \) | bc ` 145 157 start1=`echo $par1 - \( $par1numminus*$par1step \) | bc ` 146 echo "start: 1: $start1 3: $start3" 147 158 echo "start: " 159 echo " par1: $start1 " 160 echo " par3: $start3" 161 echo "" 162 163 164 # function to print the lines for ganymed to the dag file 165 function printganydagentry() 166 { 167 if [ "$doganymed" = "yes" ] 168 then 169 echo "JOB gany$name $condorpath/processds.submit" 170 else 171 echo "JOB gany$name $condorpath/processds.submit DONE" 172 fi 173 echo "VARS gany$name path=\"$path\"" 174 echo "VARS gany$name out=\"$dir\"" 175 echo "VARS gany$name ds=\"$dataset\"" 176 echo "VARS gany$name num=\"$dataset\"" 177 echo "VARS gany$name rc=\"$rcfile\"" 178 echo "" 179 } 180 181 # function to print the lines for sponde to the dag file 182 function printspecdagentry() 183 { 184 sponderc=$rcpath/sponde$1.rc 185 if [ "$2" = "done" ] 186 then 187 echo "JOB spec$1_$name $condorpath/processsponde.submit DONE" 188 else 189 echo "JOB spec$1_$name $condorpath/processsponde.submit" 190 fi 191 echo "VARS spec$1_$name path=\"/home/dorner/final_analysis\"" 192 echo "VARS spec$1_$name out=\"$outpath\"" 193 echo "VARS spec$1_$name rc=\"$sponderc\"" 194 echo "VARS spec$1_$name spondenum=\"$1\"" 195 echo "VARS spec$1_$name mcds=\"$mcdataset\"" 196 echo "VARS spec$1_$name num=\"$dataset\"" 197 echo "" 198 echo "PARENT gany$name CHILD spec$1_$name " 199 echo "" 200 } 201 202 echo "writing dag file $dagfile for dataset $dataset" 203 echo "# dag file for dataset $dataset" > $dagfile 204 echo "" >> $dagfile 148 205 val1=$start1 149 206 val3=$start3 150 207 count=0 151 208 for (( i=0 ; i < $par3num ; i++ )) 152 209 do 153 210 for (( j=0 ; j < $par1num ; j++ )) 154 211 do 155 # echo "i: $i - j: $j ------- par1: $val1 and par3: $val3" 156 dir=$resultpath/set${val1}_${val3} 157 if ! ls $dir >/dev/null 2>&1 212 name=${val1}_${val3} 213 dir=$specpath/ganyspec$name 214 outpath=$path$dir 215 rcfile=$outpath/ganymed_${name}_onoff.rc 216 if ! [ -d $outpath ] 158 217 then 159 mkdir - pv $dir218 mkdir -v $outpath 160 219 fi 161 # rcfile=$dir/ganymed_${val1}_${val3}_onoff.rc 162 rcfile=$dir/`basename $ganymedrc` 163 if ! ls $rcfile >/dev/null 2>&1 164 then 165 cat $ganymedrc | sed -e s/"${par1}"/" ${val1}"/ -e s/"${par3}"/" ${val3}"/ > $rcfile 166 else 167 echo "rcfile $rcfile already exists" 168 fi 220 cat $ganymedrc | sed -e s/"${par1}"/" ${val1}"/ -e s/"${par3}"/" ${val3}"/ > $rcfile 169 221 val1=`echo $val1 + $par1step | bc` 222 echo " writing dag entry for set of cuts par1: $val1, par3: $val3" 223 echo "# ganymed and sponde for dataset $dataset with cuts $name" >> $dagfile 224 echo "" >> $dagfile 225 printganydagentry >> $dagfile 226 for (( k=0 ; k < ${#spondes[@]} ; k++ )) 227 do 228 printspecdagentry ${spondes[$k]} ${spondedones[$k]} >> $dagfile 229 done 230 echo "" >> $dagfile 231 count=`echo $count + 1 | bc` 170 232 done 171 233 val3=`echo $val3 + $par3step | bc` … … 173 235 done 174 236 175 176 # running ganymed and sponde for different parameter sets 177 178 # function running ganymed and sponde for a set of cuts 179 function dospec() 180 { 181 cd $mars 182 183 name=$set/ganymed`printf %08d $ganymednum` 184 ganymedfile=$name.root 185 if ! ls $ganymedfile >/dev/null 2>&1 186 then 187 cd $mars 188 # rc=`ls $set/ganymed_*onoff.rc` 189 ganymedlog=$name.log 190 echo "starting ganymed for set $set ..." 191 if ! condor_run ./ganymed -b -f --n=$ganymednum --log=$ganymedlog --out=$set --config=$set/`basename $ganymedrc` $dataset >/dev/null 192 then 193 echo "condor is not working " 194 return 195 fi 196 else 197 echo "ganymed for set $set already done => continue with sponde" 198 fi 199 200 if ! ls $sponderc >/dev/null 2>&1 201 then 202 echo "ERROR: spondercfile $sponderc is missing" 203 return 204 fi 205 spondefile=$set/sponde$spondenum-g$ganymednum.root 206 spondelog=$set/sponde$spondenum-g$ganymednum.log 207 if ! ls $spondefile >/dev/null 2>&1 208 then 209 echo "starting sponde for set $set ..." 210 if ! condor_run ./sponde -b -f --log=$spondelog --config=$sponderc -f $ganymedfile $mcdataset $spondefile >/dev/null 211 then 212 echo "condor is not working " 213 return 214 fi 215 echo "finished sponde for set $set ..." 216 else 217 echo "sponde $spondenum for set $set already done => please remove sponde files or give new spondenum" 218 fi 219 } 220 221 222 sets=`find $resultpath -type d` 223 for set in ${sets[@]} 224 do 225 # echo "set: "$set 226 if [ "$set" == "$resultpath" ] 227 then 228 continue 229 fi 230 dospec & 231 sleep 3 232 done 233 234 237 echo "" 238 echo "finished writing condor dag file "$dagfile 239 echo "in total $count different sets of cuts are used" 240 echo "" 241 echo "you can submit it now with \"condor_submit_dag -f $dagfile\" from your Mars directory" 242 echo "" 243
Note:
See TracChangeset
for help on using the changeset viewer.