source: trunk/MagicSoft/Mars/datacenter/scripts/runcorsika@ 9347

Last change on this file since 9347 was 9347, checked in by tbretz, 17 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 7.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 05/2007 <mailto:dorner@astro.uni-wuerzburg.de>
21#
22# Copyright: MAGIC Software Development, 2000-2008
23#
24#
25# ========================================================================
26#
27# This script runs corsika.
28#
29
30source `dirname $0`/sourcefile
31printprocesslog "INFO starting $0"
32program=corsika
33column=fCorsikaFileAvail
34
35set -C
36
37export FLUPRO=$corsikapath'/fluka2008_3'
38
39# printing input card to stdout
40function printinputcard()
41{
42 # Run number
43 echo "RUNNR "$corsikarunno
44 # Starting event number
45 echo "EVTNR 1"
46 # Number of simulated events
47 echo "NSHOW "$numevts
48 # Seed values for simulation
49 echo "SEED "$seed1" 0 0 "
50 echo "SEED "$seed2" 0 0 "
51 echo "SEED "$seed3" 0 0 "
52 # Primary particle
53 echo "PRMPAR "$primparticle
54 echo "ERANGE "$erange
55 echo "ESLOPE "$slope
56 # Simulation range (theta, phi, view cone, starting altitude)
57 echo "THETAP "$zdrange
58 echo "PHIP "$azrange
59 echo "VIEWCONE 0. "$viewconemax
60 echo "FIXCHI "$startalt
61 # Observation level, magnetic field, atmosphere
62 echo "OBSLEV 2200.E2"
63 # From www.noaa.gov/geomagmodels roughly for January 2009. (was 29.5 and 23.0)
64 # MAGNET BX BZ (BX is the horizontal component (muT) to the x-direction of
65 # the detector, BZ is the vertical component (muT) downwards)
66 echo "MAGNET 30.3 24.1"
67 # Rotation angle between array x-direction and magnetic north direction
68 # positive if array x-direction points to the west
69 echo "ARRANG -7.0"
70 # Atmosphere (model, true/false for atmospheric refraction of cer-photons)
71 # Atmosphere read from atmprof11.dat
72 # My current understanding is that only refraction (bending of light
73 # but no absorption of photons is taken into account) setting T.
74 echo "ATMOSPHERE 11 T"
75 # Other parameters
76 echo "RADNKG 200.E2"
77 echo "ECUTS 0.3 0.3 0.02 0.02"
78 echo "ECTMAP 1.E4"
79 echo "STEPFC 0.1"
80 # Don't add muon particle data to output
81 echo "MUADDI F"
82 # Enable muon multiple scattering
83 echo "MUMULT T"
84 # Cherenkov telescope options
85 echo "CWAVLG 290. 600."
86 echo "CSCAT "$reuse" 0. "$impactmax
87 echo "CERSIZ 1."
88 echo "CERFIL T"
89 echo "CERTEL 1"
90 echo " 0. 0. 0. 0. 0. "$diameter" 1700."
91 # How the longitudinal shower development is sampled
92 # echo "LONGI T 10. T F"
93 echo "LONGI F 20 0 F F"
94 # Maximum number of detailed particles to print
95 echo "MAXPRT 0"
96 # Suppress file with partciles reaching ground (DATnnnnnn)
97 # FIXME: Should we make this switchable by the database?
98 echo "PAROUT F F"
99 # Don't write a database file
100 echo "DATBAS F"
101 # Switch off all debugging output
102 echo "DEBUG F 6 F 1000000"
103 # Output path
104 echo "DIRECT "$outpath
105 # User and host (for convinience)
106 echo "USER "`whoami`
107 echo "HOST "`hostname`
108 # End of input card
109 echo "EXIT"
110}
111
112
113scriptlog=$runlogpath/run$program-$datetime.log
114date >> $scriptlog 2>&1
115
116# get sequence #
117gettodo "1" >> $scriptlog 2>&1
118run=${primaries[0]}
119# get corsika runno
120query="SELECT fCorsikaRunNumber FROM MCRunData where fMCRunNumber="$run
121# to be changed later again, when additional tables are available
122#corsikarunno=`sendquery`
123corsikarunno=$run
124
125# lock sequ
126lockfile=$lockpath/lock-$table-$column-$corsikarunno.txt
127checklock >> $scriptlog 2>&1
128
129echo "run $program for run $run..." >> $scriptlog 2>&1
130printprocesslog "INFO starting $program for run $run"
131
132setstatus "start" >> $scriptlog 2>&1
133
134echo "run $program for run $run " >> $scriptlog 2>&1
135echo "create input card... " >> $scriptlog 2>&1
136
137# get values for inputcard
138query="SELECT fParticleTypeKEY FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
139primparticle=`sendquery`
140query="SELECT fEnergyMin, fEnergyMax FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
141erange=`sendquery`
142query="SELECT fNumEvents FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
143numevts=`sendquery`
144query="SELECT fEnergySlope FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
145slope=`sendquery`
146query="SELECT fZenithDistanceMin, fZenithDistanceMax FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
147zdrange=`sendquery`
148# Change from the MARS definition (Az=90 -> East) to Corsika (Az=90 -> West)
149query="SELECT 180-fAzimuthMin, 180-fAzimuthMax FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
150azrange=`sendquery`
151query="SELECT DATE_FORMAT(fRunStart, '%Y/%m/%d') FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
152date=`sendquery`
153outpath=$mcpath"/"$program"/"$date
154query="SELECT fCorsikaSeed FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
155seed1=`sendquery`
156query="SELECT fCorsikaSeed+1 FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
157seed2=`sendquery`
158query="SELECT fCorsikaSeed+2 FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
159seed3=`sendquery`
160query="SELECT fImpactMax FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
161impactmax=`sendquery`
162query="SELECT fViewConeMax FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
163viewconemax=`sendquery`
164query="SELECT fNumReUseShower FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
165reuse=`sendquery`
166query="SELECT fStartingAltitude FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
167startalt=`sendquery`
168query="SELECT fMirrorDiameter FROM MCCorsikaRunData where fCorsikaRunNumber="$corsikarunno
169diameter=`sendquery`
170
171echo "" >> $scriptlog 2>&1
172echo "INPUTCARD:" >> $scriptlog 2>&1
173echo "----------" >> $scriptlog 2>&1
174echo "" >> $scriptlog 2>&1
175echo "" >> $scriptlog 2>&1
176printinputcard >> $scriptlog 2>&1
177
178logfile=$outpath/$program"-"`printf %06d $corsikarunno`".log"
179makedir $outpath >> $scriptlog 2>&1
180
181cd $corsikapath
182
183echo "INPUTCARD:" >| $logfile 2>&1
184printinputcard >> $logfile 2>&1
185echo "" >> $logfile 2>&1
186echo "" >> $logfile 2>&1
187printinputcard | ./cc6501p-linux >> $logfile 2>&1
188
189rm -f $outpath/dat`printf %06d $corsikarunno`
190
191check1=$?
192
193case $check1 in
194 0) echo " check1=$check1 -> everything ok " >> $scriptlog 2>&1
195 printprocesslog "INFO $program finished successfully for corsika run number $corsikarunno"
196 ;;
197 *) echo " check1=$check1 -> ERROR -> step has to be repeated" >> $scriptlog 2>&1
198 printprocesslog "ERROR $program failed for corsika run number $corsikarunno"
199 com=$Fcorsika
200 check=$check1
201 ;;
202esac
203
204setstatus "stop" >> $scriptlog 2>&1
205
206finish >> $scriptlog 2>&1
207
Note: See TracBrowser for help on using the repository browser.