1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
2 | %%% magic-tdas.tex -- template to write MAGIC-TDAS documents
|
---|
3 | %%%-----------------------------------------------------------------
|
---|
4 | %%% Kopyleft (K) 2000 J C Gonzalez
|
---|
5 | %%% Max-Planck-Institut fuer Physik,
|
---|
6 | %%% Foehringer Ring 6, 80805 Muenchen, Germany
|
---|
7 | %%% E-mail: gonzalez@mppmu.mpg.de
|
---|
8 | %%%-----------------------------------------------------------------
|
---|
9 | %%% This program is free software; you can redistribute, copy,
|
---|
10 | %%% modify, use it and its documentation for any purpose,
|
---|
11 | %%% provided that the above copyright notice appear in all
|
---|
12 | %%% copies and that both that copyright notice and this
|
---|
13 | %%% permission notice appear in supporting documentation.
|
---|
14 | %%%
|
---|
15 | %%% This piece of code is distributed in the hope that it will
|
---|
16 | %%% be useful, but WITHOUT ANY WARRANTY; without even the
|
---|
17 | %%% implied warranty of FITNESS FOR A PARTICULAR PURPOSE.
|
---|
18 | %%%
|
---|
19 | %%% Although you can actually do whatever you want with this
|
---|
20 | %%% file (following the copyright notice above), your are
|
---|
21 | %%% strongly encouraged NOT to edit directly this file.
|
---|
22 | %%% Instead, make a copy and edit the copy for your purposes.
|
---|
23 | %%%
|
---|
24 | %%% Modifying thie original file means that you actually have
|
---|
25 | %%% the (very basic) knowledge needed to make things by your
|
---|
26 | %%% own, and therefore... you will not get _any_ additional
|
---|
27 | %%% support :-)
|
---|
28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
29 | %%% Last update: Time-stamp: <Thu Mar 2 09:31:41 CET 2000>
|
---|
30 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
31 | %
|
---|
32 | \documentclass[12pt]{article}
|
---|
33 |
|
---|
34 | \usepackage{magic-tdas}
|
---|
35 |
|
---|
36 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
37 | %% BEGIN DOCUMENT
|
---|
38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
39 | \begin{document}
|
---|
40 |
|
---|
41 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
42 | %% Please, for the formatting just include here the standard
|
---|
43 | %% elements: title, author, date, plus TDAScode
|
---|
44 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
45 | \title{ The Reflector simulation program v.0.6 }
|
---|
46 | \author{A.Moralejo\\
|
---|
47 | \texttt{<moralejo@pd.infn.it>}}
|
---|
48 | \date{December 6, 2002\\}
|
---|
49 | \TDAScode{MAGIC-TDAS 02-11\\ 021206/AMoralejo}
|
---|
50 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
51 |
|
---|
52 | %% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
53 | \maketitle
|
---|
54 |
|
---|
55 | %% abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
56 | \begin{abstract}
|
---|
57 | In this document we provide a brief description of Reflector program
|
---|
58 | (version 0.6) and a guide to install and run it. Some of the
|
---|
59 | information contained in this document is also present in MAGIC-TDAS
|
---|
60 | 02-05 dealing with the previous version of the program, but it has also
|
---|
61 | been included here for clarity. Two important bugs regarding the
|
---|
62 | ray-tracing routine have been corrected in this new version.
|
---|
63 | \end{abstract}
|
---|
64 |
|
---|
65 | %% contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
66 | \thetableofcontents
|
---|
67 |
|
---|
68 | \newpage
|
---|
69 |
|
---|
70 | %% body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
71 |
|
---|
72 | %------------------------------------------------------------
|
---|
73 | \section{Introduction}
|
---|
74 |
|
---|
75 | The Reflector program was originally written by Jose Carlos Gonz\'alez
|
---|
76 | and then improved by Harald Kornmayer. The Reflector program reads in
|
---|
77 | MMCS output files (cerxxxxxx files from corsika) and writes an output
|
---|
78 | file with the information about all the photons which reach the
|
---|
79 | telescope focal plane (taking into account atmospheric and mirror
|
---|
80 | absorption) and which are within the camera radius defined in the file
|
---|
81 | {\bf magic.def}. In September 2001 D. Bastieri and C. Bigongiari
|
---|
82 | released a new version (v.0.4) to adapt the program to a format change
|
---|
83 | in the MMCS output. In June 2002 the version 0.5 was released, with
|
---|
84 | small changes in the ouput file format and some bug fixing (see TDAS
|
---|
85 | 02-05).
|
---|
86 | \par
|
---|
87 | The aim of releasing the present version 0.6 was in principle only to
|
---|
88 | add some missing information in the output. However, the ray-tracing
|
---|
89 | routine was checked in detail and some inconsistencies were
|
---|
90 | found. As a result of this, an important bug was detected which
|
---|
91 | produced a systematic blurring of all the images. Later another bug
|
---|
92 | was found in the calculation of the photon arrival time on the
|
---|
93 | camera.These bugs, fixed in this version, are discussed in detail in
|
---|
94 | section \ref{notes}.
|
---|
95 |
|
---|
96 | %------------------------------------------------------------
|
---|
97 | \section{Description of simulation \label{descrip}}
|
---|
98 |
|
---|
99 | The main steps of the simulation are:
|
---|
100 |
|
---|
101 | \begin{enumerate}
|
---|
102 |
|
---|
103 | \item Atmospheric absorption.
|
---|
104 |
|
---|
105 | \item Checking if the photon hits the dish.
|
---|
106 |
|
---|
107 | \item Aluminum absorption.
|
---|
108 |
|
---|
109 | \item Determination of the mirror hitted.
|
---|
110 |
|
---|
111 | \item Mirror reflection.
|
---|
112 |
|
---|
113 | \item Checking if the photon is inside the camera borders.
|
---|
114 |
|
---|
115 | \item Calculation of photon arrival time on camera.
|
---|
116 |
|
---|
117 | \end{enumerate}
|
---|
118 |
|
---|
119 | The reflection of each mirror element is simulated in a realistic way
|
---|
120 | by introducing a gaussian spread of the reflected photons positions on
|
---|
121 | the camera plane. The sigma of this PSF is defined via the
|
---|
122 | {\bf point\_spread} parameter in the telescope description file {\bf
|
---|
123 | magic.def}, and has a value of 0.5 cm, which corresponds approximately
|
---|
124 | to the quality of the MAGIC mirrors produced up to date. Also the
|
---|
125 | possible misalignment of mirror elements is simulated (see section
|
---|
126 | \ref{neededfiles}).
|
---|
127 |
|
---|
128 | \section{Notes on version 0.6 \label{notes}}
|
---|
129 |
|
---|
130 | \subsection {First bug fixed in the ray tracing}
|
---|
131 |
|
---|
132 | The previous versions of the reflector were extensively checked and a
|
---|
133 | strange behaviour was found in them. It is a well known fact (see for
|
---|
134 | instance the discussions in the MAGIC design report) that, to focus a
|
---|
135 | telescope on an object placed at a finite distance, one has to shift
|
---|
136 | the camera plane {\it away} from the mirror dish, with respect to the
|
---|
137 | position in which an object at infinity (a star) would be
|
---|
138 | focused (see fig. \ref{colimation}). For instance, with a paraboloid
|
---|
139 | of focal distance f = 1697 cm, an object placed 10 km above the
|
---|
140 | telescope would be focused on a plane at $\simeq 1700$ cm from the
|
---|
141 | dish (a distance measured along the telescope axis).
|
---|
142 | %
|
---|
143 | \begin{figure}[h!]
|
---|
144 | \begin{center}
|
---|
145 | \epsfig{file=eps/colimation.eps,width=0.7\textwidth}
|
---|
146 | \caption{To focus an object at a finite distance h, the camera plane
|
---|
147 | must be moved away from the mirror a distance d, given by the formula
|
---|
148 | on the right. For MAGIC, the shift is of around 3 cm for a source
|
---|
149 | located 10 km above the telescope.\label{colimation}}
|
---|
150 | \end{center}
|
---|
151 | \end{figure}
|
---|
152 | %
|
---|
153 | \par
|
---|
154 | With reflector program up to version 0.5, and using the mirror
|
---|
155 | parameters in the standard magic.def file, we found out just the
|
---|
156 | opposite behaviour. We wrote a program to produce files with the same
|
---|
157 | structure as the Corsika Cherenkov output, but containing photons from
|
---|
158 | a point source. If we set the source at infinity, we found the best
|
---|
159 | spot placing the camera at a distance of 1697 cm (this can be changed in
|
---|
160 | the magic.def file via the {\it focal\_distance} parameter). We can
|
---|
161 | see the resulting spot in fig. \ref{spot_inf_f1697}. A completely
|
---|
162 | independent ray-tracing program was used to verify that this is the
|
---|
163 | spot that our 17 m tesellated paraboloid should produce.
|
---|
164 | %
|
---|
165 | \begin{figure}[h]
|
---|
166 | \begin{center}
|
---|
167 | \epsfig{file=eps/spot_inf_f1697.eps,width=0.85\textwidth}
|
---|
168 | \caption{Image of a point like source placed at infinity with
|
---|
169 | Reflector 0.5 (units of x and y are cm). Camera plane placed at 1697 cm
|
---|
170 | from the mirror. The circle on the left indicates (small) pixel
|
---|
171 | size. On the right side, projections on x and y of the
|
---|
172 | spot. \label{spot_inf_f1697}}
|
---|
173 | \end{center}
|
---|
174 | \end{figure}
|
---|
175 | %
|
---|
176 | If we now
|
---|
177 | place the source 10 km above the telescope, the best spot is achieved
|
---|
178 | at 1694 cm from the dish, instead of the expected 1700 cm
|
---|
179 | (figs. \ref{spot10kmf1700} and \ref{spot10kmf1694}). It must be
|
---|
180 | noted that for these and the following checks we removed all the
|
---|
181 | gaussian smearing which the program introduces to simulate the
|
---|
182 | possible mirror misalignments and surface irregularities (by the way,
|
---|
183 | a feature which somehow optimistically was not included in the
|
---|
184 | simulations shown in the proposal). In this way we can check just the
|
---|
185 | ray tracing.
|
---|
186 | %
|
---|
187 | \begin{figure}[h!]
|
---|
188 | \begin{center}
|
---|
189 | \epsfig{file=eps/spot10kmf1700.eps,width=0.85\textwidth}
|
---|
190 | \caption{Image of a point like source placed 10 km above the
|
---|
191 | telescope with Reflector 0.5 (units of x and y are cm). Camera plane
|
---|
192 | placed at f = 1700 cm from the mirror. The fact that the spot is so large
|
---|
193 | indicates a problem in the simulation, since with this camera position
|
---|
194 | the telescope should be focused at 10 km (see
|
---|
195 | fig. \ref{spot_inf_f1697}) and hence produce a spot similar to the one
|
---|
196 | shown in fig. \ref{spot_inf_f1697}. The hole in the middle of the spot
|
---|
197 | corresponds to the hole in the mirror dish, and indicates by itself a
|
---|
198 | focusing problem.
|
---|
199 | \label{spot10kmf1700}}
|
---|
200 | \end{center}
|
---|
201 | \end{figure}
|
---|
202 | %
|
---|
203 | \begin{figure}[h!]
|
---|
204 | \begin{center}
|
---|
205 | \epsfig{file=eps/spot10kmf1694.eps,width=0.85\textwidth}
|
---|
206 | \caption{Image of a point like source placed 10 km above the
|
---|
207 | telescope with Reflector 0.5 (units of x and y are cm). Camera plane
|
---|
208 | placed at f = 1694 cm from the mirror. Now the spot is small, but the
|
---|
209 | camera plane is not at the expected position (see text).
|
---|
210 | \label{spot10kmf1694}}
|
---|
211 | \end{center}
|
---|
212 | \end{figure}
|
---|
213 | %
|
---|
214 | \par
|
---|
215 | In order to rule out a possible mistake in the generation of the
|
---|
216 | ``false'' Cherenkov files, we repeated the check using real Corsika
|
---|
217 | files, and directly looking at shower images ($\Theta = 10^\circ$
|
---|
218 | incident gammas with a Crab-like spectrum). We must bear in mind that
|
---|
219 | the shower maximum for gammas of 100 GeV lies around 10 km above the MAGIC
|
---|
220 | level. From the result we can clearly see that the images are best
|
---|
221 | focused at 1694 cm (fig. \ref{evcompare}), therefore confirming the
|
---|
222 | existence of a real problem in the reflector simulation.
|
---|
223 | %
|
---|
224 | \begin{figure}[p]
|
---|
225 | \begin{center}
|
---|
226 | \epsfig{file=eps/evcompare.eps,width=0.85\textwidth}
|
---|
227 | \caption{Gamma shower images obtained with Reflector 0.5 placing
|
---|
228 | the camera at 1700 cm (left) and 1694 cm (right) from the mirror
|
---|
229 | dish. Primary gammas at $\theta = 10^\circ$, E = 16, 46 and 232 GeV.
|
---|
230 | \label{evcompare}}
|
---|
231 | \end{center}
|
---|
232 | \end{figure}
|
---|
233 | %
|
---|
234 | \paragraph {Check of the mirror parameters in the magic.def file\\}
|
---|
235 | In the standard magic.def file we have been using up to now, the
|
---|
236 | spherical mirrors centers were found to be distributed on the surface
|
---|
237 | of a f = 1700 cm paraboloid. Their curvature radii, though discretized
|
---|
238 | in 8 ``zones'' as explained in the design report, corresponded in
|
---|
239 | average to the local mean curvature radius of the same parabolic
|
---|
240 | surface. However, their orientations were those corresponding to a f =
|
---|
241 | 1697 cm paraboloid. Personally I do not think this is something
|
---|
242 | intended, and looks more like an error, but anyway we checked that this
|
---|
243 | was not the reason for the problems in the ray tracing: a test
|
---|
244 | magic.def file was created with all parameters calculated as for a f =
|
---|
245 | 1697 cm paraboloid, and no significant difference could be seen. That
|
---|
246 | is: i) the individual mirror orientations are the dominant factor, and
|
---|
247 | the overall dish in the old reflector behaved indeed like a f = 1697
|
---|
248 | cm parabolic
|
---|
249 | mirror, and ii) the bug must be somewhere else. Even though the error
|
---|
250 | was not there, a new magic.def file has been produced containing the
|
---|
251 | parameters for the 956 mirrors of the final MAGIC design (instead of
|
---|
252 | the 920 mirrors foreseen in the beginning).
|
---|
253 | %
|
---|
254 | \paragraph {Solution of the problem\\}
|
---|
255 | Finally, a check of the routines in {\it ph2cph.c} revealed that the
|
---|
256 | reflector program was actually misinterpreting the information read
|
---|
257 | from the Cherenkov file written by Corsika. In figure \ref{coorsystems}
|
---|
258 | we can see the definition of Corsika's coordinate system (see also the
|
---|
259 | Corsika manual). In it, the x axis points north and the z axis points
|
---|
260 | up. The zenith angle $\Theta$ of a particle trajectory is measured
|
---|
261 | between the particle momentum and the negative z-axis, and the
|
---|
262 | azimuthal angle $\Phi$ between the positive x-axis and the x-y
|
---|
263 | component of the particle momentum, counterclockwise (0 -
|
---|
264 | 2$\pi$). When the direction cosines of a particle's trajectory are
|
---|
265 | given, they refer also to its momentum vector (a downgoing
|
---|
266 | vector)\footnote{In Corsika the third component of the momentum is
|
---|
267 | measured along the negative z-axis and this is probably the origin of
|
---|
268 | the confusion which resulted in the bug}. The same is true for the
|
---|
269 | Cherenkov photons.
|
---|
270 | %
|
---|
271 | \begin{figure}[h]
|
---|
272 | \begin{center}
|
---|
273 | \epsfig{file=eps/coorsystems.eps,width=\textwidth}
|
---|
274 | \caption{Coordinate systems of Corsika and MAGIC.\label{coorsystems}}
|
---|
275 | \end{center}
|
---|
276 | \end{figure}
|
---|
277 | %
|
---|
278 | \begin{figure}[h!]
|
---|
279 | \begin{center}
|
---|
280 | \epsfig{file=eps/parabola.eps,width=0.6\textwidth}
|
---|
281 | \caption{Misunderstanding of photon direction cosines from Corsika
|
---|
282 | by Reflector v 0.5 and older versions.\label{parabola}}
|
---|
283 | \end{center}
|
---|
284 | \end{figure}
|
---|
285 | %
|
---|
286 | Unfortunately, in the output of Corsika, only the direction cosines
|
---|
287 | (u, v) with respect to the x and y axis are given. These completely
|
---|
288 | determine the particle's trajectory as long as one knows that they
|
---|
289 | refer to a downgoing versor, in which case one gets the third
|
---|
290 | direction cosine as $w = -\sqrt{u^2+v^2}$, with a minus sign. However,
|
---|
291 | in {\it ph2cph.c} we found exactly the opposite (lines 116 to 118 in
|
---|
292 | v.05):
|
---|
293 |
|
---|
294 | \begin{verbatim}
|
---|
295 | r[0] = ph->u;
|
---|
296 | r[1] = ph->v;
|
---|
297 | r[2] = (float) sqrt(1.0 - r[0]*r[0] - r[1]*r[1]);
|
---|
298 | \end{verbatim}
|
---|
299 |
|
---|
300 | This means that the program was interpreting u and v as the direction
|
---|
301 | cosines of the {\it upgoing} versor towards which one should ``look''
|
---|
302 | to see the incoming photon. The situation is depicted in figure
|
---|
303 | \ref{parabola}. The two vectors at the bottom left of the plot are the
|
---|
304 | two possible interpretations of the direction cosines u and v. These
|
---|
305 | vectors have the same u and v, and differ only in the sign of their
|
---|
306 | third components w. As the figure illustrates, the reflector
|
---|
307 | simulation, by taking the wrong (positive) sign of w, was transforming
|
---|
308 | the light coming from a point source 10 km away, into a convergent
|
---|
309 | light beam which was then focused at a distance (1694 cm),
|
---|
310 | shorter than the focal length of the paraboloid, and produced a
|
---|
311 | blurred image at the theoretically optimal distance (1700 cm). Of
|
---|
312 | course a paralel beam of light was focused at the right distance (1697
|
---|
313 | cm) since in that case u = v = 0, and both the upgoing and downgoing
|
---|
314 | versors have the same direction.
|
---|
315 | \par
|
---|
316 | The example in figure \ref{parabola} shows the case in which the
|
---|
317 | telescope is pointing at zenith. It is easy to see that if the
|
---|
318 | telescope was pointing in an arbitrary direction a few degrees away
|
---|
319 | from zenith, the fact of taking the wrong sign in the third direction
|
---|
320 | cosine would spoil the reflection completely, to the point that the
|
---|
321 | spot would lie outside the camera limits. However, this is not what we
|
---|
322 | observed: when using the older reflector versions for different zenith
|
---|
323 | angles the images were still contained in the camera. The explanation
|
---|
324 | is that the transformation between Corsika's coordinates system and
|
---|
325 | the telescope system was also wrong, since the angles $\Phi$ and
|
---|
326 | $\Theta$ which indicate the telescope orientation (see fixed\_target
|
---|
327 | option in section \ref{commands}) follow the same convention taken
|
---|
328 | from Corsika: for instance, for pointing the telescope towards North
|
---|
329 | we should set $\Phi = 180^\circ$, because that would be the $\Phi$
|
---|
330 | value for a particle or photon coming from North (see again
|
---|
331 | fig. \ref{coorsystems}, left). This wrong transformation of coordinates
|
---|
332 | oriented the telescope in a way that the situation was always like the
|
---|
333 | one shown in fig. \ref{parabola}, and the image was formed in the
|
---|
334 | camera also for $\Theta > 0$, though also defocused.
|
---|
335 | \par
|
---|
336 | The telescope coordinate system shown in figure \ref{coorsystems}
|
---|
337 | (right) has its z-axis along the telescope axis, and the origin in the
|
---|
338 | center of the mirror dish. This system is used in the ray tracing
|
---|
339 | routine of the reflector simulation. When the telescope points up
|
---|
340 | ($\Theta = \Phi = 0$) this system matches exactly the one in Corsika.
|
---|
341 | The general transformation between both is a simple rotation,
|
---|
342 | since for the sake of simplicity we assume in the simulation that the
|
---|
343 | origins always coincide. In Reflector v.05 or older the rotation
|
---|
344 | matrix was wrong: it had been written assuming that ($\Phi$, $\Theta$)
|
---|
345 | indicated the direction towards which the telescope pointed. Actually,
|
---|
346 | for the reasons already exposed, the telescope must point to
|
---|
347 | ($\Phi +\pi$, $\Theta$). The function in charge of building the rotation
|
---|
348 | matrix is {\it makeOmega} (a part of {\it ph2cph.c}), which is called
|
---|
349 | from {\it reflector.c}. For the present version we have simply
|
---|
350 | replaced $\Phi$ by $\Phi + \pi$ in the function call. The transformation of
|
---|
351 | coordinates is shown in figure \ref{telecoor}, and can be seen as a
|
---|
352 | rotation of angle $\Phi +\pi$ around the z axis of Corsika plus a
|
---|
353 | rotation of angle $\Theta$ around the y'' axis of the telescope (the
|
---|
354 | same way in which the real MAGIC points).
|
---|
355 | %
|
---|
356 | \paragraph {New coordinate system of the camera \label{newcoordi}}
|
---|
357 | We have introduced another change in Reflector 0.6 regarding the
|
---|
358 | coordinates. In versions up to 0.5 the coordinates ($x_{camera}$,
|
---|
359 | $y_{camera}$) of the photon impact point on the camera plane were
|
---|
360 | given in the telescope system (x'', y'', z'') described in
|
---|
361 | fig. \ref{coorsystems}. This was a bit confusing (a rotation of the
|
---|
362 | telescope in the zenith axis resulted in a displacement in x'' of the
|
---|
363 | images), in particular it would have been messy when working in wobble
|
---|
364 | mode. We have now adopted the camera coordinate system proposed in
|
---|
365 | TDAS 01-05: when the observer is looking from the center of the
|
---|
366 | reflector in the direction of the telescope axis (towards the camera)
|
---|
367 | the $x_{camera}$ axis points horizontally to the right, and the
|
---|
368 | $y_{camera}$ axis points upwards. It is trivial from figure
|
---|
369 | \ref{telecoor} to see that the transformation needed to obtain these
|
---|
370 | coordinates is: $x_{camera} = -y''$, $\:y_{camera} = -x''$. This has been
|
---|
371 | added at the end of {\it ph2cph.c}.
|
---|
372 | %
|
---|
373 | \begin{figure}[h]
|
---|
374 | \begin{center}
|
---|
375 | \epsfig{file=eps/telecoor.eps,width=\textwidth}
|
---|
376 | \caption{Transformation of coordinates between the Corsika and
|
---|
377 | MAGIC coordinate systems.\label{telecoor}}
|
---|
378 | \end{center}
|
---|
379 | \end{figure}
|
---|
380 | %
|
---|
381 | \paragraph {How old was the ray-tracing bug?\\}
|
---|
382 | %
|
---|
383 | The bug was certainly present in versions 0.4 and 0.5, but may be even
|
---|
384 | older. Nevertheless, there is no doubt that the reflector program used
|
---|
385 | for the simulation shown in the MAGIC design report (which must have been
|
---|
386 | an early version of the present one) was working fine. Extensive proof
|
---|
387 | of this is provided in an appendix of the design report. A plausible
|
---|
388 | explanation could be that, up to some date, the data being read in by
|
---|
389 | the reflector program (the Corsika output) contained direction cosines
|
---|
390 | which really referred to the upgoing versors of the photon directions,
|
---|
391 | and until then the program worked well. Then may be the output of
|
---|
392 | Corsika was changed to its present form, and the change went unnoticed.
|
---|
393 | The Corsika version used then was 4.52, whereas all further work has
|
---|
394 | been done with Corsika 5.20 or later versions. The Corsika history
|
---|
395 | file shows no record of any change in this respect, but given that we
|
---|
396 | have always used a slightly modified Corsika, it would not be
|
---|
397 | surprising if the Cherenkov output was modified at some point. There
|
---|
398 | is no documentation on this, so if anyone has any relevant information,
|
---|
399 | please make it public.
|
---|
400 | %
|
---|
401 | \paragraph {Influence of the bug on image analysis\\}
|
---|
402 | The fixing of the bug (resulting in sharper images) will for sure
|
---|
403 | improve the results of the image analysis, in particular with regard
|
---|
404 | to gamma / hadron separation. This could in part explain the
|
---|
405 | differences we have been observing in the expected performance of
|
---|
406 | MAGIC with respect to what was foreseen in the design report. However,
|
---|
407 | we note here again that in the simulation used there, not only was the
|
---|
408 | reflector working well, but also no noise was introduced in the
|
---|
409 | reflecting process. This was surely too optimistic, and it implies
|
---|
410 | that it will be hard to reproduce those results using a more realistic
|
---|
411 | approach which accounts for mirror imperfections. However, the
|
---|
412 | introduction of the noise (fig. \ref{refl06images}) has a less
|
---|
413 | dramatic effect than the defocusing which the bug was producing.
|
---|
414 | %
|
---|
415 | \subsection {Second bug: photon timing}
|
---|
416 | After a first release of Reflector 0.6 had been made public, another
|
---|
417 | important bug was found. We tried to check whether the simulated
|
---|
418 | reflecting dish was really ``isochronous''. A paralel beam of photons,
|
---|
419 | all sharing the same arrival time on the ground, were processed by the
|
---|
420 | simulation program and their arrival times on the camera plane were
|
---|
421 | histogrammed. The result can be seen in fig. \ref{timing} (dashed
|
---|
422 | histograms). This time the bug was quite evident: since Corsika gives
|
---|
423 | us the arrival time of photons on ground, the path from the point
|
---|
424 | where the photon hits the dish to the ground has to be subtracted (or
|
---|
425 | added, because since the center of the dish in the MC is at $z = 0$,
|
---|
426 | the mirror reflecting the photon may have $z < 0$ when the dish is
|
---|
427 | inclined). The sign in this subtraction (in {\it ph2cph.c}) was
|
---|
428 | wrong. This bug was present in both versions 0.5 and 0.4, and might
|
---|
429 | be related to the other one (a change of orientation of the z axis
|
---|
430 | at some point may have produced it). Since in the simulation made for
|
---|
431 | the design report the timing played little or no role (the camera
|
---|
432 | simulation did not consider the arrival times of photons) it is not
|
---|
433 | possible to know whether the bug was already in the code by then.
|
---|
434 | \par
|
---|
435 | This bug means that all the studies made up to now regarding photon
|
---|
436 | arrival times on the camera are completely useless (for instance, the
|
---|
437 | optimization of the time parameters in the L1 trigger has to be redone
|
---|
438 | from scratch!).
|
---|
439 | %
|
---|
440 | \begin{figure}[h]
|
---|
441 | \begin{center}
|
---|
442 | \epsfig{file=eps/timing.eps,width=\textwidth}
|
---|
443 | \caption{Test of reflector isochrony. The arrival time
|
---|
444 | distributions of photons in the camera are shown for (buggy) Reflector
|
---|
445 | 0.5 and for Reflector 0.6. The sketch in the center shows the test for
|
---|
446 | the case in which the light beam is paralel to the telescope axis
|
---|
447 | (left plot). On the right, the same test has been made with light
|
---|
448 | arriving 1 degree off axis.
|
---|
449 | \label{timing}}
|
---|
450 | \end{center}
|
---|
451 | \vspace*{-1cm}
|
---|
452 | \end{figure}
|
---|
453 |
|
---|
454 | \subsection {Performance of the new version}
|
---|
455 | In figure \ref{coma} we show the images of a point-like source at 10
|
---|
456 | km from the telescope, produced with the Reflector version 0.6,
|
---|
457 | and using the new version of the magic.def file (see see next
|
---|
458 | section). No noise has been introduced in the reflection, the observed
|
---|
459 | spots are just the result of optical aberrations. The light source has
|
---|
460 | been put at slightly different viewing angles
|
---|
461 | from the telescope. The results are comparable to those in the design
|
---|
462 | report, actually these are a bit better, the difference probably being
|
---|
463 | that the focal lengths of the mirror tiles in the older magic.def file
|
---|
464 | were discretized in only eight values, while now they change rather
|
---|
465 | continuously. Some images of a point source at infinity (a star) can be
|
---|
466 | seen in fig. \ref{coma_star}. We can see that for any incidence angle,
|
---|
467 | the area within which 50$\%$ of the light is concentrated is smaller
|
---|
468 | than that of a small pixel.
|
---|
469 | \par
|
---|
470 | In figure \ref{refl06images} the images of three gamma events ($\theta
|
---|
471 | = 10^\circ$, E = 16, 46, 232 GeV), the same of fig. \ref{evcompare}
|
---|
472 | are shown. They have been produced with Reflector 0.6 assuming perfect
|
---|
473 | spherical mirrors (left) and realistic ones (right). The images look
|
---|
474 | reasonable, much sharper than with the older versions, even when the
|
---|
475 | mirror imperfections are taken into account.
|
---|
476 | \par
|
---|
477 | %
|
---|
478 | \begin{figure}[p]
|
---|
479 | \begin{center}
|
---|
480 | \epsfig{file=eps/coma.eps,width=0.85\textwidth}
|
---|
481 | \caption{Reflector 0.6. Images of a point-like source at
|
---|
482 | 10 km from the telescope for different incident angles (from on-axis
|
---|
483 | to 2 degrees off-axis). The quantity d50 indicates the diameter of a
|
---|
484 | circle (plotted) containing 50$\%$ of the reflected light. Note that
|
---|
485 | the z-axis scale is logarithmic, and the same in the first five
|
---|
486 | plots. The last plot shows the x-axis projections in linear scale.
|
---|
487 | \label{coma}}
|
---|
488 | \end{center}
|
---|
489 | \vspace*{-1cm}
|
---|
490 | \end{figure}
|
---|
491 | %
|
---|
492 | \begin{figure}[p]
|
---|
493 | \begin{center}
|
---|
494 | \epsfig{file=eps/refl06images.eps,width=0.85\textwidth}
|
---|
495 | \caption{Reflector 0.6. Images of the three gamma showers shown in
|
---|
496 | fig. \ref{evcompare}, without noise added in the reflection (left) and
|
---|
497 | with the standard noise (right) as described in section
|
---|
498 | \ref{descrip}. Note that the orientation of the images has changed as a
|
---|
499 | result of the introduction of a new camera coordinate system (see page
|
---|
500 | \pageref{newcoordi}).
|
---|
501 | \label{refl06images}}
|
---|
502 | \end{center}
|
---|
503 | \vspace*{-1cm}
|
---|
504 | \end{figure}
|
---|
505 | %
|
---|
506 | \begin{figure}[p]
|
---|
507 | \begin{center}
|
---|
508 | \epsfig{file=eps/coma_star.eps,width=0.85\textwidth}
|
---|
509 | \caption{Reflector 0.6. Images of a star. The quantity d50
|
---|
510 | indicates the diameter of a circle (plotted) containing 50$\%$ of the
|
---|
511 | reflected light.
|
---|
512 | \label{coma_star}}
|
---|
513 | \end{center}
|
---|
514 | \vspace*{-1cm}
|
---|
515 | \end{figure}
|
---|
516 | %
|
---|
517 | \subsection{The new magic.def file}
|
---|
518 | A new magic.def file (see sect. \ref{neededfiles}) has been created
|
---|
519 | and included in the Reflector 0.6 package. Now the number of
|
---|
520 | individual mirror tiles is 956, matching
|
---|
521 | the number and distribution of the final MAGIC design. The mirror
|
---|
522 | centers and orientations are those corresponding to a paraboloid of
|
---|
523 | 1697 cm focal (hence the camera plane is placed at 1700 cm from the
|
---|
524 | dish). The focal lengths have been calculated by R. Mirzoyan taking
|
---|
525 | into account the so called ``shortening effect'' (see design report).
|
---|
526 | A new axisdev.dat file (se again \ref{neededfiles}) with data for the
|
---|
527 | 956 mirrors is also included.
|
---|
528 | %
|
---|
529 | \subsection{The {\itshape cermaker} program}
|
---|
530 | A test program to produce cer files (input for the reflector)
|
---|
531 | containing photons from a point-light source of light placed in any
|
---|
532 | position has been added to the Reflector package {\it
|
---|
533 | (tester/cermaker.c)}. This is the same program used to produce the
|
---|
534 | plots shown in this report. The usage is as follows:
|
---|
535 | \begin{verbatim}
|
---|
536 | cermaker source_x(cm) source_y(cm) source_z(cm) [events]
|
---|
537 | \end{verbatim}
|
---|
538 | The source position is given with respect to the telescope. The output
|
---|
539 | file is called {\it cer000001}, and can be read by the reflector program.
|
---|
540 | %
|
---|
541 | \subsection{Other changes in Reflector 0.6}
|
---|
542 |
|
---|
543 | Some other minor improvements have been introduced in Reflector 0.6:
|
---|
544 |
|
---|
545 | \begin{enumerate}
|
---|
546 |
|
---|
547 | \item reflector.c: Introduced NaN (Not a Number) check in the photon
|
---|
548 | loop. If NaNs are found in a photon data block (there are some in the
|
---|
549 | Corsika output from time to time, for unkown reason), it is not processed.
|
---|
550 |
|
---|
551 | \item ph2cph.c: Introduced "check of positiveness" before taking a
|
---|
552 | square root in the calculation of the photon trajectory intersection
|
---|
553 | with the paraboloid (resulted sometimes in NaNs when the photon did
|
---|
554 | not intersect the paraboloid).
|
---|
555 |
|
---|
556 | \item Added an option for the wobble mode in the input card (see
|
---|
557 | section \ref{opt}).
|
---|
558 |
|
---|
559 | \item New output format (see sect. \ref{out}): added a Run header,
|
---|
560 | which is like that of Corsika, plus a couple of variables concerning
|
---|
561 | the reflector parameters: the wobble mode and the atmospheric model
|
---|
562 | used for the simulation. The event header has also been changed to
|
---|
563 | include all the information present in the Corsika event
|
---|
564 | header. We also added in the event header three new variables which
|
---|
565 | tell us for each event what fraction of the Cherenkov photons on the
|
---|
566 | camera plane has been produced by electrons, muons, or other
|
---|
567 | particles.
|
---|
568 | \par
|
---|
569 | Finally, the ascii files {\it magic.def}, {\it
|
---|
570 | axisdev.dat} and {\it reflectivity.dat} which the program has used as
|
---|
571 | input are now attached at the end of the output file, so that each
|
---|
572 | output file contains all the relevant information on how it was
|
---|
573 | produced.
|
---|
574 |
|
---|
575 | \end{enumerate}
|
---|
576 |
|
---|
577 | %------------------------------------------------------------
|
---|
578 | \section{How to Install Reflector Program \label{installation}}
|
---|
579 |
|
---|
580 | You can get the current version of the Reflector Program from the
|
---|
581 | MAGIC web page: \\
|
---|
582 | {\bf http://hegra1.mppmu.mpg.de/MAGICWeb/ }\\
|
---|
583 | You can find
|
---|
584 | the latest public version of this program as tarred gzipped file in
|
---|
585 | the Monte Carlo Download area (you need the usual password). You have to
|
---|
586 | download the file reflector\_0.6.tar.gz and then follow the
|
---|
587 | instructions below:
|
---|
588 |
|
---|
589 | \begin{description}
|
---|
590 | \item[Decompress the file using:]
|
---|
591 | gunzip reflector*.tar.gz
|
---|
592 | \item[Unpack the tar file with:]
|
---|
593 | tar xvf reflector*.tar
|
---|
594 | \item[Go to the directory where the source files are:]
|
---|
595 | cd MagicProgs/Simulation/Detector/Reflector\_0.6/
|
---|
596 | \item[Make symbolic links running the script:]
|
---|
597 | refl-install
|
---|
598 | \item[Check if all dependencies are fulfilled:]
|
---|
599 | make depend
|
---|
600 | \item[Compile the program:]
|
---|
601 | make
|
---|
602 | \end{description}
|
---|
603 |
|
---|
604 | If everything goes right you should have an executable file called
|
---|
605 | {\bf reflector}.
|
---|
606 |
|
---|
607 | %------------------------------------------------------------
|
---|
608 | \section{How to Run Reflector Program \label{running}}
|
---|
609 |
|
---|
610 | You need a steering card to run the Reflector program. You can find an
|
---|
611 | example in the {\bf MagicProgs/Simulation/Detector/Reflector\_0.6/input.card}
|
---|
612 | file. You have to modify this file according to your needs (see below
|
---|
613 | for instructions about steering card) and then run the program with the
|
---|
614 | following statement:\\
|
---|
615 |
|
---|
616 | \hspace{1cm}{\bf reflector $<$ input.card}
|
---|
617 |
|
---|
618 | %------------------------------------------------------------
|
---|
619 | \section{Needed Files \label{neededfiles}}
|
---|
620 |
|
---|
621 | The Reflector program needs some other files to run. These files are
|
---|
622 | the following:
|
---|
623 | \begin{itemize}
|
---|
624 | \item {\bf magic.def}: contains the description of MAGIC telescope
|
---|
625 | geometry, together with some other parameters needed by the Reflector
|
---|
626 | program.
|
---|
627 | \item {\bf axisdev.dat}: contains data to simulate the possible
|
---|
628 | deviation of the spot of each single mirror on the camera plane due
|
---|
629 | to its non perfect alignment. The values are x, y coordinates
|
---|
630 | distributed at random (according to a gaussian with $\sigma =
|
---|
631 | 0.5$ cm).
|
---|
632 | \item {\bf reflectivity.dat}: contains the mirror reflectivity index as
|
---|
633 | a function of the wavelength.
|
---|
634 | \end{itemize}
|
---|
635 |
|
---|
636 | All these files are usually in the {\bf
|
---|
637 | MagicProgs/Simulation/Detector/Data/} directory and {\it in principle} you
|
---|
638 | should {\bf not} make any change in them to run the program.
|
---|
639 |
|
---|
640 | %------------------------------------------------------------
|
---|
641 | \section{Steering Card}
|
---|
642 |
|
---|
643 | The steering card sets all the parameters and options
|
---|
644 | to steer the reflection simulation. Each line of the steering card is
|
---|
645 | a statement with its parameters, if it is the case. Lines beginning
|
---|
646 | with \# are considered comments. The Reflector program parses all the
|
---|
647 | lines sequentially. Then if you repeat a statement with different
|
---|
648 | options only the last one will be considered.
|
---|
649 |
|
---|
650 | \subsection{Mandatory Commands \label{commands}}
|
---|
651 |
|
---|
652 | \begin{description}
|
---|
653 |
|
---|
654 | \item[reflector 0.6]
|
---|
655 |
|
---|
656 | This statement must be the first line of the steering card
|
---|
657 | file. The Reflector program checks it to verify if it is reading
|
---|
658 | a steering card.
|
---|
659 |
|
---|
660 | \item[output\_file /disk99/reflex/Gamma\_0\_7\_1001to1010\_w0.rfl]
|
---|
661 |
|
---|
662 | The output\_file command specifies the name and the
|
---|
663 | path of the output file. The path can be absolute, like in the
|
---|
664 | example above, or relative. Although any name can be used,
|
---|
665 | conventionally the Reflector program
|
---|
666 | output file name has the .rfl extension, and starts with
|
---|
667 | the primary particle name. The first number indicates the
|
---|
668 | zenith angle of the incident primaries, the second one
|
---|
669 | indicates the production site (7 is for Padua) and is related
|
---|
670 | to the random number generator seed used by CORSIKA. Then the run
|
---|
671 | number range is shown (10 runs in this case, from 1001 to
|
---|
672 | 1010). Each run corresponds to 10000 showers. Finally, the
|
---|
673 | label "w0" means no wobble mode was used (telescope pointing
|
---|
674 | at the source). Alternatively, the "w+" or "w-" labels (only
|
---|
675 | in gamma files) refer to the two pointings in the
|
---|
676 | Wobble-observation mode (see TDAS 01-05 by W. Wittek).
|
---|
677 |
|
---|
678 | \item[ct\_file ../Data/magic.def]
|
---|
679 |
|
---|
680 | The ct\_file statement defines where the program can find the
|
---|
681 | telescope characteristics. The path in the example above is
|
---|
682 | correct to run reflector in
|
---|
683 | MagicProgs/Simu\-la\-tion/De\-tector/Reflector\_0.6/ directory.
|
---|
684 | If you want to run it in a different directory you have to modify the
|
---|
685 | path accordingly.
|
---|
686 |
|
---|
687 | \item[atm\_model ATM\_CORSIKA]
|
---|
688 | The atm\_model statement says to the program what kind of
|
---|
689 | atmospheric absorption model to use. Possible choices are:
|
---|
690 | ATM\_CORSIKA, ATM\_ISO\-THERMAL, ATM\_90\-PER\-CENT and
|
---|
691 | ATM\_NO\-ATMO\-SPHE\-RE.
|
---|
692 |
|
---|
693 | \item[cer\_files]
|
---|
694 |
|
---|
695 | All the lines following this statement are considered files to
|
---|
696 | be processed by the Reflector program, one for each line,
|
---|
697 | eventually with their paths (see the example below). Therefore this
|
---|
698 | command must be the last one.\\
|
---|
699 | \\
|
---|
700 | cer\_files\\
|
---|
701 | /disk99/cer001001\\
|
---|
702 | /disk99/cer001002\\
|
---|
703 | /disk99/cer001003\\
|
---|
704 | ........ \\
|
---|
705 | /disk99/cer001009\\
|
---|
706 | /disk99/cer001010\\
|
---|
707 | \\
|
---|
708 | The cer file name can be followed by two numbers, for example:
|
---|
709 | \\
|
---|
710 | /disk99/cer001001 376 5723\\
|
---|
711 | \\
|
---|
712 | In this case the program processes only the events between and
|
---|
713 | including the numbers given.
|
---|
714 |
|
---|
715 | \end{description}
|
---|
716 |
|
---|
717 | \subsection{Optional Commands \label{opt}}
|
---|
718 |
|
---|
719 | \begin{description}
|
---|
720 |
|
---|
721 | \item[verbose\_level 1]
|
---|
722 |
|
---|
723 | Sets the quantity of information printed out by Reflector
|
---|
724 | when running. Possible values are 0 to 4
|
---|
725 |
|
---|
726 | \item[max\_events 50000]
|
---|
727 |
|
---|
728 | Fixes the maximum number of events to process.
|
---|
729 |
|
---|
730 | \item[energy\_cuts 100 1000]
|
---|
731 |
|
---|
732 | This statement forces the Reflector to process only showers
|
---|
733 | with primary energy between the given values (GeV).
|
---|
734 |
|
---|
735 | \item[seeds n1 n2]
|
---|
736 |
|
---|
737 | Seeds for the random number generators to used by the program
|
---|
738 | for the simulation of the absorption (both in the atmosphere
|
---|
739 | and on the mirror). Default values are 3141592 and
|
---|
740 | 2718182.
|
---|
741 |
|
---|
742 | \item[telescope\_position x y]
|
---|
743 |
|
---|
744 | Option included in version 0.5 of Reflector. Usually it is
|
---|
745 | not needed, since for normal MC production for MAGIC the
|
---|
746 | telescope is placed at the origin of coordinates (0,0). But,
|
---|
747 | if for some reason, we produce cerxxxxxx files with the
|
---|
748 | telescope in a different position, we must inform the
|
---|
749 | Reflector program in the input card using this option
|
---|
750 | (otherwise Reflector will fail to {\it find} the photons
|
---|
751 | in the cer file).
|
---|
752 |
|
---|
753 | \item[reflectivity\_file /path/reflectivity.dat]
|
---|
754 |
|
---|
755 | File containing mirror reflectivity as a function of
|
---|
756 | wavelength (see section \ref{neededfiles}). If this option is
|
---|
757 | not supplied, the program will look for
|
---|
758 | ``../Data/reflectivity.dat'' as previous versions of
|
---|
759 | Reflector did.
|
---|
760 |
|
---|
761 | \item[axisdev\_file /path/axisdev.dat]
|
---|
762 |
|
---|
763 | File containing single mirror spot deviation in {\bf x} and
|
---|
764 | {\bf y} on the camera in cm (see section
|
---|
765 | \ref{neededfiles}) for each mirror. If this option is not
|
---|
766 | supplied, the program will look for ``../Data/axisdev.dat''
|
---|
767 | as previous versions of Reflector did.
|
---|
768 |
|
---|
769 | \item[fixed\_target $\Theta$ $\Phi$]
|
---|
770 |
|
---|
771 | This statement fixes the telescope axis position. The first
|
---|
772 | number is the zenith angle $\Theta$ (deg) while the second is
|
---|
773 | the azimuthal angle $\Phi$ (deg). This corresponds to {\it
|
---|
774 | CORSIKA}'s definition of primary particle incident direction
|
---|
775 | (see fig. \ref{coorsystems}, left). For instance, $\phi = 90^\circ$
|
---|
776 | means that the telescope is pointing towards East. If this
|
---|
777 | option is omitted the telescope will always point in the
|
---|
778 | direction of the Corsika primary (whatever it is), or a
|
---|
779 | slightly modified direction if the wobble\_mode option is used
|
---|
780 | (see next point). When running the reflector over gamma data
|
---|
781 | generated in a range of zenith angles, one should therefore
|
---|
782 | ommit the fixed\_target option.
|
---|
783 |
|
---|
784 | \item[wobble\_mode w]
|
---|
785 |
|
---|
786 | Indicates whether the reflection should be done in the wobble
|
---|
787 | mode, that is, with shifted pointing with respect to the
|
---|
788 | nominal telescope orientation (given by fixed\_target or
|
---|
789 | otherwise, see above). The wobble mode is described in TDAS
|
---|
790 | 01-05. Possible values for w are 0 (no wobble mode), 1, -1
|
---|
791 | (image shift along $x_{camera}$ axis) and 3 (image shift along
|
---|
792 | $y_{camera}$ axis).
|
---|
793 |
|
---|
794 | \end{description}
|
---|
795 |
|
---|
796 | %------------------------------------------------------------
|
---|
797 |
|
---|
798 | \newpage
|
---|
799 | \section{Output file \label{out}}
|
---|
800 | The output file begins with two ascii lines:\\
|
---|
801 | \\
|
---|
802 | \verb"reflector 0.6" \\
|
---|
803 | \verb"START---RUN" \\
|
---|
804 | After the \verb"START---RUN" flag there is a carriage return, and then
|
---|
805 | the run header which is basically the one from Corsika with two added
|
---|
806 | variables, {\it wobble\_mode} and {\it atmospheric\_model}. Check the
|
---|
807 | Corsika manual for the meaning and units of the rest of them. All of the
|
---|
808 | variables 4-byte real numbers except the first, which is a 4 character
|
---|
809 | string containing the run header ascii label from Corsika:
|
---|
810 | \vspace*{0.5cm}
|
---|
811 | \\
|
---|
812 | %
|
---|
813 | \begin{tabular}{ll}
|
---|
814 | \parbox{5cm}{Variable} & Description \\
|
---|
815 | \hline
|
---|
816 | & \\
|
---|
817 | ASCII Label & 'RUNH' \\
|
---|
818 | RunNumber & \\
|
---|
819 | date & \\
|
---|
820 | Corsika\_version & \\
|
---|
821 | NumObsLev & \\
|
---|
822 | HeightLev[10] & \\
|
---|
823 | SlopeSpec & \\
|
---|
824 | ELowLim & \\
|
---|
825 | EUppLim & \\
|
---|
826 | EGS4\_flag & \\
|
---|
827 | NKG\_flag & \\
|
---|
828 | Ecutoffh & \\
|
---|
829 | Ecutoffe & \\
|
---|
830 | Ecutoffg & \\
|
---|
831 | C[50] & \\
|
---|
832 | wobble\_mode & Wobble mode with which the reflector was run (TDAS
|
---|
833 | 01-05) \\
|
---|
834 | atmospheric\_model & Atmospheric model used for the absorption
|
---|
835 | simulation \\
|
---|
836 | & 0 = no atmosphere; 1 = atm\_90percent; \\
|
---|
837 | & 2 = atm\_isothermal; 3 = atm\_corsika. \\
|
---|
838 | dummy1[18] & not used \\
|
---|
839 | CKA[40] & \\
|
---|
840 | CETA[5] & \\
|
---|
841 | CSTRBA[11] & \\
|
---|
842 | dummy2[104] & not used \\
|
---|
843 | AATM[5] & \\
|
---|
844 | BATM[5] & \\
|
---|
845 | CATM[5] & \\
|
---|
846 | NFL[4] & \\
|
---|
847 | &\\
|
---|
848 | \hline
|
---|
849 | \end{tabular}
|
---|
850 |
|
---|
851 | \newpage
|
---|
852 |
|
---|
853 | Then there comes a ``\verb"START-EVENT"'' flag, followed by a carriage
|
---|
854 | return and then the binary event header. Each variable is a 4-byte
|
---|
855 | float number except for the first one which is the event header label
|
---|
856 | from Corsika (a string of 4 characters). Some of of the variables from
|
---|
857 | Corsika are not explained here (see Corsika manual instead).
|
---|
858 | \vspace*{0.5cm}
|
---|
859 | \\
|
---|
860 | \begin{tabular}{ll}
|
---|
861 | \parbox{5cm}{Variable} & Description \\
|
---|
862 | \hline
|
---|
863 | & \\
|
---|
864 | ASCII label & 'EVTH' \\
|
---|
865 | EvtNumber & Event Number \\
|
---|
866 | PrimaryID & Primary particle identification code \\
|
---|
867 | Etotal & Primary particle total energy (GeV) \\
|
---|
868 | Thick0 & CORSIKA's starting altitude in g/cm2 \\
|
---|
869 | FirstTarget & CORSIKA's number of first target if fixed \\
|
---|
870 | zFirstInt & Height of first interaction in cm \\
|
---|
871 | p[3] & Primary particle momentum in x,y,-z directions (GeV) \\
|
---|
872 | Theta & Primary particle zenith angle (rad) \\
|
---|
873 | Phi & Primary particle azimuth angle (rad) \\
|
---|
874 |
|
---|
875 | NumRndSeq & Number of different CORSIKA random sequences (max. 10) \\
|
---|
876 | RndData[10][3] & RndData[i][0]: integer seed of sequence i \\
|
---|
877 | & RndData[i][1]: number of offset random calls (mod $10^6$) of sequence i. \\
|
---|
878 | & RndData[i][2]: number of offset random calls ($/10^6$) of sequence i. \\
|
---|
879 |
|
---|
880 | RunNumber & Run number \\
|
---|
881 | DateRun & Date of run yymmdd \\
|
---|
882 | Corsika\_version & Version of {\it CORSIKA} \\
|
---|
883 |
|
---|
884 | NumObsLev & Number of observation levels (should be always 1 for
|
---|
885 | us) \\
|
---|
886 | HeightLev[10] & Height of observation levels in cm \\
|
---|
887 |
|
---|
888 | SlopeSpec & Energy spectrum slope \\
|
---|
889 | ELowLim & Energy lower limit (GeV) \\
|
---|
890 | EUppLim & Energy upper limit (GeV) \\
|
---|
891 | Ecutoffh & \\
|
---|
892 | Ecutoffm & \\
|
---|
893 | Ecutoffe & \\
|
---|
894 | Ecutoffg & \\
|
---|
895 | NFLAIN & \\
|
---|
896 | NFLDIF & \\
|
---|
897 | NFLPI0 & \\
|
---|
898 | NFLPIF & \\
|
---|
899 | NFLCHE & \\
|
---|
900 | NFRAGM & \\
|
---|
901 | Bx & \\
|
---|
902 | By & \\
|
---|
903 | EGS4yn & \\
|
---|
904 | NKGyn & \\
|
---|
905 | GHEISHAyn & \\
|
---|
906 | VENUSyn & \\
|
---|
907 | & \\
|
---|
908 | \hline
|
---|
909 | \end{tabular}
|
---|
910 | %
|
---|
911 | \newpage
|
---|
912 | %
|
---|
913 |
|
---|
914 | \begin{tabular}{ll}
|
---|
915 |
|
---|
916 | \parbox{5cm}{Variable} & Description \\
|
---|
917 | \hline
|
---|
918 | & \\
|
---|
919 | CERENKOVyn & \\
|
---|
920 | NEUTRINOyn & \\
|
---|
921 | HORIZONTyn & \\
|
---|
922 | COMPUTER & \\
|
---|
923 |
|
---|
924 | ThetaMin & Minimum Theta of primaries (deg) \\
|
---|
925 | ThetaMax & Maximum Theta of primaries (deg) \\
|
---|
926 | PhiMin & Minimum Phi of primaries (deg) \\
|
---|
927 | PhiMax & Maximum Phi of primaries (deg) \\
|
---|
928 | CBunchSize & \\
|
---|
929 | CDetInX & \\
|
---|
930 | CDetInY & \\
|
---|
931 | CSpacInX & \\
|
---|
932 | CSpacInY & \\
|
---|
933 | CLenInX & \\
|
---|
934 | CLenInY & \\
|
---|
935 | COutput & \\
|
---|
936 | AngleNorthX & \\
|
---|
937 | MuonInfo & \\
|
---|
938 | StepLength & \\
|
---|
939 | CWaveLower & Wavelength lower limit (nm) \\
|
---|
940 | CWaveUpper & Wavelength upper limit (nm) \\
|
---|
941 | Multipl & \\
|
---|
942 | CorePos[2][20] & Core positions of randomized shower \\
|
---|
943 | SIBYLL[2] & \\
|
---|
944 | QGSJET[2] & \\
|
---|
945 | DPMJET[2] & \\
|
---|
946 | VENUS\_cross & \\
|
---|
947 | mu\_mult\_scat & \\
|
---|
948 | NKG\_range & \\
|
---|
949 | EFRCTHN[2] & \\
|
---|
950 | WMAX[2] & \\
|
---|
951 | rthin\_rmax & \\
|
---|
952 | viewcone\_angles[2] & Inner and outer angles of Corsika's VIEWCONE
|
---|
953 | option. \\
|
---|
954 | telescopePhi & Telescope azimuth (rad). Measured from South, counter-clockwise \\
|
---|
955 | telescopeTheta & Telescope zenith angle (rad) \\
|
---|
956 | TimeFirst & Arrival time on camera of first photon (ns) \\
|
---|
957 | TimeLast & Arrival time on camera of last photon (ns) \\
|
---|
958 |
|
---|
959 | & 6 next variables: CORSIKA longitudinal particle fit parameters \\
|
---|
960 | & \hspace{0.5cm} (see CORSIKA manual for precise meaning and units)\\
|
---|
961 | longi\_Nmax & Numer of charged particles at maximum \\
|
---|
962 | longi\_t0 & Atmospheric depth of shower starting point (N=0) \\
|
---|
963 | longi\_tmax & Atmospheric depth of shower maximum (g/cm$^2$) \\
|
---|
964 | longi\_a & \\
|
---|
965 | longi\_b & For {\bf longi\_a}, {\bf longi\_b}, {\bf longi\_c}, see CORSIKA manual \\
|
---|
966 | longi\_c & \\
|
---|
967 | longi\_chi2 & $\chi^2/dof$ of the fit\\
|
---|
968 | & \\
|
---|
969 | \hline
|
---|
970 | \end{tabular}
|
---|
971 |
|
---|
972 | \newpage
|
---|
973 |
|
---|
974 | \begin{tabular}{ll}
|
---|
975 | \parbox{5cm}{Variable} & Description \\
|
---|
976 | \hline
|
---|
977 | & \\
|
---|
978 | CORSIKAPhs & Original photons written by {\it CORSIKA} \\
|
---|
979 | AtmAbsPhs & Photons absorbed by the atmosphere \\
|
---|
980 | MirrAbsPhs & Photons absorbed by the mirror \\
|
---|
981 | OutOfMirrPhs & Photons outside the mirror \\
|
---|
982 | BlackSpotPhs & Photons lost in the "black spot" \\
|
---|
983 | OutOfChamPhs & Photons outside the camera \\
|
---|
984 | CPhotons & Photons reaching the camera \\
|
---|
985 |
|
---|
986 | elec\_cph\_fraction & Fraction of C-photons produced by electrons \\
|
---|
987 | muon\_cph\_fraction & Fraction of C-photons produced by muons \\
|
---|
988 | other\_cph\_fraction & Fraction of C-photons produced by electrons \\
|
---|
989 | & \\
|
---|
990 | \hline
|
---|
991 | \end{tabular}
|
---|
992 |
|
---|
993 | \vspace*{1cm}
|
---|
994 | The event header is followed by 8-word blocks, one for each photon
|
---|
995 | that reaches the camera. A photon block contains the following
|
---|
996 | variables:
|
---|
997 | \vspace*{0.5cm}
|
---|
998 | \\
|
---|
999 | \begin{tabular}{ll}
|
---|
1000 | Variable & Description \\
|
---|
1001 | \hline
|
---|
1002 | & \\
|
---|
1003 | w & 100000 $\times$ Particle\_type + 1000 $\times$ n + Wavelength (nm) \\
|
---|
1004 | & Particle\_type indicates what particle produced the C-photon. Its value is 2 for electrons \\
|
---|
1005 | & and positrons, and the standard codes of Corsika for the rest. \\
|
---|
1006 | & n is the index from 1 to ICERML (see Corsika manual) for the case in which each Corsika \\
|
---|
1007 | & shower is used more than once (normally, in MMCS will be just 1). \\
|
---|
1008 | & \\
|
---|
1009 | x, y & Impact point in camera coordinates (cm) \\
|
---|
1010 | u, v & Director cosines of down-going versor indicating the photon direction \\
|
---|
1011 | t & Arrival time on camera (ns) \\
|
---|
1012 | h & Production height (cm) \\
|
---|
1013 | phi & Incidence angle with respect to camera plane (rad) \\
|
---|
1014 | & \\
|
---|
1015 | \hline
|
---|
1016 | \end{tabular}
|
---|
1017 | \vspace*{0.5cm}
|
---|
1018 | \\
|
---|
1019 | After the last event photon block there is a blank line, an \verb$END---EVENT$
|
---|
1020 | flag, another blank line and then the following event. After the last
|
---|
1021 | event in a run it appears the flag ``\verb$END-----RUN$'', while after all
|
---|
1022 | the processed runs, a ``\verb$END----FILE$'' flag is written. Finally,
|
---|
1023 | after this flag an ``ascii tail'' has been added to the file: it
|
---|
1024 | consists of the ascii files {\it magic.def}, {\it axisdev.dat} and {\it
|
---|
1025 | reflectivity.dat} one after the other separated by blank lines. In
|
---|
1026 | this way all the relevant parameters used to produce the output are
|
---|
1027 | kept together with the reflected events.
|
---|
1028 |
|
---|
1029 | %------------------------------------------------------------
|
---|
1030 |
|
---|
1031 | \section{Appendix A}
|
---|
1032 |
|
---|
1033 | The list of all Reflector files follows.
|
---|
1034 | \begin{verbatim}
|
---|
1035 |
|
---|
1036 | MagicProgs/Simulation/Detector/Reflector_0.6/Changelog
|
---|
1037 | MagicProgs/Simulation/Detector/Reflector_0.6/Makefile
|
---|
1038 | MagicProgs/Simulation/Detector/Reflector_0.6/atm.c
|
---|
1039 | MagicProgs/Simulation/Detector/Reflector_0.6/atm.h
|
---|
1040 | MagicProgs/Simulation/Detector/Reflector_0.6/attach.c
|
---|
1041 | MagicProgs/Simulation/Detector/Reflector_0.6/attenu.f
|
---|
1042 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux
|
---|
1043 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux-gnu
|
---|
1044 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.osf1
|
---|
1045 | MagicProgs/Simulation/Detector/Reflector_0.6/diag.c
|
---|
1046 | MagicProgs/Simulation/Detector/Reflector_0.6/diag.h
|
---|
1047 | MagicProgs/Simulation/Detector/Reflector_0.6/geometry.c
|
---|
1048 | MagicProgs/Simulation/Detector/Reflector_0.6/geometry.h
|
---|
1049 | MagicProgs/Simulation/Detector/Reflector_0.6/header.c
|
---|
1050 | MagicProgs/Simulation/Detector/Reflector_0.6/header.h
|
---|
1051 | MagicProgs/Simulation/Detector/Reflector_0.6/init.c
|
---|
1052 | MagicProgs/Simulation/Detector/Reflector_0.6/init.h
|
---|
1053 | MagicProgs/Simulation/Detector/Reflector_0.6/input.card
|
---|
1054 | MagicProgs/Simulation/Detector/Reflector_0.6/lagrange.h
|
---|
1055 | MagicProgs/Simulation/Detector/Reflector_0.6/parms.c
|
---|
1056 | MagicProgs/Simulation/Detector/Reflector_0.6/parms.h
|
---|
1057 | MagicProgs/Simulation/Detector/Reflector_0.6/ph2cph.c
|
---|
1058 | MagicProgs/Simulation/Detector/Reflector_0.6/refl-install
|
---|
1059 | MagicProgs/Simulation/Detector/Reflector_0.6/reflector.c
|
---|
1060 | MagicProgs/Simulation/Detector/Reflector_0.6/version.h
|
---|
1061 |
|
---|
1062 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.ps.gz
|
---|
1063 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.tex
|
---|
1064 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/magic-tdas.sty
|
---|
1065 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/magiclogo.eps
|
---|
1066 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/colimation.eps.gz
|
---|
1067 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma.eps.gz
|
---|
1068 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma_star.eps.gz
|
---|
1069 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coorsystems.eps.gz
|
---|
1070 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/evcompare.eps.gz
|
---|
1071 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/parabola.eps.gz
|
---|
1072 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/refl06images.eps.gz
|
---|
1073 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1694.eps.gz
|
---|
1074 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1700.eps.gz
|
---|
1075 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot_inf_f1697.eps.gz
|
---|
1076 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/telecoor.eps.gz
|
---|
1077 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/timing.eps.gz
|
---|
1078 |
|
---|
1079 | MagicProgs/Simulation/Detector/Reflector_0.6/tester/Makefile
|
---|
1080 | MagicProgs/Simulation/Detector/Reflector_0.6/tester/cermaker.c
|
---|
1081 |
|
---|
1082 | MagicProgs/Simulation/Detector/Data/axisdev.dat
|
---|
1083 | MagicProgs/Simulation/Detector/Data/magic.def
|
---|
1084 | MagicProgs/Simulation/Detector/Data/reflectivity.dat
|
---|
1085 |
|
---|
1086 | MagicProgs/Simulation/Detector/lib/libranlib.a.osf1
|
---|
1087 | MagicProgs/Simulation/Detector/lib/libranlib.a.linux
|
---|
1088 |
|
---|
1089 | \end{verbatim}
|
---|
1090 |
|
---|
1091 | %%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
1092 |
|
---|
1093 | %%>>>> Use the following if you are using BibTeX for bibliography
|
---|
1094 | %\theBibliography
|
---|
1095 |
|
---|
1096 | %%>>>> Or the following if you include here by hand your
|
---|
1097 | %%>>>> bibliographic entries
|
---|
1098 |
|
---|
1099 | \end{document}
|
---|
1100 | %
|
---|
1101 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
1102 | %%% Upper-case A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
---|
1103 | %%% Lower-case a b c d e f g h i j k l m n o p q r s t u v w x y z
|
---|
1104 | %%% Digits 0 1 2 3 4 5 6 7 8 9
|
---|
1105 | %%% Exclamation ! Double quote " Hash (number) #
|
---|
1106 | %%% Dollar $ Percent % Ampersand &
|
---|
1107 | %%% Acute accent ' Left paren ( Right paren )
|
---|
1108 | %%% Asterisk * Plus + Comma ,
|
---|
1109 | %%% Minus - Point . Solidus /
|
---|
1110 | %%% Colon : Semicolon ; Less than <
|
---|
1111 | %%% Equals = Greater than > Question mark ?
|
---|
1112 | %%% At @ Left bracket [ Backslash \
|
---|
1113 | %%% Right bracket ] Circumflex ^ Underscore _
|
---|
1114 | %%% Grave accent ` Left brace { Vertical bar |
|
---|
1115 | %%% Right brace } Tilde ~
|
---|
1116 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
---|
1117 | %% Local Variables:
|
---|
1118 | %% mode:latex
|
---|
1119 | %% mode:font-lock
|
---|
1120 | %% mode:auto-fill
|
---|
1121 | %% time-stamp-line-limit:100
|
---|
1122 | %% End:
|
---|
1123 | %% EOF
|
---|