source: tags/Mars-V1.1/scripts/dospectrum

Last change on this file was 8230, checked in by Daniela Dorner, 18 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 6.9 KB
Line 
1#!/bin/sh
2#
3# ========================================================================
4#
5# *
6# * This file is part of MARS, the MAGIC Analysis and Reconstruction
7# * Software. It is distributed to you in the hope that it can be a useful
8# * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
9# * It is distributed WITHOUT ANY WARRANTY.
10# *
11# * Permission to use, copy, modify and distribute this software and its
12# * documentation for any purpose is hereby granted without fee,
13# * provided that the above copyright notice appear in all copies and
14# * that both that copyright notice and this permission notice appear
15# * in supporting documentation. It is provided "as is" without express
16# * or implied warranty.
17# *
18#
19#
20# Author(s): Daniela Dorner 05/2006 <mailto:dorner@astro.uni-wuerzburg.de>
21#
22# Copyright: MAGIC Software Development, 2000-2006
23#
24#
25# ========================================================================
26#
27#
28#
29##############################################################################
30#
31# This script creates the ganymed.rc files with different parameter sets (the
32# parameters 1 and 3 are changed in steps). Then the script runs ganymed and
33# 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 stored
38# - mars directory, where your Mars version is stored
39# - dataset dataset file, which shall be used (filename without path)
40# the file has to be stored in the dataset directory in the
41# path
42# - 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 file
47#
48# Please make sure, that you provide the following files:
49# - $path/setup/ganymed$ganymednum.rc
50# - $path/setup/sponde$spondenum.rc
51# - $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, but
54# you have to make sure, that it is in the directory $path/datasets
55#
56# To re-run ganymed (e.g. with new Software-Version), you have to delete
57# the ganymed*.root files or set a new ganymednum.
58#
59##############################################################################
60
61
62# to be set by the user
63path=/home/dorner/crabspectrum
64mars=/home/dorner/mars.cvs
65datasetfilename=datasetcrab2005-2.txt
66spondenum=0
67ganymednum=1
68# settings for parameter 3
69par3step=0.005
70par3numminus=10
71par3num=13
72# settings for parameter 1
73par1step=0.005
74par1numminus=1
75par1num=7
76
77
78function 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
93datasetpath=$path/datasets
94setuppath=$path/setup
95#resultpath=$path/ganyspec
96resultpath=$path/ganyspec`echo $datasetfilename | sed -e 's/[.]txt//'`
97dataset=$datasetpath/$datasetfilename
98mcdataset=$datasetpath/mcdataset-for-sponde.txt
99ganymedrc=$setuppath/ganymed$ganymednum.rc
100sponderc=$setuppath/sponde$spondenum.rc
101setuplog=$setuppath/setup`date +%F-%H-%M-%S`.log
102
103if ! ls $ganymedrc >/dev/null 2>&1
104then
105 echo "couldn't find $ganymedrc."
106 echo "please provide the file $ganymedrc and re-run the script"
107 exit
108fi
109
110if ! ls $sponderc >/dev/null 2>&1
111then
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
129fi
130
131#start of the script
132printsetup
133printsetup > $setuplog
134
135mkdir -pv $resultpath
136
137echo "generating the ganymed.rc files with different parameter sets"
138# generating the ganymed.rc files with different parameter sets
139par3=`cat $ganymedrc | grep 'Cut1.Param3' | cut -d: -f2`
140par1=`cat $ganymedrc | grep 'Cut1.Param1' | cut -d: -f2`
141
142echo "parameter: 3 $par3 , 1 $par1"
143
144start3=`echo $par3 - \( $par3numminus*$par3step \) | bc `
145start1=`echo $par1 - \( $par1numminus*$par1step \) | bc `
146echo "start: 1: $start1 3: $start3"
147
148val1=$start1
149val3=$start3
150
151for (( i=0 ; i < $par3num ; i++ ))
152do
153 for (( j=0 ; j < $par1num ; j++ ))
154 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
158 then
159 mkdir -pv $dir
160 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
169 val1=`echo $val1 + $par1step | bc`
170 done
171 val3=`echo $val3 + $par3step | bc`
172 val1=$start1
173done
174
175
176# running ganymed and sponde for different parameter sets
177
178# function running ganymed and sponde for a set of cuts
179function 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
222sets=`find $resultpath -type d`
223for set in ${sets[@]}
224do
225# echo "set: "$set
226 if [ "$set" == "$resultpath" ]
227 then
228 continue
229 fi
230 dospec &
231 sleep 3
232done
233
234
Note: See TracBrowser for help on using the repository browser.