source: trunk/MagicSoft/Mars/datacenter/scripts/mcsequences@ 9198

Last change on this file since 9198 was 9147, checked in by Daniela Dorner, 16 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 12.7 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 12/2005 <mailto:dorner@astro.uni-wuerzburg.de>
21# Author(s): Daniel Hoehne 06/2008 <mailto:hoehne@astro.uni-wuerzburg.de>
22#
23# Copyright: MAGIC Software Development, 2000-2008
24#
25#
26# ========================================================================
27#
28# The script is building two sequences per directory and epoch. One for
29# training and one for testing. The relevant parameters are taken from
30# the MC database.
31#
32
33source `dirname $0`/sourcefile
34printprocesslog "INFO starting $0"
35program=mcsequences
36
37set -C
38
39scriptlog=$runlogpath/$program-$datetime.log
40date >> $scriptlog 2>&1
41
42# check if script is already running
43lockfile=$lockpath/lock-$program.txt
44checklock >> $scriptlog 2>&1
45
46# find montecarlo directories, build two sequences per directory and write sequence files
47printprocesslog "INFO building two sequences per mcdirectory and epoch, one for training and one for testing"
48
49#user="test"
50#db="TestMonteCarlo"
51#pw="Ics+eaTD"
52user="operator"
53db="MyMagicMonteCarlo"
54pw="Ics+eMM!"
55
56dirs=`find $mcrawpath -type d`
57for dir in ${dirs[@]}
58do
59 cont=`echo $dir | cut -d/ -f7`
60 #cont=`echo $dir | cut -d/ -f10`
61 if [ "$cont" == "" ]
62 then
63 continue
64 fi
65 echo $dir >> $scriptlog 2>&1
66
67 epochs=`ls -l $mcpath/camera | cut -c 52-80`
68 for epoch in ${epochs[@]}
69 do
70 echo $epoch >> $scriptlog 2>&1
71 calfile=`find $dir -lname *${epoch}/*.root | grep "_C_"`
72 pedfile=`find $dir -lname *${epoch}/*.root | grep "_P_"`
73
74 calrun=`echo $calfile | cut -d_ -f2`
75 pedrun=`echo $pedfile | cut -d_ -f2`
76
77 modes=("Gamma" "GammaW1" "GammaW2" "GammaFW" "GammaDiff" "GammaHE" "GammaHEW1" "GammaHEW2" "GammaHEFW" "GammaHEDiff" "ProtonDiff" "ProtonHEDiff" "MuonDiff" "MuonHEDiff")
78 for mode in ${modes[@]}
79 do
80 datruns=`find $dir -lname *${epoch}/*.root | grep ${mode}_ | grep "_D_" | cut -d_ -f2 | tr "\n" " "`
81 if [ "$datruns" != "" ]
82 then
83 num=`echo $datruns | wc -w`
84 train=`expr $num / 5`
85 test=`expr $num - $train`
86 last=`expr $num \* 9`
87 train2=`expr $train \* 9`
88 firstrun=`echo $datruns | cut -c 0-8`
89 trainruns=`echo $datruns | cut -c 0-$train2`
90 trainruns2=`echo $trainruns | sed -e 's/ /,/g'`
91 testruns=`echo $datruns | cut -c $train2-$last`
92 testruns2=`echo $testruns | sed -e 's/ /,/g'`
93 firstruntrain=`echo $trainruns | cut -c 0-8`
94 firstruntest=`echo $testruns | cut -c 0-8`
95
96 date=`echo $dir | cut -c 28-37 | sed -e 's/\//-/g'`
97 #date=`echo $dir | cut -c 57-66 | sed -e 's/\//-/g'`
98 zbin=`echo $date | cut -c 3,4`
99
100
101 #training runs
102 for trainrun in ${trainruns[@]}
103 do
104 trainupdate=" update MCRunData set fSequenceFirst=\"$firstruntrain\" where fRunNumber=\"$trainrun\" "
105 mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainupdate "
106 done
107
108 trainquery1=" select fSpectrumKEY, fPSFKEY, fAmplFadcKEY, fAtmosphericModelKEY, fObservationModeKEY, fMCParticleKEY, fReflectorVersionKEY, fCorsikaVersionKEY, fCameraVersionKEY, fViewConeAngleOKEY, fAddSpotSizeKEY from MCRunData where fRunNumber=\"$firstruntrain\" "
109 trainquery2=" select sum(fNumEvents), sum(fNumtriggers) from MCRunData where fRunNumber in ($trainruns2) "
110 trainvalues=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainquery1 "`
111 trainvalues2=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainquery2 "`
112 trainspec=`echo $trainvalues | cut -d" " -f1`
113 trainpsf=`echo $trainvalues | cut -d" " -f2`
114 trainamplfadc=`echo $trainvalues | cut -d" " -f3`
115 traintrainatmo=`echo $trainvalues | cut -d" " -f4`
116 trainobs=`echo $trainvalues | cut -d" " -f5`
117 trainpart=`echo $trainvalues | cut -d" " -f6`
118 trainrefl=`echo $trainvalues | cut -d" " -f7`
119 traincors=`echo $trainvalues | cut -d" " -f8`
120 traincam=`echo $trainvalues | cut -d" " -f9`
121 trainview=`echo $trainvalues | cut -d" " -f10`
122 trainass=`echo $trainvalues | cut -d" " -f11`
123 trainevents=`echo $trainvalues2 | cut -d" " -f1`
124 traintriggers=`echo $trainvalues2 | cut -d" " -f2`
125 trainquery3=" select fSequenceFirst from MCSequenceProcessStatus where fSequenceFirst=\"$firstruntrain\" "
126 trainquery4=" select fSequenceFirst from MCSequences where fSequenceFirst=\"$firstruntrain\" "
127 traincheck3=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainquery3 "`
128 traincheck4=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainquery4 "`
129 traininsert1=" insert MCSequenceProcessStatus set fSequenceFirst=\"$firstruntrain\", fSequenceFileWritten=Now() "
130 traininsert2=" insert MCSequences set fSequenceFirst=\"$firstruntrain\", fRunStart=\"$date\", fNumEvents=\"$trainevents\", fNumTriggers=\"$traintriggers\", fZBin=\"$zbin\", fSpectrumKEY=\"$trainspec\", fPSFKEY=\"$trainpsf\", fAddSpotSizeKEY=\"$trainass\", fAmplFadcKEY=\"$trainamplfadc\", fAtmosphericModelKEY=\"$trainatmo\", fObservationModeKEY=\"$trainobs\", fMCParticleKEY=\"$trainpart\", fReflectorVersionKEY=\"$trainrefl\", fCorsikaVersionKEY=\"$traincors\", fCameraVersionKEY=\"$traincam\", fViewConeAngleOKEY=\"$trainview\", fTestTrainKEY=2 "
131 trainupdate2=" update MCSequences set fRunStart=\"$date\", fNumEvents=\"$trainevents\", fNumTriggers=\"$traintriggers\", fZBin=\"$zbin\", fSpectrumKEY=\"$trainspec\", fPSFKEY=\"$trainpsf\", fAddSpotSizeKEY=\"$trainass\", fAmplFadcKEY=\"$trainamplfadc\", fAtmosphericModelKEY=\"$trainatmo\", fObservationModeKEY=\"$trainobs\", fMCParticleKEY=\"$trainpart\", fReflectorVersionKEY=\"$trainrefl\", fCorsikaVersionKEY=\"$traincors\", fCameraVersionKEY=\"$traincam\", fViewConeAngleOKEY=\"$trainview\", fTestTrainKEY=2 where fSequenceFirst=\"$firstruntrain\" "
132 if [ "$traincheck3" == "" ]
133 then
134 mysql -ss -u $user --password=$pw --host=$ho $db -e " $traininsert1 "
135 fi
136 if [ "$traincheck4" == "" ]
137 then
138 mysql -ss -u $user --password=$pw --host=$ho $db -e " $traininsert2 "
139 else
140 mysql -ss -u $user --password=$pw --host=$ho $db -e " $trainupdate2 "
141 fi
142
143 trainno=`echo $firstruntrain | cut -c 0-4`
144 trainsequpath=$mcsequpath/$trainno
145 makedir $trainsequpath >> $scriptlog 2>&1
146 trainsequfile=$trainsequpath/sequence$firstruntrain.txt
147 echo "writing train sequfile "$trainsequfile >> $scriptlog 2>&1
148 printprocesslog "INFO writing train sequencefile $trainsequfile"
149
150 echo "Sequence: $firstruntrain" >| $trainsequfile
151 echo "Night: $date" >> $trainsequfile
152 echo "Epoch: $epoch" >> $trainsequfile
153 echo "Mode: $mode" >> $trainsequfile
154 echo "" >> $trainsequfile
155 echo "CalRuns: $calrun" >> $trainsequfile
156 echo "PedRuns: $pedrun" >> $trainsequfile
157 echo "DatRuns: $trainruns" >> $trainsequfile
158 echo "" >> $trainsequfile
159 echo "MonteCarlo: Yes" >> $trainsequfile
160 echo "Training sequence" >> $trainsequfile
161 echo "" >> $trainsequfile
162
163
164 #test runs
165 for testrun in ${testruns[@]}
166 do
167 testupdate=" update MCRunData set fSequenceFirst=\"$firstruntest\" where fRunNumber=\"$testrun\" "
168 mysql -ss -u $user --password=$pw --host=$ho $db -e " $testupdate "
169 done
170
171 testquery1=" select fSpectrumKEY, fPSFKEY, fAmplFadcKEY, fAtmosphericModelKEY, fObservationModeKEY, fMCParticleKEY, fReflectorVersionKEY, fCorsikaVersionKEY, fCameraVersionKEY, fViewConeAngleOKEY, fAddSpotSizeKEY from MCRunData where fRunNumber=\"$firstruntest\" "
172 testquery2=" select sum(fNumEvents), sum(fNumtriggers) from MCRunData where fRunNumber in ($testruns2) "
173 testvalues=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $testquery1 "`
174 testvalues2=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $testquery2 "`
175 testspec=`echo $testvalues | cut -d" " -f1`
176 testpsf=`echo $testvalues | cut -d" " -f2`
177 testamplfadc=`echo $testvalues | cut -d" " -f3`
178 testatmo=`echo $testvalues | cut -d" " -f4`
179 testobs=`echo $testvalues | cut -d" " -f5`
180 testpart=`echo $testvalues | cut -d" " -f6`
181 testrefl=`echo $testvalues | cut -d" " -f7`
182 testcors=`echo $testvalues | cut -d" " -f8`
183 testcam=`echo $testvalues | cut -d" " -f9`
184 testview=`echo $testvalues | cut -d" " -f10`
185 testass=`echo $testvalues | cut -d" " -f11`
186 testevents=`echo $testvalues2 | cut -d" " -f1`
187 testtriggers=`echo $testvalues2 | cut -d" " -f2`
188 testquery3=" select fSequenceFirst from MCSequenceProcessStatus where fSequenceFirst=\"$firstruntest\" "
189 testquery4=" select fSequenceFirst from MCSequences where fSequenceFirst=\"$firstruntest\" "
190 testcheck3=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $testquery3 "`
191 testcheck4=`mysql -ss -u $user --password=$pw --host=$ho $db -e " $testquery4 "`
192 testinsert1=" insert MCSequenceProcessStatus set fSequenceFirst=\"$firstruntest\", fSequenceFileWritten=Now() "
193 testinsert2=" insert MCSequences set fSequenceFirst=\"$firstruntest\", fRunStart=\"$date\", fNumEvents=\"$testevents\", fNumTriggers=\"$testtriggers\", fZBin=\"$zbin\", fSpectrumKEY=\"$testspec\", fPSFKEY=\"$testpsf\", fAddSpotSizeKEY=\"$testass\", fAmplFadcKEY=\"$testamplfadc\", fAtmosphericModelKEY=\"$testatmo\", fObservationModeKEY=\"$testobs\", fMCParticleKEY=\"$testpart\", fReflectorVersionKEY=\"$testrefl\", fCorsikaVersionKEY=\"$testcors\", fCameraVersionKEY=\"$testcam\", fViewConeAngleOKEY=\"$testview\", fTestTrainKEY=3 "
194 testupdate2=" update MCSequences set fRunStart=\"$date\", fNumEvents=\"$testevents\", fNumTriggers=\"$testtriggers\", fZBin=\"$zbin\", fSpectrumKEY=\"$testspec\", fPSFKEY=\"$testpsf\", fAddSpotSizeKEY=\"$testass\", fAmplFadcKEY=\"$testamplfadc\", fAtmosphericModelKEY=\"$testatmo\", fObservationModeKEY=\"$testobs\", fMCParticleKEY=\"$testpart\", fReflectorVersionKEY=\"$testrefl\", fCorsikaVersionKEY=\"$testcors\", fCameraVersionKEY=\"$testcam\", fViewConeAngleOKEY=\"$testview\", fTestTrainKEY=3 where fSequenceFirst=\"$firstruntest\" "
195 if [ "$testcheck3" == "" ]
196 then
197 mysql -ss -u $user --password=$pw --host=$ho $db -e " $testinsert1 "
198 fi
199 if [ "$testcheck4" == "" ]
200 then
201 mysql -ss -u $user --password=$pw --host=$ho $db -e " $testinsert2 "
202 else
203 mysql -ss -u $user --password=$pw --host=$ho $db -e " $testupdate2 "
204 fi
205
206 testno=`echo $firstruntest | cut -c 0-4`
207 testsequpath=$mcsequpath/$testno
208 makedir $testsequpath >> $scriptlog 2>&1
209 testsequfile=$testsequpath/sequence$firstruntest.txt
210 echo "writing test sequfile "$testsequfile >> $scriptlog 2>&1
211 printprocesslog "INFO writing test sequencefile $testsequfile"
212
213 echo "Sequence: $firstruntest" >| $testsequfile
214 echo "Night: $date" >> $testsequfile
215 echo "Epoch: $epoch" >> $testsequfile
216 echo "Mode: $mode" >> $testsequfile
217 echo "" >> $testsequfile
218 echo "CalRuns: $calrun" >> $testsequfile
219 echo "PedRuns: $pedrun" >> $testsequfile
220 echo "DatRuns: $testruns" >> $testsequfile
221 echo "" >> $testsequfile
222 echo "MonteCarlo: Yes" >> $testsequfile
223 echo "Test sequence" >> $testsequfile
224 echo "" >> $testsequfile
225 fi
226 done
227 done
228done
229
230finish >> $scriptlog 2>&1
231
Note: See TracBrowser for help on using the repository browser.