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

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