source: trunk/MagicSoft/Mars/scripts/dospectrum@ 8638

Last change on this file since 8638 was 8638, checked in by Daniela Dorner, 17 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 8.0 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 06/2007 <mailto:dorner@astro.uni-wuerzburg.de>
21#
22# Copyright: MAGIC Software Development, 2000-2007
23#
24#
25# ========================================================================
26#
27##############################################################################
28#
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 ganymed and/or
49# the other spondes. To do so, please set the variables $doganymed and
50# $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#
57##############################################################################
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
66path=/home/dorner/final_analysis
67# path where your condor dagfile is stored and where you need
68# the files processds.submit and processsponde.submit
69condorpath=$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
73rcpath=$path/resources
74ganymedrc=$rcpath/ganymed_wobble_set5_final.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
78specpath=$path/results/spectrumSet5
79# name of your dataset
80# it has to be stored as dataset$dataset.txt in the directory
81# $path/datasets
82dataset="20070001"
83# this is the name of the condor-dag file, which you have to submit
84# with condor_submit_dag from your Mars directory
85dagfile=$condorpath/spectrumSet5.dag
86# here you define whether ganymed still has to be done
87# if yes, set the variable $doganymed to "yes"
88#doganymed="yes"
89doganymed="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)
94spondes=( 1 2 3 4 12 13 14 15 )
95# in this array you define whether the sponde is already done
96spondedones=( "done" "" "" "" "" "" "" "" )
97
98# this is the mc dataset, which has been created with the script
99# preparemc, make sure to use the correct path
100mcdataset=$path/mc/mcdataset-for-sponde.txt
101
102# values for par3
103par3step=0.01
104par3numminus=9
105par3num=11
106# values for par1
107par1step=0.005
108par1numminus=1
109par1num=7
110
111#
112# end of setup
113#-----------------------------------------------------------------------------
114# beginning of script
115#
116
117# some checks
118# checking if the given files and paths are existing
119if ! [ -e $mcdataset ]
120then
121 echo "Your mc dataset file $mcdataset does not exist."
122 exit
123fi
124if ! [ -e $specpath ]
125then
126 echo "Your output path $specpath does not exist."
127 exit
128fi
129if ! [ -e $path/datasets/dataset$dataset.txt ]
130then
131 echo "Your dataset file $path/datasets/dataset$dataset.txt does not exist."
132 exit
133fi
134if ! [ -e $ganymedrc ]
135then
136 echo "Your ganymed rc file $ganymedrc does not exist."
137 exit
138fi
139for (( l=0 ; l < ${#spondes[@]} ; l++ ))
140do
141 if ! [ -e $rcpath/sponde${spondes[$l]}.rc ]
142 then
143 echo "Your sponde rc file $rcpath/sponde${spondes[$l]}.rc does not exist."
144 exit
145 fi
146done
147
148# get the parameters
149par3=`cat $ganymedrc | grep 'Cut1.Param3' | cut -d: -f2`
150par1=`cat $ganymedrc | grep 'Cut1.Param1' | cut -d: -f2`
151echo "parameters: "
152echo " par3= $par3"
153echo " par1= $par1"
154echo ""
155
156# calculate the parameters with which you start
157start3=`echo $par3 - \( $par3numminus*$par3step \) | bc `
158start1=`echo $par1 - \( $par1numminus*$par1step \) | bc `
159echo "start: "
160echo " par1: $start1 "
161echo " par3: $start3"
162echo ""
163
164
165# function to print the lines for ganymed to the dag file
166function printganydagentry()
167{
168 if [ "$doganymed" = "yes" ]
169 then
170 echo "JOB ds"$dataset"gany"$name" "$condorpath"/processds.submit"
171 else
172 echo "JOB ds"$dataset"gany"$name" "$condorpath"/processds.submit DONE"
173 fi
174 echo "VARS ds"$dataset"gany"$name" path=\"$path\""
175 echo "VARS ds"$dataset"gany"$name" out=\"$dir\""
176 echo "VARS ds"$dataset"gany"$name" ds=\"$dataset\""
177 echo "VARS ds"$dataset"gany"$name" num=\"$dataset\""
178 echo "VARS ds"$dataset"gany"$name" rc=\"$rcfile\""
179 echo ""
180}
181
182# function to print the lines for sponde to the dag file
183function printspecdagentry()
184{
185 sponderc=$rcpath/sponde_wobble$1.rc
186 if [ "$2" = "done" ]
187 then
188 echo "JOB ds"$dataset"spec"$1"_"$name" "$condorpath"/processsponde.submit DONE"
189 else
190 echo "JOB ds"$dataset"spec"$1"_"$name" "$condorpath"/processsponde.submit"
191 fi
192 echo "VARS ds"$dataset"spec"$1"_"$name" path=\""$path"\""
193 echo "VARS ds"$dataset"spec"$1"_"$name" out=\""$outpath"\""
194 echo "VARS ds"$dataset"spec"$1"_"$name" rc=\""$sponderc"\""
195 echo "VARS ds"$dataset"spec"$1"_"$name" spondenum=\""$1"\""
196 echo "VARS ds"$dataset"spec"$1"_"$name" mcds=\""$mcdataset"\""
197 echo "VARS ds"$dataset"spec"$1"_"$name" num=\""$dataset"\""
198 echo ""
199 echo "PARENT ds"$dataset"gany"$name" CHILD ds"$dataset"spec"$1"_"$name
200 echo ""
201}
202
203echo "writing dag file $dagfile for dataset $dataset"
204echo "# dag file for dataset $dataset" > $dagfile
205echo "" >> $dagfile
206val1=$start1
207val3=$start3
208count=0
209for (( i=0 ; i < $par3num ; i++ ))
210do
211 for (( j=0 ; j < $par1num ; j++ ))
212 do
213 name=${val1}_${val3}
214 outpath=$specpath/ganyspec$name
215 rcfile=$outpath/ganymed_${name}_onoff.rc
216 if ! [ -d $outpath ]
217 then
218 mkdir -v $outpath
219 fi
220 cat $ganymedrc | sed -e s/"${par1}"/" ${val1}"/ -e s/"${par3}"/" ${val3}"/ > $rcfile
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`
232 done
233 val3=`echo $val3 + $par3step | bc`
234 val1=$start1
235done
236
237echo ""
238echo "finished writing condor dag file "$dagfile
239echo "in total $count different sets of cuts are used"
240echo ""
241echo "you can submit it now with \"condor_submit_dag -f -maxidle 7 $dagfile\" from your Mars directory"
242echo ""
243
Note: See TracBrowser for help on using the repository browser.