source: trunk/MagicSoft/Simulation/Detector/ReflectorII/doc/Tdas0211.tex@ 10083

Last change on this file since 10083 was 1726, checked in by moralejo, 22 years ago
*** empty log message ***
File size: 65.8 KB
Line 
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\usepackage{amssymb}
36
37%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38%% BEGIN DOCUMENT
39%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
40\begin{document}
41
42%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43%% Please, for the formatting just include here the standard
44%% elements: title, author, date, plus TDAScode
45%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46\title{ The Reflector simulation program v.0.6 }
47\author{A.Moralejo\\
48 \texttt{<moralejo@pd.infn.it>}}
49\date{January 20, 2003\\}
50\TDAScode{MAGIC-TDAS 02-11\\ 030120/AMoralejo}
51%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
52
53%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54\maketitle
55
56%% abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57\begin{abstract}
58In this document we provide a brief description of Reflector program
59(version 0.6) and a guide to install and run it. Some of the
60information contained in this document is also present in MAGIC-TDAS
6102-05 dealing with the previous version of the program, but it has also
62been included here for clarity. Two important bugs regarding the
63ray-tracing routine have been corrected in this new version.
64\par
65NOTE: In December 2002, a first release of Reflector 0.6 was made,
66together with a first version of the present TDAS note. Immediately
67after that (too short a time to justify a new version number), some
68other changes were implemented in the program to improve the
69atmospheric absorption routines, and the dependence of mirror
70reflectivity with wavelength was introduced. This document is the
71manual of the final 0.6 version of the reflector, including
72explanations of these last modifications.
73
74\end{abstract}
75
76\newpage
77%% contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
78\thetableofcontents
79
80\newpage
81
82%% body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83
84%------------------------------------------------------------
85\section{Introduction}
86
87The Reflector program was originally written by Jose Carlos Gonz\'alez
88and then improved by Harald Kornmayer. The Reflector program reads in
89MMCS output files (cerxxxxxx files from corsika) and writes an output
90file with the information about all the photons which reach the
91telescope focal plane (taking into account atmospheric and mirror
92absorption) and which are within the camera radius defined in the file
93{\bf magic.def}. In September 2001 D. Bastieri and C. Bigongiari
94released a new version (v.0.4) to adapt the program to a format change
95in the MMCS output. In June 2002 the version 0.5 was released, with
96small changes in the ouput file format and some bug fixing (see TDAS
9702-05).
98\par
99The aim of releasing the present version 0.6 was in principle only to
100add some missing information in the output. However, the ray-tracing
101routine was checked in detail and some inconsistencies were
102found. As a result of this, an important bug was detected which
103produced a systematic blurring of all the images. Later another bug
104was found in the calculation of the photon arrival time on the
105camera.These bugs, fixed in this version, are discussed in detail in
106section \ref{notes}.
107
108%------------------------------------------------------------
109\section{Description of simulation \label{descrip}}
110
111The main steps of the simulation are:
112
113\begin{enumerate}
114
115\item Atmospheric absorption.
116
117\item Checking if the photon hits the dish.
118
119\item Aluminum absorption.
120
121\item Determination of the mirror hitted.
122
123\item Mirror reflection.
124
125\item Checking if the photon is inside the camera borders.
126
127\item Calculation of photon arrival time on camera.
128
129\end{enumerate}
130
131The reflection of each mirror element is simulated in a realistic way
132by introducing a gaussian spread of the reflected photons positions on
133the camera plane. The sigma of this PSF is defined via the
134{\bf point\_spread} parameter in the telescope description file {\bf
135magic.def}, and has a value of 0.5 cm, which corresponds approximately
136to the quality of the MAGIC mirrors produced up to date. Also the
137possible misalignment of mirror elements is simulated (see section
138\ref{neededfiles}).
139
140\section{Notes on version 0.6 \label{notes}}
141
142\subsection {First bug fixed in the ray tracing}
143
144The previous versions of the reflector were extensively checked and a
145strange behaviour was found in them. It is a well known fact (see for
146instance the discussions in the MAGIC design report) that, to focus a
147telescope on an object placed at a finite distance, one has to shift
148the camera plane {\it away} from the mirror dish, with respect to the
149position in which an object at infinity (a star) would be
150focused (see fig. \ref{colimation}). For instance, with a paraboloid
151of focal distance f = 1697 cm, an object placed 10 km above the
152telescope would be focused on a plane at $\simeq 1700$ cm from the
153dish (a distance measured along the telescope axis).
154%
155\begin{figure}[h!]
156 \begin{center}
157 \epsfig{file=eps/colimation.eps,width=0.7\textwidth}
158 \caption{To focus an object at a finite distance h, the camera
159plane must be moved away from the mirror a distance d, given
160(approximately) by the formula on the right. For MAGIC, the shift is
161of around 3 cm for a source located 10 km above the
162telescope.\label{colimation}}
163 \end{center}
164\end{figure}
165%
166\par
167With reflector program up to version 0.5, and using the mirror
168parameters in the standard magic.def file, we found out just the
169opposite behaviour. We wrote a program to produce files with the same
170structure as the Corsika Cherenkov output, but containing photons from
171a point source. If we set the source at infinity, we found the best
172spot placing the camera at a distance of 1697 cm (this can be changed in
173the magic.def file via the {\it focal\_distance} parameter). We can
174see the resulting spot in fig. \ref{spot_inf_f1697}. A completely
175independent ray-tracing program was used to verify that this is the
176spot that a f/1 16.97 m $\varnothing$ tesellated paraboloid should produce.
177%
178\begin{figure}[h]
179 \begin{center}
180 \epsfig{file=eps/spot_inf_f1697.eps,width=0.85\textwidth}
181 \caption{Image of a point like source placed at infinity with
182Reflector 0.5 (units of x and y are cm). Camera plane placed at 1697 cm
183from the mirror. The circle on the left indicates (small) pixel
184size. On the right side, projections on x and y of the
185spot. \label{spot_inf_f1697}}
186 \end{center}
187\end{figure}
188%
189If we now
190place the source 10 km above the telescope, the best spot is achieved
191at 1694 cm from the dish, instead of the expected 1700 cm
192(figs. \ref{spot10kmf1700} and \ref{spot10kmf1694}). It must be
193noted that for these and the following checks we removed all the
194gaussian smearing which the program introduces to simulate the
195possible mirror misalignments and surface irregularities (by the way,
196a feature which somehow optimistically was not included in the
197simulations shown in the MAGIC proposal). In this way we can check
198just the ray tracing.
199%
200\begin{figure}[h!]
201 \begin{center}
202 \epsfig{file=eps/spot10kmf1700.eps,width=0.85\textwidth}
203 \caption{Image of a point like source placed 10 km above the
204telescope with Reflector 0.5 (units of x and y are cm). Camera plane
205placed at f = 1700 cm from the mirror. The fact that the spot is so large
206indicates a problem in the simulation, since with this camera position
207the telescope should be focused at 10 km (see
208fig. \ref{spot_inf_f1697}) and hence produce a spot similar to the one
209shown in fig. \ref{spot_inf_f1697}. The hole in the middle of the spot
210corresponds to the hole in the mirror dish, and indicates by itself a
211focusing problem.
212\label{spot10kmf1700}}
213 \end{center}
214\end{figure}
215%
216\begin{figure}[h!]
217 \begin{center}
218 \epsfig{file=eps/spot10kmf1694.eps,width=0.85\textwidth}
219 \caption{Image of a point like source placed 10 km above the
220telescope with Reflector 0.5 (units of x and y are cm). Camera plane
221placed at f = 1694 cm from the mirror. Now the spot is small, but the
222camera plane is not at the expected position (see text).
223\label{spot10kmf1694}}
224 \end{center}
225\end{figure}
226%
227\par
228In order to rule out a possible mistake in the generation of the
229``false'' Cherenkov files, we repeated the check using real Corsika
230files, and directly looking at shower images ($\Theta = 10^\circ$
231incident gammas with a Crab-like spectrum). We must bear in mind that
232the shower maximum for gammas of 100 GeV lies around 10 km above the MAGIC
233level. From the result we can clearly see that the images are best
234focused at 1694 cm (fig. \ref{evcompare}), therefore confirming the
235existence of a real problem in the reflector simulation.
236%
237\begin{figure}[p]
238 \begin{center}
239 \epsfig{file=eps/evcompare.eps,width=0.85\textwidth}
240 \caption{Gamma shower images obtained with Reflector 0.5 placing
241the camera at 1700 cm (left) and 1694 cm (right) from the mirror
242dish. Primary gammas at $\theta = 10^\circ$, E = 16, 46 and 232 GeV.
243\label{evcompare}}
244 \end{center}
245\end{figure}
246%
247\paragraph {Check of the mirror parameters in the magic.def file\\}
248In the standard magic.def file we have been using up to now, the
249spherical mirrors centers were found to be distributed on the surface
250of a f = 1700 cm paraboloid. Their curvature radii, though discretized
251in 8 ``zones'' as explained in the design report, corresponded in
252average to the local mean curvature radius of the same parabolic
253surface. However, their orientations were those corresponding to a f =
2541697 cm paraboloid. Personally I do not think this is something
255intended, and looks more like an error, but anyway we checked that this
256was not the reason for the problems in the ray tracing: a test
257magic.def file was created with {\it all} the mirror parameters
258(positions, orientations and radii of curvature)
259calculated as for a f = 1697 cm paraboloid, and no significant
260difference could be seen. That
261is: i) the individual mirror orientations are the dominant factor, and
262the overall dish in the old reflector behaved indeed like a f = 1697
263cm parabolic
264mirror, and ii) the bug must be somewhere else. Even though the error
265was not there, a new magic.def file has been produced containing the
266parameters for the 956 mirrors of the final MAGIC design (instead of
267the 920 mirrors foreseen in the beginning).
268%
269\paragraph {Solution of the problem\\}
270Finally, a check of the routines in {\it ph2cph.c} revealed that the
271reflector program was actually misinterpreting the information read
272from the Cherenkov file written by Corsika. In figure \ref{coorsystems}
273we can see the definition of Corsika's coordinate system (see also the
274Corsika manual). In it, the x axis points north and the z axis points
275up. The zenith angle $\Theta$ of a particle trajectory is measured
276between the particle momentum and the negative z-axis, and the
277azimuthal angle $\Phi$ between the positive x-axis and the x-y
278component of the particle momentum, counterclockwise (0 -
2792$\pi$). When the direction cosines of a particle's trajectory are
280given, they refer also to its momentum vector (a downgoing
281vector)\footnote{In Corsika the third component of the momentum is
282measured along the negative z-axis and this is probably the origin of
283the confusion which resulted in the bug}. The same is true for the
284Cherenkov photons.
285%
286\begin{figure}[h]
287 \begin{center}
288 \epsfig{file=eps/coorsystems.eps,width=\textwidth}
289 \caption{Coordinate systems of Corsika and MAGIC.\label{coorsystems}}
290 \end{center}
291\end{figure}
292%
293\begin{figure}[h!]
294 \begin{center}
295 \epsfig{file=eps/parabola.eps,width=0.6\textwidth}
296 \caption{Misunderstanding of photon direction cosines from Corsika
297by Reflector v 0.5 and older versions.\label{parabola}}
298 \end{center}
299\end{figure}
300%
301Unfortunately, in the output of Corsika, only the direction cosines
302(u, v) with respect to the x and y axis are given. These completely
303determine the particle's trajectory as long as one knows that they
304refer to a downgoing versor, in which case one gets the third
305direction cosine as $w = -\sqrt{1-u^2-v^2}$, with a minus sign. However,
306in {\it ph2cph.c} we found exactly the opposite (lines 116 to 118 in
307v.05):
308
309\begin{verbatim}
310 r[0] = ph->u;
311 r[1] = ph->v;
312 r[2] = (float) sqrt(1.0 - r[0]*r[0] - r[1]*r[1]);
313\end{verbatim}
314
315This means that the program was interpreting u and v as the direction
316cosines of the {\it upgoing} versor towards which one should ``look''
317to see the incoming photon. The situation is depicted in figure
318\ref{parabola}. The two vectors at the bottom left of the plot are the
319two possible interpretations of the direction cosines u and v. These
320vectors have the same u and v, and differ only in the sign of their
321third components w. As the figure illustrates, the reflector
322simulation, by taking the wrong (positive) sign of w, was transforming
323the light coming from a point source 10 km away, into a convergent
324light beam which was then focused at a distance (1694 cm),
325shorter than the focal length of the paraboloid, and produced a
326blurred image at the theoretically optimal distance (1700 cm). Of
327course a paralel beam of light was focused at the right distance (1697
328cm) since in that case u = v = 0, and both the upgoing and downgoing
329versors have the same direction.
330\par
331The example in figure \ref{parabola} shows the case in which the
332telescope is pointing at zenith. It is easy to see that if the
333telescope was pointing in an arbitrary direction a few degrees away
334from zenith, the fact of taking the wrong sign in the third direction
335cosine would spoil the reflection completely, to the point that the
336spot would lie outside the camera limits. However, this is not what we
337observed: when using the older reflector versions for different zenith
338angles the images were still contained in the camera. The explanation
339is that the transformation between Corsika's coordinates system and
340the telescope system was also wrong, since the angles $\Phi$ and
341$\Theta$ which indicate the telescope orientation (see fixed\_target
342option in section \ref{commands}) follow the same convention taken
343from Corsika: for instance, for pointing the telescope towards North
344we should set $\Phi = 180^\circ$, because that would be the $\Phi$
345value for a particle or photon coming from North (see again
346fig. \ref{coorsystems}, left). This wrong transformation of coordinates
347oriented the telescope in a way that the situation was always like the
348one shown in fig. \ref{parabola}, and the image was formed in the
349camera also for $\Theta > 0$, though also defocused.
350\par
351The telescope coordinate system shown in figure \ref{coorsystems}
352(right) has its z-axis along the telescope axis, and the origin in the
353center of the mirror dish. This system is used in the ray tracing
354routine of the reflector simulation. When the telescope points up
355($\Theta = \Phi = 0$) this system matches exactly the one in Corsika.
356The general transformation between both is a simple rotation,
357since for the sake of simplicity we assume in the simulation that the
358origins always coincide. As we have said, in Reflector v.05 or older the rotation
359matrix was wrong: it had been written assuming that ($\Phi$, $\Theta$)
360indicated the direction towards which the telescope pointed. Actually,
361for the reasons already exposed, the telescope must point to
362($\Phi +\pi$, $\Theta$). The function in charge of building the rotation
363matrix is {\it makeOmega} (a part of {\it ph2cph.c}), which is called
364from {\it reflector.c}. For the present version we have simply
365replaced $\Phi$ by $\Phi + \pi$ in the function call. The transformation of
366coordinates is shown in figure \ref{telecoor}, and can be seen as a
367rotation of angle $\Phi +\pi$ around the z axis of Corsika plus a
368rotation of angle $\Theta$ around the y'' axis of the telescope (the
369same way in which the real MAGIC points).
370%
371\paragraph {New coordinate system of the camera \label{newcoordi}}
372We have introduced another change in Reflector 0.6 regarding the
373coordinates. In versions up to 0.5 the coordinates ($x_{camera}$,
374$y_{camera}$) of the photon impact point on the camera plane were
375given in the telescope system (x'', y'', z'') described in
376fig. \ref{coorsystems}. This was a bit confusing (a rotation of the
377telescope in the zenith axis resulted in a displacement in x'' of the
378images), in particular it would have been messy when working in wobble
379mode. We have now adopted the camera coordinate system proposed in
380TDAS 01-05: when the observer is looking from the center of the
381reflector in the direction of the telescope axis (towards the camera)
382the $x_{camera}$ axis points horizontally to the right, and the
383$y_{camera}$ axis points upwards. It is trivial from figure
384\ref{telecoor} to see that the transformation needed to obtain these
385coordinates is: $x_{camera} = -y''$, $\:y_{camera} = -x''$. This has been
386added at the end of {\it ph2cph.c}.
387%
388\begin{figure}[h]
389 \begin{center}
390 \epsfig{file=eps/telecoor.eps,width=\textwidth}
391 \caption{Transformation of coordinates between the Corsika and
392MAGIC coordinate systems.\label{telecoor}}
393 \end{center}
394\end{figure}
395%
396\paragraph {How old was the ray-tracing bug?\\}
397%
398The bug was certainly present in versions 0.4 and 0.5, but may be even
399older. Nevertheless, there is no doubt that the reflector program used
400for the simulation shown in the MAGIC design report was working
401fine. Extensive proof
402of this is provided in an appendix of the design report. A plausible
403explanation could be that, up to some date, the data being read in by
404the reflector program (the Corsika output) contained direction cosines
405which really referred to the upgoing versors of the photon directions,
406and until then the program worked well. Then may be the output of
407Corsika was changed to its present form, and the change went unnoticed.
408The Corsika version used then was 4.52, whereas all further work has
409been done with Corsika 5.20 or later versions. The Corsika history
410file shows no record of any change in this respect, but given that we
411have always used a slightly modified Corsika, it would not be
412surprising if the Cherenkov output was modified at some point in the
413MAGIC version of Corsika (MMCS). There is no documentation on this, so
414if anyone has any relevant information, please make it public.
415%
416\paragraph {Influence of the bug on image analysis\\}
417The fixing of the bug (resulting in sharper images) will for sure
418improve the results of the image analysis, in particular with regard
419to gamma / hadron separation. This could in part explain the
420differences we have been observing in the expected performance of
421MAGIC with respect to what was foreseen in the design report. However,
422we note here again that in the simulation used there, not only was the
423reflector working well, but also no noise was introduced in the
424reflecting process. This was surely too optimistic, and it implies
425that it will be hard to reproduce those results using a more realistic
426approach which accounts for mirror imperfections. However, the
427introduction of the noise (fig. \ref{refl06images}) has a less
428dramatic effect than the defocusing which the bug was producing.
429%
430\subsection {Performance of ray-tracing in the new version}
431In figure \ref{coma} we show the images of a point-like source at 10
432km from the telescope, produced with the Reflector version 0.6,
433and using the new version of the magic.def file (see see next
434section). No noise has been introduced in the reflection, the observed
435spots are just the result of optical aberrations. The light source has
436been put at slightly different viewing angles
437from the telescope. The results are comparable to those in the design
438report, actually these are a bit better, the difference probably being
439that the focal lengths of the mirror tiles in the older magic.def file
440were discretized in only eight values, while now they change rather
441continuously. Some images of a point source at infinity (a star) can be
442seen in fig. \ref{coma_star}. We can see that for any incidence angle,
443the area within which 50$\%$ of the light is concentrated is smaller
444than that of a small pixel.
445\par
446In figure \ref{refl06images} the images of three gamma events ($\theta
447= 10^\circ$, E = 16, 46, 232 GeV), the same of fig. \ref{evcompare}
448are shown. They have been produced with Reflector 0.6 assuming perfect
449spherical mirrors (left) and realistic ones (right). The images look
450reasonable, much sharper than with the older versions, even when the
451mirror imperfections are taken into account.
452%
453\begin{figure}[h!]
454 \begin{center}
455 \epsfig{file=eps/timing.eps,width=\textwidth}
456 \caption{Test of reflector isochrony. The arrival time
457distributions of photons in the camera are shown for (buggy) Reflector
4580.5 and for Reflector 0.6. The sketch in the center shows the test for
459the case in which the light beam is paralel to the telescope axis
460(left plot). On the right, the same test has been made with light
461arriving 1 degree off axis.
462 \label{timing}}
463 \end{center}
464\vspace*{-1cm}
465\end{figure}
466%
467\subsection {Second bug: photon timing}
468%
469After a first release of Reflector 0.6 had been made public, another
470important bug was found. We tried to check whether the simulated
471reflecting dish was really ``isochronous''. A paralel beam of photons,
472all sharing the same arrival time on the ground, were processed by the
473simulation program and their arrival times on the camera plane were
474histogrammed. The result can be seen in fig. \ref{timing} (dashed
475histograms). This time the bug was quite evident: since Corsika gives
476us the arrival time of photons on ground, the path from the point
477where the photon hits the dish to the ground has to be subtracted (or
478added, because since the center of the dish in the MC is at $z = 0$,
479the mirror reflecting the photon may have $z < 0$ when the dish is
480inclined). The sign in this subtraction (in {\it ph2cph.c}) was
481wrong. This bug was present in both versions 0.5 and 0.4, and might
482be related to the other one (a change of orientation of the z axis
483at some point may have produced it). Since in the simulation made for
484the design report the timing played little or no role (the camera
485simulation did not consider the arrival times of photons) it is not
486possible to know whether the bug was already in the code by then.
487\par
488This bug means that all the studies made up to now regarding photon
489arrival times on the camera are completely useless (for instance, the
490optimization of the time parameters in the L1 trigger has to be redone
491from scratch!).
492%
493\subsection{The new magic.def file}
494A new magic.def file (see sect. \ref{neededfiles}) has been created
495and included in the Reflector 0.6 package. Now the number of
496individual mirror tiles is 956, matching
497the number and distribution of the final MAGIC design. The mirror
498centers and orientations are those corresponding to a paraboloid of
4991697 cm focal (hence the camera plane is placed at 1700 cm from the
500dish). The focal lengths have been calculated by R. Mirzoyan taking
501into account the so called ``shortening effect'' (see design report).
502A new axisdev.dat file (se again \ref{neededfiles}) with data for the
503956 mirrors is also included.
504%
505\subsection{The new reflectivity.dat file}
506Up to version 0.5 of the program, the reflectivity of the mirrors
507(which the program reads in from the file reflectivity.dat) was
508considered to be equal to $90\%$ for all wavelengths. Following
509measurements performed in Padua of a mirror sample, the reflectivity
510has been found to be between 80 and 90$\%$ in the range from 280 to 650 nm,
511with a dependence on wavelength which is shown in figure \ref{reflec}.
512%
513\begin{figure}[h!]
514 \begin{center}
515 \epsfig{file=eps/reflec.eps,width=0.7\textwidth,height=0.4\textwidth}
516 \caption{Reflectivity of the MAGIC telescope mirrors as a
517function of the wavelength of the incident light. The dip around 350
518nm is due to destructive interference of the light reflected on the
519aluminum plate with that reflected on the protective coating of the
520mirror. \label{reflec}}
521 \end{center}
522\end{figure}
523%
524\begin{figure}[p]
525 \begin{center}
526 \epsfig{file=eps/coma.eps,width=0.85\textwidth}
527 \caption{Reflector 0.6. Images of a point-like source at
52810 km from the telescope for different incident angles (from on-axis
529to 2 degrees off-axis). The quantity d50 indicates the diameter of a
530circle (plotted) containing 50$\%$ of the reflected light. Note that
531the z-axis scale is logarithmic, and the same in the first five
532plots. The last plot shows the x-axis projections in linear scale.
533 \label{coma}}
534 \end{center}
535\vspace*{-1cm}
536\end{figure}
537%
538\begin{figure}[p]
539 \begin{center}
540 \epsfig{file=eps/refl06images.eps,width=0.85\textwidth}
541 \caption{Reflector 0.6. Images of the three gamma showers shown in
542fig. \ref{evcompare}, without noise added in the reflection (left) and
543with the standard noise (right) as described in section
544\ref{descrip}. Note that the orientation of the images has changed as a
545result of the introduction of a new camera coordinate system (see page
546\pageref{newcoordi}).
547 \label{refl06images}}
548 \end{center}
549\vspace*{-1cm}
550\end{figure}
551%
552\begin{figure}[p]
553 \begin{center}
554 \epsfig{file=eps/coma_star.eps,width=0.85\textwidth}
555 \caption{Reflector 0.6. Images of a star. The quantity d50
556indicates the diameter of a circle (plotted) containing 50$\%$ of the
557reflected light.
558 \label{coma_star}}
559 \end{center}
560\vspace*{-1cm}
561\end{figure}
562%
563\subsection{The {\itshape cermaker} program}
564A test program to produce cer files (input for the reflector)
565containing photons from a point-light source of light placed in any
566position has been added to the Reflector package {\it
567(tester/cermaker.c)}. This is the same program used to produce the
568plots shown in this report. The usage is as follows:
569\begin{verbatim}
570cermaker source_x(cm) source_y(cm) source_z(cm) [events]
571\end{verbatim}
572The source position is given with respect to the telescope. The output
573file is called {\it cer000001}, and can be read by the reflector program.
574%
575\subsection{Changes in the atmospheric absorption routines}
576%
577In the present version of the program, the simulation of atmospheric
578absorption has undergone major changes with respect to the original
579implementation by J.C. Gonz\'alez and Aitor Ibarra. Three options are
580available in the simulation: ATM\_NOATMOSPHERE, ATM\_90PERCENT and
581ATM\_CORSIKA (see section \ref{commands}). In the
582first two, 100$\%$ and 90$\%$ of the emitted light respectively
583reaches the telescope mirror, regardless of the emission height. The
584changes in the present version affect only the third option, which is
585the recommended one for running reflector in the standard MAGIC MC
586production. In this case, a detailed estimate of the atmospheric
587transmission is done.
588\par
589Three contributions to the atmospheric opacity
590are considered: Rayleigh scattering, Mie scattering by aerosols, and
591absorption by ozone. Details on how the effect of these three
592components is calculated are given in appendix A. In reflector
593versions older than 0.6,
594due to a bug, the contribution of Mie scattering and Ozone absorption
595was slightly overestimated because the vertical height of the emission
596point above sea level was interpreted as height above the
597telescope. The difference is small, since the density of the aerosols
598responsible for Mie scattering decreases very fast with height and
599therefore the absorption is hardly increased by going up 2.2 km in the
600region were most of the Cherenkov light is produced. In the case of
601ozone, its contribution is only important in the very low end of the
602Cherenkov light spectrum, and so the effect of the bug in the total
603amount of light reaching the telescope is negligible. Another change
604is that now the observation level is read in from the cer file, instead
605of being a fixed parameter in the routines. In this way the reflector
606program has become more flexible, and can now be used to process cer
607files produced for a detector at a different observation level.
608\par
609Another problem in the old implementation of absorption was that the
610variation of the optical depth of the atmosphere with the zenith angle
611$\theta$ was assumed to be the same for Mie scattering, ozone
612absorption and Rayleigh scattering: the so called {\it air
613mass} (see appendix A for details) was therefore calculated only once,
614using the overall density profile of air molecules (which does not
615match that of aerosols or ozone), and used to account for the
616variation of all three effects with $\theta$, while rigorously
617speaking it is only valid for Rayleigh scattering. Now, the simulation
618of Mie scattering and ozone absorption has been moved from {\it
619attenu.f} to {\it atm.c} and is done in a more accurate way which
620takes into account the vertical profile of aerosols and ozone (see
621appendix A for details).
622%
623\subsection{Other changes in Reflector 0.6}
624
625Some other minor improvements have been introduced in Reflector 0.6:
626
627\begin{enumerate}
628
629\item reflector.c: Introduced NaN (Not a Number) check in the photon
630loop. If NaNs are found in a photon data block (there are some in the
631Corsika output from time to time, for unkown reason), it is not processed.
632
633\item ph2cph.c: Introduced "check of positiveness" before taking a
634square root in the calculation of the photon trajectory intersection
635with the paraboloid (resulted sometimes in NaNs when the photon did
636not intersect the paraboloid).
637
638\item Added an option for the wobble mode in the input card (see
639section \ref{opt}).
640
641\item New output format (see sect. \ref{out}): we have removed a null
642byte that was written immediately after the ascii label containing the
643reflector program version number at the begining of the file. This
644byte was there for historical reasons and had no function
645whatsoever. Then we have added a Run header, which is like that of
646Corsika, plus a couple of variables concerning the reflector
647parameters: the wobble mode and the atmospheric model
648used for the simulation. The event header has also been changed to
649include all the information present in the Corsika event
650header. We also added in the event header three new variables which
651tell us for each event what fraction of the Cherenkov photons on the
652camera plane has been produced by electrons, muons, or other
653particles.
654\par
655Finally, the ascii files {\it magic.def}, {\it
656axisdev.dat} and {\it reflectivity.dat} which the program has used as
657input are now attached at the end of the output file, so that each
658output file contains all the relevant information on how it was
659produced.
660
661\end{enumerate}
662
663%------------------------------------------------------------
664\section{How to Install Reflector Program \label{installation}}
665
666You can get the current version of the Reflector Program from the
667MAGIC web page: \\
668{\bf http://hegra1.mppmu.mpg.de/MAGICWeb/ }\\
669You can find
670the latest public version of this program as tarred gzipped file in
671the Monte Carlo Download area (you need the usual password). You have to
672download the file reflector\_0.6.tar.gz and then follow the
673instructions below:
674
675\begin{description}
676\item[Decompress the file using:]
677 gunzip reflector*.tar.gz
678\item[Unpack the tar file with:]
679 tar xvf reflector*.tar
680\item[Go to the directory where the source files are:]
681 cd MagicProgs/Simulation/Detector/Reflector\_0.6/
682\item[Make symbolic links running the script:]
683 refl-install
684\item[Check if all dependencies are fulfilled:]
685 make depend
686\item[Compile the program:]
687 make
688\end{description}
689
690If everything goes right you should have an executable file called
691{\bf reflector}.
692
693%------------------------------------------------------------
694\section{How to Run Reflector Program \label{running}}
695
696You need a steering card to run the Reflector program. You can find an
697example in the {\bf MagicProgs/Simulation/Detector/Reflector\_0.6/input.card}
698file. You have to modify this file according to your needs (see below
699for instructions about steering card) and then run the program with the
700following statement:\\
701
702\hspace{1cm}{\bf reflector $<$ input.card}
703
704%------------------------------------------------------------
705\section{Needed Files \label{neededfiles}}
706
707The Reflector program needs some other files to run. These files are
708the following:
709\begin{itemize}
710\item {\bf magic.def}: contains the description of MAGIC telescope
711geometry, together with some other parameters needed by the Reflector
712program.
713\item {\bf axisdev.dat}: contains data to simulate the possible
714deviation of the spot of each single mirror on the camera plane due
715to its non perfect alignment. The values are x, y coordinates
716distributed at random (according to a gaussian with $\sigma =
7170.5$ cm).
718\item {\bf reflectivity.dat}: contains the mirror reflectivity index as
719a function of the wavelength.
720\end{itemize}
721
722All these files (included in the reflector package) are usually kept
723in the {\bf MagicProgs/Simulation/Detector/Data/} directory and {\it
724in principle} you should {\bf not} make any change in them to run the
725program.
726
727%------------------------------------------------------------
728\section{Steering Card}
729
730The steering card sets all the parameters and options
731to steer the reflection simulation. Each line of the steering card is
732a statement with its parameters, if it is the case. Lines beginning
733with \# are considered comments. The Reflector program parses all the
734lines sequentially. Then if you repeat a statement with different
735options only the last one will be considered.
736
737\subsection{Mandatory Commands \label{commands}}
738
739\begin{description}
740
741\item[reflector 0.6]
742
743 This statement must be the first line of the steering card
744 file. The Reflector program checks it to verify if it is reading
745 a steering card.
746
747\item[output\_file /disk99/reflex/Gamma\_0\_7\_1001to1010\_w0.rfl]
748
749 The output\_file command specifies the name and the
750 path of the output file. The path can be absolute, like in the
751 example above, or relative. Although any name can be used,
752 conventionally the Reflector program
753 output file name has the .rfl extension, and starts with
754 the primary particle name. The first number indicates the
755 zenith angle of the incident primaries, the second one
756 indicates the production site (7 is for Padua) and is related
757 to the random number generator seed used by CORSIKA. Then the run
758 number range is shown (10 runs in this case, from 1001 to
759 1010). Each run corresponds to 10000 showers. Finally, the
760 label "w0" means no wobble mode was used (telescope pointing
761 at the source). Alternatively, the "w+" or "w-" labels (only
762 in gamma files) refer to the two pointings in the
763 Wobble-observation mode (see TDAS 01-05 by W. Wittek).
764
765\item[ct\_file /path/magic.def]
766
767 The ct\_file statement defines where the program can find the
768 telescope characteristics. Usually, the magic.def file is kept in
769 MagicProgs/Simulation/Detector/Data
770
771\item[atm\_model ATM\_CORSIKA]
772
773 The atm\_model statement tells the program what kind of
774 atmospheric absorption model to use. Possible choices are:
775 ATM\_NOATMOSPHERE,\\ ATM\_90PERCENT and ATM\_CORSIKA,
776 corresponding respectively to no absorption, a 10$\%$
777 absorption and a model using the US Standard atmosphere (see
778 Corsika manual, appendix C) for the Rayleigh scattering and a
779 model by L. Elterman \cite{elterman64,elterman65} for the Mie
780 scattering and ozone absorption (see appendix A). The third
781 model should be chosen for the standard MC MAGIC production.
782
783\item[cer\_files]
784
785 All the lines following this statement are considered files to
786 be processed by the Reflector program, one for each line,
787 eventually with their paths (see the example below). Therefore this
788 command must be the last one.\\
789 \\
790 cer\_files\\
791 /disk99/cer001001\\
792 /disk99/cer001002\\
793 /disk99/cer001003\\
794 ........ \\
795 /disk99/cer001009\\
796 /disk99/cer001010\\
797 \\
798 The cer file name can be followed by two numbers, for example:
799 \\
800 /disk99/cer001001 376 5723\\
801 \\
802 In this case the program processes only the events between and
803 including the numbers given.
804
805\end{description}
806
807\subsection{Optional Commands \label{opt}}
808
809\begin{description}
810
811\item[verbose\_level 1]
812
813 Sets the quantity of information printed out by Reflector
814 when running. Possible values are 0 to 4
815
816\item[max\_events 50000]
817
818 Fixes the maximum number of events to process.
819
820\item[energy\_cuts 100 1000]
821
822 This statement forces the Reflector to process only showers
823 with primary energy between the given values (GeV).
824
825\item[seeds n1 n2]
826
827 Seeds for the random number generators to used by the program
828 for the simulation of the absorption (both in the atmosphere
829 and on the mirror). Default values are 3141592 and
830 2718182.
831
832\item[telescope\_position x y]
833
834 Option included in version 0.5 of Reflector. Usually it is
835 not needed, since for normal MC production for MAGIC the
836 telescope is placed at the origin of coordinates (0,0). But,
837 if for some reason, we produce cerxxxxxx files with the
838 telescope in a different position, we must inform the
839 Reflector program in the input card using this option
840 (otherwise Reflector will fail to {\it find} the photons
841 in the cer file).
842
843\item[reflectivity\_file /path/reflectivity.dat]
844
845 File containing mirror reflectivity as a function of
846 wavelength (see section \ref{neededfiles}). If this option is
847 not supplied, the program will look for \\
848 ``../Data/reflectivity.dat'' as previous versions of
849 Reflector did.
850
851\item[axisdev\_file /path/axisdev.dat]
852
853 File containing single mirror spot deviation in {\bf x} and
854 {\bf y} on the camera in cm (see section
855 \ref{neededfiles}) for each mirror. If this option is not
856 supplied, the program will look for ``../Data/axisdev.dat''
857 as previous versions of Reflector did.
858
859\item[fixed\_target $\Theta$ $\Phi$]
860
861 This statement fixes the telescope axis position. The first
862 number is the zenith angle $\Theta$ (deg) while the second is
863 the azimuthal angle $\Phi$ (deg). This corresponds to {\it
864 CORSIKA}'s definition of primary particle incident direction
865 (see fig. \ref{coorsystems}, left). For instance, $\phi = 90^\circ$
866 means that the telescope is pointing towards East. If this
867 option is omitted the telescope will always point in the
868 direction of the Corsika primary (whatever it is), or a
869 slightly modified direction if the wobble\_mode option is used
870 (see next point). When running the reflector over gamma data
871 generated in a range of zenith angles, one should therefore
872 ommit the fixed\_target option.
873
874\item[wobble\_mode w]
875
876 Indicates whether the reflection should be done in the wobble
877 mode, that is, with shifted pointing with respect to the
878 nominal telescope orientation (given by fixed\_target or
879 otherwise, see above). The wobble mode is described in TDAS
880 01-05. Possible values for w are 0 (no wobble mode), 1, -1
881 (image shift along $x_{camera}$ axis) and 3 (image shift along
882 $y_{camera}$ axis).
883
884\end{description}
885
886%------------------------------------------------------------
887
888\section{Output file \label{out}}
889The reflector output file begins with two ascii lines, the first of
890which informs us of the program version with which it has been
891produced (NOTE: in the following, the dollar symbol \verb"$" stands
892for a carriage return):\\
893\\
894\verb"reflector 0.6$START---RUN$" \\
895\\
896Then there is run header which is basically the one from Corsika with
897two added variables, {\it wobble\_mode} and {\it
898atmospheric\_model}. Check the Corsika manual for the meaning and
899units of the rest of them. All of the variables are 4-byte real numbers
900except the first, which is a 4 character string containing the run
901header ascii label from Corsika:
902\vspace*{0.5cm}
903\\
904%
905\begin{tabular}{lll}
906\multicolumn{2}{c}{Variable} & Description \\
907\hline
908&& \\
9091 & ASCII Label & 'RUNH' \\
9102 & RunNumber & \\
9113 & date & \\
9124 & Corsika\_version & \\
9135 & NumObsLev & \\
9146 to 15 & HeightLev[10] & \\
91516 & SlopeSpec & \\
91617 & ELowLim & \\
91718 & EUppLim & \\
91819 & EGS4\_flag & \\
91920 & NKG\_flag & \\
92021 & Ecutoffh & \\
92122 & Ecutoffm & \\
92223 & Ecutoffe & \\
92324 & Ecutoffg & \\
92425 to 74 & C[50] & \\
92575 & wobble\_mode & Wobble mode with which the reflector was run (TDAS
92601-05) \\
92776 & atmospheric\_model & Atmospheric model used for the absorption
928simulation \\
929&& 0 = no atmosphere; 1 = atm\_90percent; \\
930&& 2 = atm\_corsika. \\
93177 to 94 & dummy1[18] & not used \\
93295 to 134 & CKA[40] & \\
933135 to 139 & CETA[5] & \\
934&\\
935\hline
936\end{tabular}
937
938\newpage
939
940\begin{tabular}{lll}
941\multicolumn{2}{c}{Variable} & \parbox{11cm}{Description} \\
942\hline
943&& \\
944140 to 140 & CSTRBA[11] & \\
945151 to 254 & dummy2[104] & not used \\
946255 to 259 & AATM[5] & \\
947260 to 264 & BATM[5] & \\
948265 to 269 & CATM[5] & \\
949270 to 273 & NFL[4] & \\
950&\\
951\hline
952\end{tabular}
953\vspace*{0.5cm}
954\\
955%
956Then there comes a carriage return followed by the ascii flag which
957indicates the start of an event, and again a carriage return:\\
958\\
959\verb"$START-EVENT$"\\
960\\
961and then the binary event header. Each variable is a 4-byte
962float number except for the first one which is the event header label
963from Corsika (a string of 4 characters). Some of of the variables from
964Corsika are not explained here (see Corsika manual instead).
965\vspace*{0.5cm}
966\\
967\begin{tabular}{lll}
968\multicolumn{2}{c}{Variable} & Description \\
969\hline
970&& \\
9711 & ASCII label & 'EVTH' \\
9722 & EvtNumber & Event Number \\
9733 & PrimaryID & Primary particle identification code \\
9744 & Etotal & Primary particle total energy (GeV) \\
9755 & Thick0 & CORSIKA's starting altitude in g/cm2 \\
9766 & FirstTarget & CORSIKA's number of first target if fixed \\
9777 & zFirstInt & Height of first interaction in cm \\
9788 to 10 & p[3] & Primary particle momentum in x,y,-z directions (GeV) \\
97911 & Theta & Primary particle zenith angle (rad) \\
98012 & Phi & Primary particle azimuth angle (rad) \\
981
98213 & NumRndSeq & Number of different CORSIKA random sequences (max. 10) \\
98314 to 43 & RndData[10][3] & RndData[i][0]: integer seed of sequence i \\
984& & RndData[i][1]: number of offset random calls (mod $10^6$) of sequence i. \\
985& & RndData[i][2]: number of offset random calls ($/10^6$) of sequence i. \\
986
98744 & RunNumber & Run number \\
98845 & DateRun & Date of run yymmdd \\
98946 & Corsika\_version & Version of {\it CORSIKA} \\
990
99147 & NumObsLev & Number of observation levels (should be always 1 for
992us) \\
99348 to 57 & HeightLev[10] & Height of observation levels in cm \\
994
99558 & SlopeSpec & Energy spectrum slope \\
99659 & ELowLim & Energy lower limit (GeV) \\
99760 & EUppLim & Energy upper limit (GeV) \\
99861 & Ecutoffh & \\
99962 & Ecutoffm & \\
100063 & Ecutoffe & \\
1001& \\
1002\hline
1003\end{tabular}
1004%
1005\newpage
1006%
1007
1008\begin{tabular}{lll}
1009
1010\multicolumn{2}{c}{Variable} & \parbox{11cm}{Description} \\
1011\hline
1012&& \\
101364 & Ecutoffg & \\
101465 & NFLAIN & \\
101566 & NFLDIF & \\
101667 & NFLPI0 & \\
101768 & NFLPIF & \\
101869 & NFLCHE & \\
101970 & NFRAGM & \\
102071 & Bx & \\
102172 & By & \\
102273 & EGS4yn & \\
102374 & NKGyn & \\
102475 & GHEISHAyn & \\
102576 & VENUSyn & \\
102677 & CERENKOVyn & \\
102778 & NEUTRINOyn & \\
102879 & HORIZONTyn & \\
102980 & COMPUTER & \\
103081 & ThetaMin & Minimum Theta of primaries (deg) \\
103182 & ThetaMax & Maximum Theta of primaries (deg) \\
103283 & PhiMin & Minimum Phi of primaries (deg) \\
103384 & PhiMax & Maximum Phi of primaries (deg) \\
103485 & CBunchSize & \\
103586 & CDetInX & \\
103687 & CDetInY & \\
103788 & CSpacInX & \\
103889 & CSpacInY & \\
103990 & CLenInX & \\
104091 & CLenInY & \\
104192 & COutput & \\
104293 & AngleNorthX& \\
104394 & MuonInfo & \\
104495 & StepLength & \\
104596 & CWaveLower & Wavelength lower limit (nm) \\
104697 & CWaveUpper & Wavelength upper limit (nm) \\
104798 & Multipl & \\
104899 to 138 & CorePos[2][20] & Core positions of randomized shower \\
1049139 to 140 & SIBYLL[2] & \\
1050141 to 142 & QGSJET[2] & \\
1051143 to 144 & DPMJET[2] & \\
1052145 & VENUS\_cross & \\
1053146 & mu\_mult\_scat & \\
1054147 & NKG\_range & \\
1055148 to 149 & EFRCTHN[2] & \\
1056150 to 151 & WMAX[2] & \\
1057& \\
1058\hline
1059\end{tabular}
1060
1061\newpage
1062
1063\begin{tabular}{lll}
1064\multicolumn{2}{c}{Variable} & \parbox{11cm}{Description} \\
1065\hline
1066&& \\
1067152 & rthin\_rmax & \\
1068153 to 154 & viewcone\_angles[2] & Inner and outer angles of Corsika's VIEWCONE
1069option. \\
1070155 & telescopePhi & Telescope azimuth (rad). Measured from South, counter-clockwise \\
1071156 & telescopeTheta & Telescope zenith angle (rad) \\
1072157 & TimeFirst & Arrival time on camera of first photon (ns) \\
1073158 & TimeLast & Arrival time on camera of last photon (ns) \\
1074
1075&& 6 next variables: CORSIKA longitudinal particle fit parameters \\
1076&& \hspace{0.5cm} (see CORSIKA manual for precise meaning and units)\\
1077159 & longi\_Nmax & Numer of charged particles at maximum \\
1078160 & longi\_t0 & Atmospheric depth of shower starting point (N=0) \\
1079161 & longi\_tmax & Atmospheric depth of shower maximum (g/cm$^2$) \\
1080162 & longi\_a & \\
1081163 & longi\_b & For {\bf longi\_a}, {\bf longi\_b}, {\bf longi\_c}, see CORSIKA manual \\
1082164 & longi\_c & \\
1083165 & longi\_chi2 & $\chi^2/dof$ of the fit\\
1084166 & CORSIKAPhs & Original photons written by {\it CORSIKA} \\
1085167 & AtmAbsPhs & Photons absorbed by the atmosphere \\
1086168 & MirrAbsPhs & Photons absorbed by the mirror \\
1087169 & OutOfMirrPhs & Photons outside the mirror \\
1088170 & BlackSpotPhs & Photons lost in the "black spot" \\
1089171 & OutOfChamPhs & Photons outside the camera \\
1090172 & CPhotons & Photons reaching the camera \\
1091
1092173 & elec\_cph\_fraction & Fraction of C-photons produced by electrons \\
1093174 & muon\_cph\_fraction & Fraction of C-photons produced by muons \\
1094175 & other\_cph\_fraction & Fraction of C-photons produced by electrons \\
1095176 to 182 & dummy[7] & not used \\
1096& \\
1097\hline
1098\end{tabular}
1099%
1100\vspace*{0.5cm}
1101\\
1102The event header is followed by 8-word blocks, one for each Cherenkov
1103photon that reaches the camera. A photon block contains the following
1104variables (as 4-byte float numbers):
1105\vspace*{0.5cm}
1106\\
1107\begin{tabular}{ll}
1108Variable & Description \\
1109\hline
1110& \\
1111w & 100000 $\times$ Particle\_type + 1000 $\times$ n + Wavelength (nm) \\
1112 & Particle\_type indicates what particle produced the C-photon. Its value is 2 for electrons \\
1113 & and positrons, and the standard codes of Corsika for the rest. \\
1114 & n is the index from 1 to ICERML (see Corsika manual) for the case in which each Corsika \\
1115 & shower is used more than once (normally, in MMCS will be just 1). \\
1116x, y & Impact point in camera coordinates (cm) \\
1117u, v & Director cosines of down-going versor indicating the photon direction \\
1118t & Arrival time on camera (ns), measured from the time of first
1119interaction of the primary \\
1120h & Production height (cm), measured above sea level on the
1121vertical of the telescope location \\
1122 & (it is not the {\it true} height which would be measured on
1123the vertical of the emitting particle!) \\
1124phi & Incidence angle with respect to camera plane (rad) \\
1125& \\
1126\hline
1127\end{tabular}
1128\vspace*{0.5cm}
1129\\
1130After the last photon block of an event there is a carriage return
1131followed by the ascii flag indicating the event end, and then two more
1132carriage returns before the ascii flag of the beginning of the next
1133event, and so on:\\
1134\\
1135\verb"$END---EVENT$$START-EVENT$Event_header....$END---EVENT$$END-----RUN$$START---RUN$..."\\
1136\\
1137The flag ``\verb$END-----RUN$'' appears after the last event in a run
1138(that is, the last event processed of each of the input cer
1139files). After the last processed run, an end of file flag is
1140written:\\
1141\\
1142\verb"...$END---EVENT$$END-----RUN$$END----FILE$"\\
1143\\
1144Finally, after this flag an ``ascii tail'' has been attached to the file:
1145it consists of the ascii files {\it magic.def}, {\it axisdev.dat} and
1146{\it reflectivity.dat} one after the other, separated by carriage returns:
1147\\
1148\\
1149\verb"$magic.def$axisdev.dat$reflectivity.dat"\\
1150\\
1151In this way all the relevant parameters used to produce the output are
1152kept together with the reflected events.
1153%------------------------------------------------------------
1154\newpage
1155\renewcommand{\thesubsection}{A.\arabic{subsection}}
1156\section*{Appendix A : atmospheric absorption}
1157\addcontentsline{toc}{section}{Appendix A : atmospheric absorption}
1158%
1159The simulation of the absorption of Cherenkov light in the atmosphere
1160has been included in the {\it Reflector} program because this feature
1161was not yet available in the first versions of CORSIKA used within the
1162MAGIC collaboration. In the latest CORSIKA versions, the atmospheric
1163absorption has been included as an option, but it is not
1164compatible with the simulation of a curved atmosphere \cite{cor02},
1165and hence we have kept this step as a part of our reflector
1166simulation. This appendix describes how the atmospheric absorption is
1167implemented in the program when the option ATM\_CORSIKA (see section
1168\ref{commands}) is chosen.
1169\par
1170The geometry of the problem is sketched in figure
1171\ref{fig:atmoscheme}. A Cherenkov photon is emitted in point A and
1172travels towards the telescope placed at B. At any moment, the height
1173$h$ of the photon above sea level is related to the distance $L$
1174between the photon and the telescope through
1175%
1176\begin{equation}
1177(R+h)^2 = (R+h_1)^2 + L^2 + 2 L \; (R+h_1) \; \cos \theta
1178\label{eq:height}
1179\end{equation}
1180%
1181, where $R$ is the Earth radius, $h_1$ the height (a.s.l.) of the
1182observation level and $\theta$ is the zenith angle of the photon
1183trajectory measured at the telescope site. The Cherenkov output of
1184CORSIKA contains for each photon the height $h_C$ of the emission
1185point A, measured along the vertical of the observer. The {\it true
1186vertical height} $h_2$ of the emission point can be obtained by
1187replacing $L$ by $(h_C-h_1)/\cos \theta$ in equation
1188(\ref{eq:height}).
1189%
1190\begin{figure}[ht]
1191\begin{center}
1192\mbox{ \epsfig{file=eps/atmoscheme.eps,width=0.8\textwidth} }
1193\end{center}
1194\caption[]
1195{Calculation of the true vertical height $h_2$ of the emission point
1196of a Cherenkov photon (point A), and the optical path traversed down to the
1197telescope (point B).}
1198\label{fig:atmoscheme}
1199\end{figure}
1200%
1201\par
1202The optical path $I(\theta, h_1, h_2)$ traversed by the photon can be
1203calculated integrating the air density along the trajectory
1204$\overline{\text{AB}}$. For the case $h/R \ll 1$, we can drop in
1205(\ref{eq:height}) the terms in $(h/R)^2$ and smaller, and then solve
1206for L. Deriving now with respect to $h$, we have:
1207%
1208\begin{equation}
1209\frac{dL}{dh} \simeq \sqrt{\frac{R}{2\;(h-h_1)+R\;\cos^2 \theta}}
1210\qquad \text{for} \qquad \frac{h}{R} \ll 1
1211\label{eq:dldh}
1212\end{equation}
1213%
1214\subsection{Rayleigh scattering}
1215Rayleigh scattering is the scattering of light by particles smaller
1216than its wavelength. These are in our case the air molecules. The
1217transmission coefficient due to Rayleigh scattering is a strong
1218function of the wavelength $\lambda$:
1219%
1220\begin{equation}
1221T_{\text{Rayl}} (\lambda) = \exp \Biggl[ - \frac{I(\theta, h_1, h_2)}{x_R} \; \Biggl(\frac{400 \;
1222\text{nm}}{\lambda}\Biggl)^4 \; \Biggl]
1223\label{eq:rayleigh}
1224\end{equation}
1225%
1226Here $I(\theta, h_1, h_2)$ is the optical path (in g/cm$^2$) traversed
1227between points A and B, and $x_R = 2970$ g/cm$^2$ is the mean free path of
1228the Rayleigh scattering at $\lambda = 400$ nm.
1229\par
1230A convenient way of expressing the optical path is the following:
1231%
1232\begin{equation}
1233I\;(\theta, h_1, h_2) = (x_1 - x_2) \cdot \mathcal{AM}\;(\theta, h_1, h_2)
1234\end{equation}
1235Here $x_{i=1,2}$ is the mass overburden of the atmosphere above a
1236height $h_i$ (in the
1237vertical direction) and $\mathcal{AM}$ is the so called {\it air
1238mass}\footnote{If we set $h_2 = \infty$, we have the usual definition
1239of {\it air mass} in optical astronomy.}, defined as
1240%
1241\begin{equation}
1242\mathcal{AM} \equiv \frac{I\;(\theta,h_1,h_2)}{I\;(0^\circ,h_1,h_2)}
1243\label{eq:airmass}
1244\end{equation}
1245%
1246, which is a function mainly of the zenith angle $\theta$ (see
1247fig. \ref{fig:airmass}). In our simulation, for the calculation of the
1248mass overburden $x_i$ we have used the U.S. standard atmosphere
1249parametrized by J. Linsley \cite{cor02}, the same we used in Corsika
1250for the shower development simulation. It consists of five layers: in
1251the lower four the density decreases exponentially with height, and in
1252the upper one the mass overburden cecreases linearly until it vanishes
1253at $h = 112.8$ km.
1254%
1255\begin{figure}[ht]
1256\begin{center}
1257\mbox{ \epsfig{file=eps/airmass.eps,width=0.8\textwidth} }
1258\end{center}
1259\caption[]
1260{Dependence with zenith angle of the air mass as defined in the
1261text. The air mass has been calculated for an exponential atmosphere
1262with scale height $H = 7.4$ km, for the observation level of MAGIC
1263(2.2 km a.s.l.), and for light coming from $h_2 = 10$ and at 100 km a.s.l. As
1264we can see the dependence with the emission height $h_2$ is very small.}
1265\label{fig:airmass}
1266\end{figure}
1267%
1268\par
1269For the estimate of $\mathcal{AM}$, a simpler atmospheric model has
1270been used, in which the vertical density profile is described by a
1271single exponential: $\rho = \rho_0 \; e^{-h/H}$ with scale height $H
1272= 7.4$ km. This simplifies the calculations, and is accurate enough
1273for our purposes. Using (\ref{eq:dldh}) the optical path $I(\theta,
1274h_1, h_2)$ can then be obtained approximately as:
1275%
1276\begin{equation}
1277I(\theta, h_1, h_2) = \int_A^B \rho\;(h)\; \frac{dL}{dh} \; dh \simeq
1278\sqrt{\frac{R}{2}} \;
1279\int_{h_1}^{h_2} \frac{\rho_0
1280\;e^{-h/H}}{\sqrt{h-h_1+\frac{1}{2}\;R\;\cos^2 \theta}} \; dh
1281\label{eq:optpath}
1282\end{equation}
1283%
1284and finally:
1285%
1286\begin{equation}
1287\mathcal{AM} \simeq e^{-\frac{R \sin^2 \theta}{2H}}
1288\cdot
1289\frac{
1290\text{erfc}\;(\sqrt{\frac{R \cos^2 \theta}{2H}})
1291\;-\;
1292\text{erfc}\;(\sqrt{\frac{2 (h_2 - h_1) + R \cos^2 \theta}{2H}})
1293}
1294{
1295\text{erfc}\;(\sqrt{\frac{R}{2H}})
1296\;-\;
1297\text{erfc}\;(\sqrt{\frac{2(h_2 - h_1) + R}{2 H}})
1298}
1299\label{eq:airmass2}
1300\end{equation}
1301%
1302where we have used the complementary error function $\text{erfc}\;(x)
1303= \frac{2}{\sqrt{\pi}}\int_x^\infty e^{-t^2} dt$. From
1304(\ref{eq:airmass2}), $\mathcal{AM}$ can be readily evaluated for any
1305value of $\theta$, $h_1$ and $h_2$. In fig. \ref{fig:rayleigh} the
1306resulting Rayleigh transmission coefficient $T_{\text{Rayl}}$ finally
1307obtained from (\ref{eq:rayleigh}) is plotted versus the zenith angle
1308for three wavelengths.
1309%
1310\begin{figure}[ht]
1311\begin{center}
1312\mbox{ \epsfig{file=eps/rayleigh.eps,width=\textwidth} }
1313\end{center}
1314\caption[]
1315{Rayleigh transmission coefficient as a function of zenith angle for three
1316different wavelengths. The solid, dashed and dotted lines correspond
1317respectively to light coming from 5, 10 and 20 km distance from the
1318telescope.}
1319\label{fig:rayleigh}
1320\end{figure}
1321%
1322\subsection{Mie scattering}
1323Cherenkov light also suffers Mie scattering through interaction with
1324small dust particles suspended in the air (aerosols), whose size is
1325comparable to the wavelength of the light. In our simulation of the
1326attenuation due to aerosols we have used the model proposed by
1327Elterman \cite{elterman64,elterman65}, which considers an aerosol
1328number density $N_p$ which (roughly) decreases exponentially up to 10
1329km a.s.l. with scale height $H \simeq 1.2$ km, followed by a more
1330tenuous layer between 10 and 30 km (see fig. \ref{fig:aerosol}a). In
1331this model, the aerosol size distribution is considered to be
1332unchanged with altitude.
1333%
1334\begin{figure}[ht]
1335\begin{center}
1336\mbox{ \epsfig{file=eps/aerosol.eps,width=0.9\textwidth} }
1337\end{center}
1338\caption[]
1339{Aerosol model by Elterman: in (a), number density of
1340aerosols as a function of height above sea level; in (b), aerosol
1341attenuation coefficient at sea level as a function of wavelength.}
1342\label{fig:aerosol}
1343\end{figure}
1344%
1345\par
1346Measured values of the aerosol attenuation coefficients at sea level
1347$\beta_p(0)$ for different wavelengths \cite{elterman65} are shown in
1348figure \ref{fig:aerosol}b. To obtain the attenuation coefficient at a
1349given height $h$, we simply do $\beta_p(h, \lambda) = \beta_p(0,
1350\lambda) \cdot N_p(h)/N_p(0)$. In the Elterman model the aerosol
1351transmission coefficient for the trajectory from A to B depicted in
1352figure \ref{fig:atmoscheme} would then be:
1353%
1354\begin{equation}
1355T_{\text{Mie}}(\lambda) = e^{-\tau_{mie}} \quad \text{, with}\quad
1356\tau_{mie}(h_1, h_2, \theta, \lambda) = \frac{\beta_p(0, \lambda)}{N_p(0)} \;
1357\int_{h_1}^{h_2}
1358\; N_p(h) \;\; \frac{dL}{dh}\; dh
1359\label{eq:aerosoltau}
1360\end{equation}
1361%
1362Here $\tau_{mie}$ is the aerosol optical depth of the path from A to
1363B. Given that the aerosol density distribution is not a simple
1364exponential, we have to do the integral in (\ref{eq:aerosoltau})
1365numerically. The integral depends on $h_2$ and on $\theta$, through
1366$dL/dh$ (it also
1367depends on $h_1$, but this is the observation level and therefore
1368fixed). In this case we use the exact expression for $\;dL/dh\;$ which can be
1369obtained from (\ref{eq:height}). At the beginning of each simulation
1370run we calculate and store the results of the integral for values of
1371$\theta$ between 0 and 90$^\circ$ (in steps of $1^\circ$), and of
1372$h_2$ from $h_1$ up to 30 km (in steps of 100 m). To do the integral a
1373linear interpolation has been used to obtain the value of $N_p$ for
1374any height. During the simulation of each Cherenkov photon, we get the
1375corresponding precalculated value of the integral and deduce
1376$T_{\text{Mie}}$ from expression (\ref{eq:aerosoltau}).
1377%
1378\begin{figure}[ht]
1379\begin{center}
1380\mbox{ \epsfig{file=eps/mie.eps,width=\textwidth} }
1381\end{center}
1382\caption[]
1383{Aerosol transmission coefficient for three different wavelengths as a
1384function of the distance between the photon emission point and the
1385telescope. Plots for four different zenith angles between 0 and 80
1386degrees are shown.}
1387\label{fig:mie}
1388\end{figure}
1389%
1390\par
1391Since in this model the aerosols are concentrated mainly at very low
1392altitude, the transmission coefficient is more or less constant above
1393a certain height (which depends on $\theta$), as can be seen in
1394fig. \ref{fig:mie}. For instance, for vertically incident 300 nm light
1395emitted higher than 4 km above the telescope, the Mie transmission is
1396about 0.95.
1397%
1398\subsection{Absorption by Ozone}
1399%
1400The absorption of Cherenkov light by Ozone has been implemented
1401following also the Elterman standard atmosphere \cite{elterman65}. The
1402coefficient for ozone absorption is given by
1403%
1404\begin{equation}
1405\beta_3(h,\lambda) = A_v(\lambda) \cdot D_3(h)
1406\end{equation}
1407%
1408, where $A_v(\lambda)$ is the Vigroux \cite{vigroux53} ozone
1409absorption coefficient (cm$^{-1}$) and $D_3(h)$ is the ozone
1410concentration (cm km$^{-1}$) according to Elterman. The transmission
1411coefficient of Ozone in the path $\overline{\text{AB}}$ is then:
1412%
1413\begin{equation}
1414T_{\text{Ozone}}(\lambda) = e^{-\tau_{oz}} \quad \text{, with}\quad
1415\tau_{oz}(h_1, h_2, \theta, \lambda) = A_v(\lambda) \; \int_{h_1}^{h_2}
1416\; D_3(h) \;\; \frac{dL}{dh}\; dh
1417\label{eq:ozonetau}
1418\end{equation}
1419%
1420\begin{figure}[ht]
1421\begin{center}
1422\mbox{ \epsfig{file=eps/ozone.eps,width=\textwidth} }
1423\end{center}
1424\caption[]
1425{Ozone concentration vertical profile (a) and Vigroux coefficients for
1426Ozone absorption (b). The Vigroux coefficients for $\lambda =$ 380 and
1427400 nm are zero.}
1428\label{fig:ozone}
1429\end{figure}
1430%
1431\par
1432Once again, like in the case of Mie scattering, the optical depth
1433$\tau_{oz}$ is the product of a factor which depends on $\lambda$ and
1434an integral which depends on $h_1$, $h_2$ and $\theta$. We proceed in
1435the same way as before, precalculating the values of the integral in
1436steps of $\Delta\theta = 1^\circ$ and $\Delta h = 100$ m, up to a
1437height of 50 km a.s.l. (where the ozone concentration becomes
1438negligible), and then reading the appropriate values for every
1439simulated photon.
1440\par
1441Finally, the overall atmospheric transmission coefficient is
1442calculated as
1443%
1444\begin{equation}
1445T_{total} = T_{Ray} \cdot T_{Mie} \cdot T_{Ozone}
1446\end{equation}
1447%
1448In figure \ref{fig:absorplot} the atmospheric transmission as a
1449function of the distance to the telescope for $\theta = 0^\circ$ is
1450shown. Ozone absorption turns out to be dominant below 320 nm, while
1451Rayleigh scattering is the main cause of the loss of photons at longer
1452wavelengths.
1453%
1454\begin{figure}[ht]
1455\begin{center}
1456\mbox{ \epsfig{file=eps/absorplot.eps,width=\textwidth} }
1457\end{center}
1458\caption[]
1459{Total transmission coefficient for vertically incident light as a
1460function of the distance between the emission point and the
1461telescope. The contributions of absorption by ozone and of Rayleigh
1462and Mie scattering are also shown for comparison.}
1463\label{fig:absorplot}
1464\end{figure}
1465%
1466\newpage
1467\section*{Appendix B : files in the reflector package}
1468\addcontentsline{toc}{section}{Appendix B : files in the reflector package}
1469
1470The list of all Reflector files follows.
1471\begin{verbatim}
1472
1473MagicProgs/Simulation/Detector/Reflector_0.6/Changelog
1474MagicProgs/Simulation/Detector/Reflector_0.6/Makefile
1475MagicProgs/Simulation/Detector/Reflector_0.6/atm.c
1476MagicProgs/Simulation/Detector/Reflector_0.6/atm.h
1477MagicProgs/Simulation/Detector/Reflector_0.6/attach.c
1478MagicProgs/Simulation/Detector/Reflector_0.6/attenu.f
1479MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux
1480MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux-gnu
1481MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.osf1
1482MagicProgs/Simulation/Detector/Reflector_0.6/diag.c
1483MagicProgs/Simulation/Detector/Reflector_0.6/diag.h
1484MagicProgs/Simulation/Detector/Reflector_0.6/geometry.c
1485MagicProgs/Simulation/Detector/Reflector_0.6/geometry.h
1486MagicProgs/Simulation/Detector/Reflector_0.6/header.c
1487MagicProgs/Simulation/Detector/Reflector_0.6/header.h
1488MagicProgs/Simulation/Detector/Reflector_0.6/init.c
1489MagicProgs/Simulation/Detector/Reflector_0.6/init.h
1490MagicProgs/Simulation/Detector/Reflector_0.6/input.card
1491MagicProgs/Simulation/Detector/Reflector_0.6/lagrange.h
1492MagicProgs/Simulation/Detector/Reflector_0.6/parms.c
1493MagicProgs/Simulation/Detector/Reflector_0.6/parms.h
1494MagicProgs/Simulation/Detector/Reflector_0.6/ph2cph.c
1495MagicProgs/Simulation/Detector/Reflector_0.6/refl-install
1496MagicProgs/Simulation/Detector/Reflector_0.6/reflector.c
1497MagicProgs/Simulation/Detector/Reflector_0.6/version.h
1498
1499MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.ps
1500MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.tex
1501MagicProgs/Simulation/Detector/Reflector_0.6/doc/magic-tdas.sty
1502MagicProgs/Simulation/Detector/Reflector_0.6/doc/magiclogo.eps
1503MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/absorplot.eps
1504MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/aerosol.eps
1505MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/airmass.eps
1506MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/atmoscheme.eps
1507MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/colimation.eps
1508MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma.eps
1509MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma_star.eps
1510MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coorsystems.eps
1511MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/evcompare.eps
1512MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/mie.eps
1513MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/ozone.eps
1514MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/parabola.eps
1515MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/rayleigh.eps
1516MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/refl06images.eps
1517MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/reflec.eps
1518MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1694.eps
1519MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1700.eps
1520MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot_inf_f1697.eps
1521MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/telecoor.eps
1522MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/timing.eps
1523
1524MagicProgs/Simulation/Detector/Reflector_0.6/tester/Makefile
1525MagicProgs/Simulation/Detector/Reflector_0.6/tester/cermaker.c
1526
1527MagicProgs/Simulation/Detector/Data/axisdev.dat
1528MagicProgs/Simulation/Detector/Data/magic.def
1529MagicProgs/Simulation/Detector/Data/reflectivity.dat
1530
1531MagicProgs/Simulation/Detector/lib/libranlib.a.osf1
1532MagicProgs/Simulation/Detector/lib/libranlib.a.linux
1533
1534\end{verbatim}
1535
1536%%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1537
1538%%>>>> Use the following if you are using BibTeX for bibliography
1539%\theBibliography
1540
1541%%>>>> Or the following if you include here by hand your
1542%%>>>> bibliographic entries
1543
1544\begin{thebibliography}{00}
1545
1546\bibitem{elterman64}
1547L. Elterman, Applied Optics Vol. 3, No. 6 (1964) 745.
1548
1549\bibitem{elterman65}
1550L. Elterman, R.B. Toolin, S.L. Valley (editor), Handbook of
1551geophysics and space environments, McGraw-Hill, N.Y. (1965).
1552
1553\bibitem{cor02}D. Heck and J. Knapp, EAS Simulation with CORSIKA: A User's
1554Manual, 2002.
1555
1556\bibitem{vigroux53}
1557E. Vigroux, Contributions \`a l'étude expérimentale de l'absorption
1558de l'ozone, Annales de Physique, v. 8 (1953) 709.
1559
1560\end{thebibliography}
1561
1562\end{document}
1563%
1564%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1565%%% 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
1566%%% 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
1567%%% Digits 0 1 2 3 4 5 6 7 8 9
1568%%% Exclamation ! Double quote " Hash (number) #
1569%%% Dollar $ Percent % Ampersand &
1570%%% Acute accent ' Left paren ( Right paren )
1571%%% Asterisk * Plus + Comma ,
1572%%% Minus - Point . Solidus /
1573%%% Colon : Semicolon ; Less than <
1574%%% Equals = Greater than > Question mark ?
1575%%% At @ Left bracket [ Backslash \
1576%%% Right bracket ] Circumflex ^ Underscore _
1577%%% Grave accent ` Left brace { Vertical bar |
1578%%% Right brace } Tilde ~
1579%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1580%% Local Variables:
1581%% mode:latex
1582%% mode:font-lock
1583%% mode:auto-fill
1584%% time-stamp-line-limit:100
1585%% End:
1586%% EOF
Note: See TracBrowser for help on using the repository browser.