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}
|
---|
58 | In 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
|
---|
60 | information contained in this document is also present in MAGIC-TDAS
|
---|
61 | 02-05 dealing with the previous version of the program, but it has also
|
---|
62 | been included here for clarity. Two important bugs regarding the
|
---|
63 | ray-tracing routine have been corrected in this new version.
|
---|
64 | \par
|
---|
65 | NOTE: In December 2002, a first release of Reflector 0.6 was made,
|
---|
66 | together with a first version of the present TDAS note. Immediately
|
---|
67 | after that (too short a time to justify a new version number), some
|
---|
68 | other changes were implemented in the program to improve the
|
---|
69 | atmospheric absorption routines, and the dependence of mirror
|
---|
70 | reflectivity with wavelength was introduced. This document is the
|
---|
71 | manual of the final 0.6 version of the reflector, including
|
---|
72 | explanations 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 |
|
---|
87 | The Reflector program was originally written by Jose Carlos Gonz\'alez
|
---|
88 | and then improved by Harald Kornmayer. The Reflector program reads in
|
---|
89 | MMCS output files (cerxxxxxx files from corsika) and writes an output
|
---|
90 | file with the information about all the photons which reach the
|
---|
91 | telescope focal plane (taking into account atmospheric and mirror
|
---|
92 | absorption) and which are within the camera radius defined in the file
|
---|
93 | {\bf magic.def}. In September 2001 D. Bastieri and C. Bigongiari
|
---|
94 | released a new version (v.0.4) to adapt the program to a format change
|
---|
95 | in the MMCS output. In June 2002 the version 0.5 was released, with
|
---|
96 | small changes in the ouput file format and some bug fixing (see TDAS
|
---|
97 | 02-05).
|
---|
98 | \par
|
---|
99 | The aim of releasing the present version 0.6 was in principle only to
|
---|
100 | add some missing information in the output. However, the ray-tracing
|
---|
101 | routine was checked in detail and some inconsistencies were
|
---|
102 | found. As a result of this, an important bug was detected which
|
---|
103 | produced a systematic blurring of all the images. Later another bug
|
---|
104 | was found in the calculation of the photon arrival time on the
|
---|
105 | camera.These bugs, fixed in this version, are discussed in detail in
|
---|
106 | section \ref{notes}.
|
---|
107 |
|
---|
108 | %------------------------------------------------------------
|
---|
109 | \section{Description of simulation \label{descrip}}
|
---|
110 |
|
---|
111 | The 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 |
|
---|
131 | The reflection of each mirror element is simulated in a realistic way
|
---|
132 | by introducing a gaussian spread of the reflected photons positions on
|
---|
133 | the camera plane. The sigma of this PSF is defined via the
|
---|
134 | {\bf point\_spread} parameter in the telescope description file {\bf
|
---|
135 | magic.def}, and has a value of 0.5 cm, which corresponds approximately
|
---|
136 | to the quality of the MAGIC mirrors produced up to date. Also the
|
---|
137 | possible 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 |
|
---|
144 | The previous versions of the reflector were extensively checked and a
|
---|
145 | strange behaviour was found in them. It is a well known fact (see for
|
---|
146 | instance the discussions in the MAGIC design report) that, to focus a
|
---|
147 | telescope on an object placed at a finite distance, one has to shift
|
---|
148 | the camera plane {\it away} from the mirror dish, with respect to the
|
---|
149 | position in which an object at infinity (a star) would be
|
---|
150 | focused (see fig. \ref{colimation}). For instance, with a paraboloid
|
---|
151 | of focal distance f = 1697 cm, an object placed 10 km above the
|
---|
152 | telescope would be focused on a plane at $\simeq 1700$ cm from the
|
---|
153 | dish (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
|
---|
159 | plane must be moved away from the mirror a distance d, given
|
---|
160 | (approximately) by the formula on the right. For MAGIC, the shift is
|
---|
161 | of around 3 cm for a source located 10 km above the
|
---|
162 | telescope.\label{colimation}}
|
---|
163 | \end{center}
|
---|
164 | \end{figure}
|
---|
165 | %
|
---|
166 | \par
|
---|
167 | With reflector program up to version 0.5, and using the mirror
|
---|
168 | parameters in the standard magic.def file, we found out just the
|
---|
169 | opposite behaviour. We wrote a program to produce files with the same
|
---|
170 | structure as the Corsika Cherenkov output, but containing photons from
|
---|
171 | a point source. If we set the source at infinity, we found the best
|
---|
172 | spot placing the camera at a distance of 1697 cm (this can be changed in
|
---|
173 | the magic.def file via the {\it focal\_distance} parameter). We can
|
---|
174 | see the resulting spot in fig. \ref{spot_inf_f1697}. A completely
|
---|
175 | independent ray-tracing program was used to verify that this is the
|
---|
176 | spot 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
|
---|
182 | Reflector 0.5 (units of x and y are cm). Camera plane placed at 1697 cm
|
---|
183 | from the mirror. The circle on the left indicates (small) pixel
|
---|
184 | size. On the right side, projections on x and y of the
|
---|
185 | spot. \label{spot_inf_f1697}}
|
---|
186 | \end{center}
|
---|
187 | \end{figure}
|
---|
188 | %
|
---|
189 | If we now
|
---|
190 | place the source 10 km above the telescope, the best spot is achieved
|
---|
191 | at 1694 cm from the dish, instead of the expected 1700 cm
|
---|
192 | (figs. \ref{spot10kmf1700} and \ref{spot10kmf1694}). It must be
|
---|
193 | noted that for these and the following checks we removed all the
|
---|
194 | gaussian smearing which the program introduces to simulate the
|
---|
195 | possible mirror misalignments and surface irregularities (by the way,
|
---|
196 | a feature which somehow optimistically was not included in the
|
---|
197 | simulations shown in the MAGIC proposal). In this way we can check
|
---|
198 | just 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
|
---|
204 | telescope with Reflector 0.5 (units of x and y are cm). Camera plane
|
---|
205 | placed at f = 1700 cm from the mirror. The fact that the spot is so large
|
---|
206 | indicates a problem in the simulation, since with this camera position
|
---|
207 | the telescope should be focused at 10 km (see
|
---|
208 | fig. \ref{spot_inf_f1697}) and hence produce a spot similar to the one
|
---|
209 | shown in fig. \ref{spot_inf_f1697}. The hole in the middle of the spot
|
---|
210 | corresponds to the hole in the mirror dish, and indicates by itself a
|
---|
211 | focusing 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
|
---|
220 | telescope with Reflector 0.5 (units of x and y are cm). Camera plane
|
---|
221 | placed at f = 1694 cm from the mirror. Now the spot is small, but the
|
---|
222 | camera plane is not at the expected position (see text).
|
---|
223 | \label{spot10kmf1694}}
|
---|
224 | \end{center}
|
---|
225 | \end{figure}
|
---|
226 | %
|
---|
227 | \par
|
---|
228 | In order to rule out a possible mistake in the generation of the
|
---|
229 | ``false'' Cherenkov files, we repeated the check using real Corsika
|
---|
230 | files, and directly looking at shower images ($\Theta = 10^\circ$
|
---|
231 | incident gammas with a Crab-like spectrum). We must bear in mind that
|
---|
232 | the shower maximum for gammas of 100 GeV lies around 10 km above the MAGIC
|
---|
233 | level. From the result we can clearly see that the images are best
|
---|
234 | focused at 1694 cm (fig. \ref{evcompare}), therefore confirming the
|
---|
235 | existence 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
|
---|
241 | the camera at 1700 cm (left) and 1694 cm (right) from the mirror
|
---|
242 | dish. 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\\}
|
---|
248 | In the standard magic.def file we have been using up to now, the
|
---|
249 | spherical mirrors centers were found to be distributed on the surface
|
---|
250 | of a f = 1700 cm paraboloid. Their curvature radii, though discretized
|
---|
251 | in 8 ``zones'' as explained in the design report, corresponded in
|
---|
252 | average to the local mean curvature radius of the same parabolic
|
---|
253 | surface. However, their orientations were those corresponding to a f =
|
---|
254 | 1697 cm paraboloid. Personally I do not think this is something
|
---|
255 | intended, and looks more like an error, but anyway we checked that this
|
---|
256 | was not the reason for the problems in the ray tracing: a test
|
---|
257 | magic.def file was created with {\it all} the mirror parameters
|
---|
258 | (positions, orientations and radii of curvature)
|
---|
259 | calculated as for a f = 1697 cm paraboloid, and no significant
|
---|
260 | difference could be seen. That
|
---|
261 | is: i) the individual mirror orientations are the dominant factor, and
|
---|
262 | the overall dish in the old reflector behaved indeed like a f = 1697
|
---|
263 | cm parabolic
|
---|
264 | mirror, and ii) the bug must be somewhere else. Even though the error
|
---|
265 | was not there, a new magic.def file has been produced containing the
|
---|
266 | parameters for the 956 mirrors of the final MAGIC design (instead of
|
---|
267 | the 920 mirrors foreseen in the beginning).
|
---|
268 | %
|
---|
269 | \paragraph {Solution of the problem\\}
|
---|
270 | Finally, a check of the routines in {\it ph2cph.c} revealed that the
|
---|
271 | reflector program was actually misinterpreting the information read
|
---|
272 | from the Cherenkov file written by Corsika. In figure \ref{coorsystems}
|
---|
273 | we can see the definition of Corsika's coordinate system (see also the
|
---|
274 | Corsika manual). In it, the x axis points north and the z axis points
|
---|
275 | up. The zenith angle $\Theta$ of a particle trajectory is measured
|
---|
276 | between the particle momentum and the negative z-axis, and the
|
---|
277 | azimuthal angle $\Phi$ between the positive x-axis and the x-y
|
---|
278 | component of the particle momentum, counterclockwise (0 -
|
---|
279 | 2$\pi$). When the direction cosines of a particle's trajectory are
|
---|
280 | given, they refer also to its momentum vector (a downgoing
|
---|
281 | vector)\footnote{In Corsika the third component of the momentum is
|
---|
282 | measured along the negative z-axis and this is probably the origin of
|
---|
283 | the confusion which resulted in the bug}. The same is true for the
|
---|
284 | Cherenkov 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
|
---|
297 | by Reflector v 0.5 and older versions.\label{parabola}}
|
---|
298 | \end{center}
|
---|
299 | \end{figure}
|
---|
300 | %
|
---|
301 | Unfortunately, in the output of Corsika, only the direction cosines
|
---|
302 | (u, v) with respect to the x and y axis are given. These completely
|
---|
303 | determine the particle's trajectory as long as one knows that they
|
---|
304 | refer to a downgoing versor, in which case one gets the third
|
---|
305 | direction cosine as $w = -\sqrt{1-u^2-v^2}$, with a minus sign. However,
|
---|
306 | in {\it ph2cph.c} we found exactly the opposite (lines 116 to 118 in
|
---|
307 | v.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 |
|
---|
315 | This means that the program was interpreting u and v as the direction
|
---|
316 | cosines of the {\it upgoing} versor towards which one should ``look''
|
---|
317 | to 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
|
---|
319 | two possible interpretations of the direction cosines u and v. These
|
---|
320 | vectors have the same u and v, and differ only in the sign of their
|
---|
321 | third components w. As the figure illustrates, the reflector
|
---|
322 | simulation, by taking the wrong (positive) sign of w, was transforming
|
---|
323 | the light coming from a point source 10 km away, into a convergent
|
---|
324 | light beam which was then focused at a distance (1694 cm),
|
---|
325 | shorter than the focal length of the paraboloid, and produced a
|
---|
326 | blurred image at the theoretically optimal distance (1700 cm). Of
|
---|
327 | course a paralel beam of light was focused at the right distance (1697
|
---|
328 | cm) since in that case u = v = 0, and both the upgoing and downgoing
|
---|
329 | versors have the same direction.
|
---|
330 | \par
|
---|
331 | The example in figure \ref{parabola} shows the case in which the
|
---|
332 | telescope is pointing at zenith. It is easy to see that if the
|
---|
333 | telescope was pointing in an arbitrary direction a few degrees away
|
---|
334 | from zenith, the fact of taking the wrong sign in the third direction
|
---|
335 | cosine would spoil the reflection completely, to the point that the
|
---|
336 | spot would lie outside the camera limits. However, this is not what we
|
---|
337 | observed: when using the older reflector versions for different zenith
|
---|
338 | angles the images were still contained in the camera. The explanation
|
---|
339 | is that the transformation between Corsika's coordinates system and
|
---|
340 | the telescope system was also wrong, since the angles $\Phi$ and
|
---|
341 | $\Theta$ which indicate the telescope orientation (see fixed\_target
|
---|
342 | option in section \ref{commands}) follow the same convention taken
|
---|
343 | from Corsika: for instance, for pointing the telescope towards North
|
---|
344 | we should set $\Phi = 180^\circ$, because that would be the $\Phi$
|
---|
345 | value for a particle or photon coming from North (see again
|
---|
346 | fig. \ref{coorsystems}, left). This wrong transformation of coordinates
|
---|
347 | oriented the telescope in a way that the situation was always like the
|
---|
348 | one shown in fig. \ref{parabola}, and the image was formed in the
|
---|
349 | camera also for $\Theta > 0$, though also defocused.
|
---|
350 | \par
|
---|
351 | The telescope coordinate system shown in figure \ref{coorsystems}
|
---|
352 | (right) has its z-axis along the telescope axis, and the origin in the
|
---|
353 | center of the mirror dish. This system is used in the ray tracing
|
---|
354 | routine of the reflector simulation. When the telescope points up
|
---|
355 | ($\Theta = \Phi = 0$) this system matches exactly the one in Corsika.
|
---|
356 | The general transformation between both is a simple rotation,
|
---|
357 | since for the sake of simplicity we assume in the simulation that the
|
---|
358 | origins always coincide. As we have said, in Reflector v.05 or older the rotation
|
---|
359 | matrix was wrong: it had been written assuming that ($\Phi$, $\Theta$)
|
---|
360 | indicated the direction towards which the telescope pointed. Actually,
|
---|
361 | for the reasons already exposed, the telescope must point to
|
---|
362 | ($\Phi +\pi$, $\Theta$). The function in charge of building the rotation
|
---|
363 | matrix is {\it makeOmega} (a part of {\it ph2cph.c}), which is called
|
---|
364 | from {\it reflector.c}. For the present version we have simply
|
---|
365 | replaced $\Phi$ by $\Phi + \pi$ in the function call. The transformation of
|
---|
366 | coordinates is shown in figure \ref{telecoor}, and can be seen as a
|
---|
367 | rotation of angle $\Phi +\pi$ around the z axis of Corsika plus a
|
---|
368 | rotation of angle $\Theta$ around the y'' axis of the telescope (the
|
---|
369 | same way in which the real MAGIC points).
|
---|
370 | %
|
---|
371 | \paragraph {New coordinate system of the camera \label{newcoordi}}
|
---|
372 | We have introduced another change in Reflector 0.6 regarding the
|
---|
373 | coordinates. In versions up to 0.5 the coordinates ($x_{camera}$,
|
---|
374 | $y_{camera}$) of the photon impact point on the camera plane were
|
---|
375 | given in the telescope system (x'', y'', z'') described in
|
---|
376 | fig. \ref{coorsystems}. This was a bit confusing (a rotation of the
|
---|
377 | telescope in the zenith axis resulted in a displacement in x'' of the
|
---|
378 | images), in particular it would have been messy when working in wobble
|
---|
379 | mode. We have now adopted the camera coordinate system proposed in
|
---|
380 | TDAS 01-05: when the observer is looking from the center of the
|
---|
381 | reflector in the direction of the telescope axis (towards the camera)
|
---|
382 | the $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
|
---|
385 | coordinates is: $x_{camera} = -y''$, $\:y_{camera} = -x''$. This has been
|
---|
386 | added 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
|
---|
392 | MAGIC coordinate systems.\label{telecoor}}
|
---|
393 | \end{center}
|
---|
394 | \end{figure}
|
---|
395 | %
|
---|
396 | \paragraph {How old was the ray-tracing bug?\\}
|
---|
397 | %
|
---|
398 | The bug was certainly present in versions 0.4 and 0.5, but may be even
|
---|
399 | older. Nevertheless, there is no doubt that the reflector program used
|
---|
400 | for the simulation shown in the MAGIC design report was working
|
---|
401 | fine. Extensive proof
|
---|
402 | of this is provided in an appendix of the design report. A plausible
|
---|
403 | explanation could be that, up to some date, the data being read in by
|
---|
404 | the reflector program (the Corsika output) contained direction cosines
|
---|
405 | which really referred to the upgoing versors of the photon directions,
|
---|
406 | and until then the program worked well. Then may be the output of
|
---|
407 | Corsika was changed to its present form, and the change went unnoticed.
|
---|
408 | The Corsika version used then was 4.52, whereas all further work has
|
---|
409 | been done with Corsika 5.20 or later versions. The Corsika history
|
---|
410 | file shows no record of any change in this respect, but given that we
|
---|
411 | have always used a slightly modified Corsika, it would not be
|
---|
412 | surprising if the Cherenkov output was modified at some point in the
|
---|
413 | MAGIC version of Corsika (MMCS). There is no documentation on this, so
|
---|
414 | if anyone has any relevant information, please make it public.
|
---|
415 | %
|
---|
416 | \paragraph {Influence of the bug on image analysis\\}
|
---|
417 | The fixing of the bug (resulting in sharper images) will for sure
|
---|
418 | improve the results of the image analysis, in particular with regard
|
---|
419 | to gamma / hadron separation. This could in part explain the
|
---|
420 | differences we have been observing in the expected performance of
|
---|
421 | MAGIC with respect to what was foreseen in the design report. However,
|
---|
422 | we note here again that in the simulation used there, not only was the
|
---|
423 | reflector working well, but also no noise was introduced in the
|
---|
424 | reflecting process. This was surely too optimistic, and it implies
|
---|
425 | that it will be hard to reproduce those results using a more realistic
|
---|
426 | approach which accounts for mirror imperfections. However, the
|
---|
427 | introduction of the noise (fig. \ref{refl06images}) has a less
|
---|
428 | dramatic effect than the defocusing which the bug was producing.
|
---|
429 | %
|
---|
430 | \subsection {Performance of ray-tracing in the new version}
|
---|
431 | In figure \ref{coma} we show the images of a point-like source at 10
|
---|
432 | km from the telescope, produced with the Reflector version 0.6,
|
---|
433 | and using the new version of the magic.def file (see see next
|
---|
434 | section). No noise has been introduced in the reflection, the observed
|
---|
435 | spots are just the result of optical aberrations. The light source has
|
---|
436 | been put at slightly different viewing angles
|
---|
437 | from the telescope. The results are comparable to those in the design
|
---|
438 | report, actually these are a bit better, the difference probably being
|
---|
439 | that the focal lengths of the mirror tiles in the older magic.def file
|
---|
440 | were discretized in only eight values, while now they change rather
|
---|
441 | continuously. Some images of a point source at infinity (a star) can be
|
---|
442 | seen in fig. \ref{coma_star}. We can see that for any incidence angle,
|
---|
443 | the area within which 50$\%$ of the light is concentrated is smaller
|
---|
444 | than that of a small pixel.
|
---|
445 | \par
|
---|
446 | In figure \ref{refl06images} the images of three gamma events ($\theta
|
---|
447 | = 10^\circ$, E = 16, 46, 232 GeV), the same of fig. \ref{evcompare}
|
---|
448 | are shown. They have been produced with Reflector 0.6 assuming perfect
|
---|
449 | spherical mirrors (left) and realistic ones (right). The images look
|
---|
450 | reasonable, much sharper than with the older versions, even when the
|
---|
451 | mirror 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
|
---|
457 | distributions of photons in the camera are shown for (buggy) Reflector
|
---|
458 | 0.5 and for Reflector 0.6. The sketch in the center shows the test for
|
---|
459 | the 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
|
---|
461 | arriving 1 degree off axis.
|
---|
462 | \label{timing}}
|
---|
463 | \end{center}
|
---|
464 | \vspace*{-1cm}
|
---|
465 | \end{figure}
|
---|
466 | %
|
---|
467 | \subsection {Second bug: photon timing}
|
---|
468 | %
|
---|
469 | After a first release of Reflector 0.6 had been made public, another
|
---|
470 | important bug was found. We tried to check whether the simulated
|
---|
471 | reflecting dish was really ``isochronous''. A paralel beam of photons,
|
---|
472 | all sharing the same arrival time on the ground, were processed by the
|
---|
473 | simulation program and their arrival times on the camera plane were
|
---|
474 | histogrammed. The result can be seen in fig. \ref{timing} (dashed
|
---|
475 | histograms). This time the bug was quite evident: since Corsika gives
|
---|
476 | us the arrival time of photons on ground, the path from the point
|
---|
477 | where the photon hits the dish to the ground has to be subtracted (or
|
---|
478 | added, because since the center of the dish in the MC is at $z = 0$,
|
---|
479 | the mirror reflecting the photon may have $z < 0$ when the dish is
|
---|
480 | inclined). The sign in this subtraction (in {\it ph2cph.c}) was
|
---|
481 | wrong. This bug was present in both versions 0.5 and 0.4, and might
|
---|
482 | be related to the other one (a change of orientation of the z axis
|
---|
483 | at some point may have produced it). Since in the simulation made for
|
---|
484 | the design report the timing played little or no role (the camera
|
---|
485 | simulation did not consider the arrival times of photons) it is not
|
---|
486 | possible to know whether the bug was already in the code by then.
|
---|
487 | \par
|
---|
488 | This bug means that all the studies made up to now regarding photon
|
---|
489 | arrival times on the camera are completely useless (for instance, the
|
---|
490 | optimization of the time parameters in the L1 trigger has to be redone
|
---|
491 | from scratch!).
|
---|
492 | %
|
---|
493 | \subsection{The new magic.def file}
|
---|
494 | A new magic.def file (see sect. \ref{neededfiles}) has been created
|
---|
495 | and included in the Reflector 0.6 package. Now the number of
|
---|
496 | individual mirror tiles is 956, matching
|
---|
497 | the number and distribution of the final MAGIC design. The mirror
|
---|
498 | centers and orientations are those corresponding to a paraboloid of
|
---|
499 | 1697 cm focal (hence the camera plane is placed at 1700 cm from the
|
---|
500 | dish). The focal lengths have been calculated by R. Mirzoyan taking
|
---|
501 | into account the so called ``shortening effect'' (see design report).
|
---|
502 | A new axisdev.dat file (se again \ref{neededfiles}) with data for the
|
---|
503 | 956 mirrors is also included.
|
---|
504 | %
|
---|
505 | \subsection{The new reflectivity.dat file}
|
---|
506 | Up to version 0.5 of the program, the reflectivity of the mirrors
|
---|
507 | (which the program reads in from the file reflectivity.dat) was
|
---|
508 | considered to be equal to $90\%$ for all wavelengths. Following
|
---|
509 | measurements performed in Padua of a mirror sample, the reflectivity
|
---|
510 | has been found to be between 80 and 90$\%$ in the range from 280 to 650 nm,
|
---|
511 | with 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
|
---|
517 | function of the wavelength of the incident light. The dip around 350
|
---|
518 | nm is due to destructive interference of the light reflected on the
|
---|
519 | aluminum plate with that reflected on the protective coating of the
|
---|
520 | mirror. \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
|
---|
528 | 10 km from the telescope for different incident angles (from on-axis
|
---|
529 | to 2 degrees off-axis). The quantity d50 indicates the diameter of a
|
---|
530 | circle (plotted) containing 50$\%$ of the reflected light. Note that
|
---|
531 | the z-axis scale is logarithmic, and the same in the first five
|
---|
532 | plots. 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
|
---|
542 | fig. \ref{evcompare}, without noise added in the reflection (left) and
|
---|
543 | with the standard noise (right) as described in section
|
---|
544 | \ref{descrip}. Note that the orientation of the images has changed as a
|
---|
545 | result 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
|
---|
556 | indicates the diameter of a circle (plotted) containing 50$\%$ of the
|
---|
557 | reflected light.
|
---|
558 | \label{coma_star}}
|
---|
559 | \end{center}
|
---|
560 | \vspace*{-1cm}
|
---|
561 | \end{figure}
|
---|
562 | %
|
---|
563 | \subsection{The {\itshape cermaker} program}
|
---|
564 | A test program to produce cer files (input for the reflector)
|
---|
565 | containing photons from a point-light source of light placed in any
|
---|
566 | position has been added to the Reflector package {\it
|
---|
567 | (tester/cermaker.c)}. This is the same program used to produce the
|
---|
568 | plots shown in this report. The usage is as follows:
|
---|
569 | \begin{verbatim}
|
---|
570 | cermaker source_x(cm) source_y(cm) source_z(cm) [events]
|
---|
571 | \end{verbatim}
|
---|
572 | The source position is given with respect to the telescope. The output
|
---|
573 | file is called {\it cer000001}, and can be read by the reflector program.
|
---|
574 | %
|
---|
575 | \subsection{Changes in the atmospheric absorption routines}
|
---|
576 | %
|
---|
577 | In the present version of the program, the simulation of atmospheric
|
---|
578 | absorption has undergone major changes with respect to the original
|
---|
579 | implementation by J.C. Gonz\'alez and Aitor Ibarra. Three options are
|
---|
580 | available in the simulation: ATM\_NOATMOSPHERE, ATM\_90PERCENT and
|
---|
581 | ATM\_CORSIKA (see section \ref{commands}). In the
|
---|
582 | first two, 100$\%$ and 90$\%$ of the emitted light respectively
|
---|
583 | reaches the telescope mirror, regardless of the emission height. The
|
---|
584 | changes in the present version affect only the third option, which is
|
---|
585 | the recommended one for running reflector in the standard MAGIC MC
|
---|
586 | production. In this case, a detailed estimate of the atmospheric
|
---|
587 | transmission is done.
|
---|
588 | \par
|
---|
589 | Three contributions to the atmospheric opacity
|
---|
590 | are considered: Rayleigh scattering, Mie scattering by aerosols, and
|
---|
591 | absorption by ozone. Details on how the effect of these three
|
---|
592 | components is calculated are given in appendix A. In reflector
|
---|
593 | versions older than 0.6,
|
---|
594 | due to a bug, the contribution of Mie scattering and Ozone absorption
|
---|
595 | was slightly overestimated because the vertical height of the emission
|
---|
596 | point above sea level was interpreted as height above the
|
---|
597 | telescope. The difference is small, since the density of the aerosols
|
---|
598 | responsible for Mie scattering decreases very fast with height and
|
---|
599 | therefore the absorption is hardly increased by going up 2.2 km in the
|
---|
600 | region were most of the Cherenkov light is produced. In the case of
|
---|
601 | ozone, its contribution is only important in the very low end of the
|
---|
602 | Cherenkov light spectrum, and so the effect of the bug in the total
|
---|
603 | amount of light reaching the telescope is negligible. Another change
|
---|
604 | is that now the observation level is read in from the cer file, instead
|
---|
605 | of being a fixed parameter in the routines. In this way the reflector
|
---|
606 | program has become more flexible, and can now be used to process cer
|
---|
607 | files produced for a detector at a different observation level.
|
---|
608 | \par
|
---|
609 | Another problem in the old implementation of absorption was that the
|
---|
610 | variation of the optical depth of the atmosphere with the zenith angle
|
---|
611 | $\theta$ was assumed to be the same for Mie scattering, ozone
|
---|
612 | absorption and Rayleigh scattering: the so called {\it air
|
---|
613 | mass} (see appendix A for details) was therefore calculated only once,
|
---|
614 | using the overall density profile of air molecules (which does not
|
---|
615 | match that of aerosols or ozone), and used to account for the
|
---|
616 | variation of all three effects with $\theta$, while rigorously
|
---|
617 | speaking it is only valid for Rayleigh scattering. Now, the simulation
|
---|
618 | of Mie scattering and ozone absorption has been moved from {\it
|
---|
619 | attenu.f} to {\it atm.c} and is done in a more accurate way which
|
---|
620 | takes into account the vertical profile of aerosols and ozone (see
|
---|
621 | appendix A for details).
|
---|
622 | %
|
---|
623 | \subsection{Other changes in Reflector 0.6}
|
---|
624 |
|
---|
625 | Some 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
|
---|
630 | loop. If NaNs are found in a photon data block (there are some in the
|
---|
631 | Corsika output from time to time, for unkown reason), it is not processed.
|
---|
632 |
|
---|
633 | \item ph2cph.c: Introduced "check of positiveness" before taking a
|
---|
634 | square root in the calculation of the photon trajectory intersection
|
---|
635 | with the paraboloid (resulted sometimes in NaNs when the photon did
|
---|
636 | not intersect the paraboloid).
|
---|
637 |
|
---|
638 | \item Added an option for the wobble mode in the input card (see
|
---|
639 | section \ref{opt}).
|
---|
640 |
|
---|
641 | \item New output format (see sect. \ref{out}): we have removed a null
|
---|
642 | byte that was written immediately after the ascii label containing the
|
---|
643 | reflector program version number at the begining of the file. This
|
---|
644 | byte was there for historical reasons and had no function
|
---|
645 | whatsoever. Then we have added a Run header, which is like that of
|
---|
646 | Corsika, plus a couple of variables concerning the reflector
|
---|
647 | parameters: the wobble mode and the atmospheric model
|
---|
648 | used for the simulation. The event header has also been changed to
|
---|
649 | include all the information present in the Corsika event
|
---|
650 | header. We also added in the event header three new variables which
|
---|
651 | tell us for each event what fraction of the Cherenkov photons on the
|
---|
652 | camera plane has been produced by electrons, muons, or other
|
---|
653 | particles.
|
---|
654 | \par
|
---|
655 | Finally, the ascii files {\it magic.def}, {\it
|
---|
656 | axisdev.dat} and {\it reflectivity.dat} which the program has used as
|
---|
657 | input are now attached at the end of the output file, so that each
|
---|
658 | output file contains all the relevant information on how it was
|
---|
659 | produced.
|
---|
660 |
|
---|
661 | \end{enumerate}
|
---|
662 |
|
---|
663 | %------------------------------------------------------------
|
---|
664 | \section{How to Install Reflector Program \label{installation}}
|
---|
665 |
|
---|
666 | You can get the current version of the Reflector Program from the
|
---|
667 | MAGIC web page: \\
|
---|
668 | {\bf http://hegra1.mppmu.mpg.de/MAGICWeb/ }\\
|
---|
669 | You can find
|
---|
670 | the latest public version of this program as tarred gzipped file in
|
---|
671 | the Monte Carlo Download area (you need the usual password). You have to
|
---|
672 | download the file reflector\_0.6.tar.gz and then follow the
|
---|
673 | instructions 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 |
|
---|
690 | If 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 |
|
---|
696 | You need a steering card to run the Reflector program. You can find an
|
---|
697 | example in the {\bf MagicProgs/Simulation/Detector/Reflector\_0.6/input.card}
|
---|
698 | file. You have to modify this file according to your needs (see below
|
---|
699 | for instructions about steering card) and then run the program with the
|
---|
700 | following statement:\\
|
---|
701 |
|
---|
702 | \hspace{1cm}{\bf reflector $<$ input.card}
|
---|
703 |
|
---|
704 | %------------------------------------------------------------
|
---|
705 | \section{Needed Files \label{neededfiles}}
|
---|
706 |
|
---|
707 | The Reflector program needs some other files to run. These files are
|
---|
708 | the following:
|
---|
709 | \begin{itemize}
|
---|
710 | \item {\bf magic.def}: contains the description of MAGIC telescope
|
---|
711 | geometry, together with some other parameters needed by the Reflector
|
---|
712 | program.
|
---|
713 | \item {\bf axisdev.dat}: contains data to simulate the possible
|
---|
714 | deviation of the spot of each single mirror on the camera plane due
|
---|
715 | to its non perfect alignment. The values are x, y coordinates
|
---|
716 | distributed at random (according to a gaussian with $\sigma =
|
---|
717 | 0.5$ cm).
|
---|
718 | \item {\bf reflectivity.dat}: contains the mirror reflectivity index as
|
---|
719 | a function of the wavelength.
|
---|
720 | \end{itemize}
|
---|
721 |
|
---|
722 | All these files (included in the reflector package) are usually kept
|
---|
723 | in the {\bf MagicProgs/Simulation/Detector/Data/} directory and {\it
|
---|
724 | in principle} you should {\bf not} make any change in them to run the
|
---|
725 | program.
|
---|
726 |
|
---|
727 | %------------------------------------------------------------
|
---|
728 | \section{Steering Card}
|
---|
729 |
|
---|
730 | The steering card sets all the parameters and options
|
---|
731 | to steer the reflection simulation. Each line of the steering card is
|
---|
732 | a statement with its parameters, if it is the case. Lines beginning
|
---|
733 | with \# are considered comments. The Reflector program parses all the
|
---|
734 | lines sequentially. Then if you repeat a statement with different
|
---|
735 | options 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}}
|
---|
889 | The reflector output file begins with two ascii lines, the first of
|
---|
890 | which informs us of the program version with which it has been
|
---|
891 | produced (NOTE: in the following, the dollar symbol \verb"$" stands
|
---|
892 | for a carriage return):\\
|
---|
893 | \\
|
---|
894 | \verb"reflector 0.6$START---RUN$" \\
|
---|
895 | \\
|
---|
896 | Then there is run header which is basically the one from Corsika with
|
---|
897 | two added variables, {\it wobble\_mode} and {\it
|
---|
898 | atmospheric\_model}. Check the Corsika manual for the meaning and
|
---|
899 | units of the rest of them. All of the variables are 4-byte real numbers
|
---|
900 | except the first, which is a 4 character string containing the run
|
---|
901 | header ascii label from Corsika:
|
---|
902 | \vspace*{0.5cm}
|
---|
903 | \\
|
---|
904 | %
|
---|
905 | \begin{tabular}{lll}
|
---|
906 | \multicolumn{2}{c}{Variable} & Description \\
|
---|
907 | \hline
|
---|
908 | && \\
|
---|
909 | 1 & ASCII Label & 'RUNH' \\
|
---|
910 | 2 & RunNumber & \\
|
---|
911 | 3 & date & \\
|
---|
912 | 4 & Corsika\_version & \\
|
---|
913 | 5 & NumObsLev & \\
|
---|
914 | 6 to 15 & HeightLev[10] & \\
|
---|
915 | 16 & SlopeSpec & \\
|
---|
916 | 17 & ELowLim & \\
|
---|
917 | 18 & EUppLim & \\
|
---|
918 | 19 & EGS4\_flag & \\
|
---|
919 | 20 & NKG\_flag & \\
|
---|
920 | 21 & Ecutoffh & \\
|
---|
921 | 22 & Ecutoffm & \\
|
---|
922 | 23 & Ecutoffe & \\
|
---|
923 | 24 & Ecutoffg & \\
|
---|
924 | 25 to 74 & C[50] & \\
|
---|
925 | 75 & wobble\_mode & Wobble mode with which the reflector was run (TDAS
|
---|
926 | 01-05) \\
|
---|
927 | 76 & atmospheric\_model & Atmospheric model used for the absorption
|
---|
928 | simulation \\
|
---|
929 | && 0 = no atmosphere; 1 = atm\_90percent; \\
|
---|
930 | && 2 = atm\_corsika. \\
|
---|
931 | 77 to 94 & dummy1[18] & not used \\
|
---|
932 | 95 to 134 & CKA[40] & \\
|
---|
933 | 135 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 | && \\
|
---|
944 | 140 to 140 & CSTRBA[11] & \\
|
---|
945 | 151 to 254 & dummy2[104] & not used \\
|
---|
946 | 255 to 259 & AATM[5] & \\
|
---|
947 | 260 to 264 & BATM[5] & \\
|
---|
948 | 265 to 269 & CATM[5] & \\
|
---|
949 | 270 to 273 & NFL[4] & \\
|
---|
950 | &\\
|
---|
951 | \hline
|
---|
952 | \end{tabular}
|
---|
953 | \vspace*{0.5cm}
|
---|
954 | \\
|
---|
955 | %
|
---|
956 | Then there comes a carriage return followed by the ascii flag which
|
---|
957 | indicates the start of an event, and again a carriage return:\\
|
---|
958 | \\
|
---|
959 | \verb"$START-EVENT$"\\
|
---|
960 | \\
|
---|
961 | and then the binary event header. Each variable is a 4-byte
|
---|
962 | float number except for the first one which is the event header label
|
---|
963 | from Corsika (a string of 4 characters). Some of of the variables from
|
---|
964 | Corsika 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 | && \\
|
---|
971 | 1 & ASCII label & 'EVTH' \\
|
---|
972 | 2 & EvtNumber & Event Number \\
|
---|
973 | 3 & PrimaryID & Primary particle identification code \\
|
---|
974 | 4 & Etotal & Primary particle total energy (GeV) \\
|
---|
975 | 5 & Thick0 & CORSIKA's starting altitude in g/cm2 \\
|
---|
976 | 6 & FirstTarget & CORSIKA's number of first target if fixed \\
|
---|
977 | 7 & zFirstInt & Height of first interaction in cm \\
|
---|
978 | 8 to 10 & p[3] & Primary particle momentum in x,y,-z directions (GeV) \\
|
---|
979 | 11 & Theta & Primary particle zenith angle (rad) \\
|
---|
980 | 12 & Phi & Primary particle azimuth angle (rad) \\
|
---|
981 |
|
---|
982 | 13 & NumRndSeq & Number of different CORSIKA random sequences (max. 10) \\
|
---|
983 | 14 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 |
|
---|
987 | 44 & RunNumber & Run number \\
|
---|
988 | 45 & DateRun & Date of run yymmdd \\
|
---|
989 | 46 & Corsika\_version & Version of {\it CORSIKA} \\
|
---|
990 |
|
---|
991 | 47 & NumObsLev & Number of observation levels (should be always 1 for
|
---|
992 | us) \\
|
---|
993 | 48 to 57 & HeightLev[10] & Height of observation levels in cm \\
|
---|
994 |
|
---|
995 | 58 & SlopeSpec & Energy spectrum slope \\
|
---|
996 | 59 & ELowLim & Energy lower limit (GeV) \\
|
---|
997 | 60 & EUppLim & Energy upper limit (GeV) \\
|
---|
998 | 61 & Ecutoffh & \\
|
---|
999 | 62 & Ecutoffm & \\
|
---|
1000 | 63 & 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 | && \\
|
---|
1013 | 64 & Ecutoffg & \\
|
---|
1014 | 65 & NFLAIN & \\
|
---|
1015 | 66 & NFLDIF & \\
|
---|
1016 | 67 & NFLPI0 & \\
|
---|
1017 | 68 & NFLPIF & \\
|
---|
1018 | 69 & NFLCHE & \\
|
---|
1019 | 70 & NFRAGM & \\
|
---|
1020 | 71 & Bx & \\
|
---|
1021 | 72 & By & \\
|
---|
1022 | 73 & EGS4yn & \\
|
---|
1023 | 74 & NKGyn & \\
|
---|
1024 | 75 & GHEISHAyn & \\
|
---|
1025 | 76 & VENUSyn & \\
|
---|
1026 | 77 & CERENKOVyn & \\
|
---|
1027 | 78 & NEUTRINOyn & \\
|
---|
1028 | 79 & HORIZONTyn & \\
|
---|
1029 | 80 & COMPUTER & \\
|
---|
1030 | 81 & ThetaMin & Minimum Theta of primaries (deg) \\
|
---|
1031 | 82 & ThetaMax & Maximum Theta of primaries (deg) \\
|
---|
1032 | 83 & PhiMin & Minimum Phi of primaries (deg) \\
|
---|
1033 | 84 & PhiMax & Maximum Phi of primaries (deg) \\
|
---|
1034 | 85 & CBunchSize & \\
|
---|
1035 | 86 & CDetInX & \\
|
---|
1036 | 87 & CDetInY & \\
|
---|
1037 | 88 & CSpacInX & \\
|
---|
1038 | 89 & CSpacInY & \\
|
---|
1039 | 90 & CLenInX & \\
|
---|
1040 | 91 & CLenInY & \\
|
---|
1041 | 92 & COutput & \\
|
---|
1042 | 93 & AngleNorthX& \\
|
---|
1043 | 94 & MuonInfo & \\
|
---|
1044 | 95 & StepLength & \\
|
---|
1045 | 96 & CWaveLower & Wavelength lower limit (nm) \\
|
---|
1046 | 97 & CWaveUpper & Wavelength upper limit (nm) \\
|
---|
1047 | 98 & Multipl & \\
|
---|
1048 | 99 to 138 & CorePos[2][20] & Core positions of randomized shower \\
|
---|
1049 | 139 to 140 & SIBYLL[2] & \\
|
---|
1050 | 141 to 142 & QGSJET[2] & \\
|
---|
1051 | 143 to 144 & DPMJET[2] & \\
|
---|
1052 | 145 & VENUS\_cross & \\
|
---|
1053 | 146 & mu\_mult\_scat & \\
|
---|
1054 | 147 & NKG\_range & \\
|
---|
1055 | 148 to 149 & EFRCTHN[2] & \\
|
---|
1056 | 150 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 | && \\
|
---|
1067 | 152 & rthin\_rmax & \\
|
---|
1068 | 153 to 154 & viewcone\_angles[2] & Inner and outer angles of Corsika's VIEWCONE
|
---|
1069 | option. \\
|
---|
1070 | 155 & telescopePhi & Telescope azimuth (rad). Measured from South, counter-clockwise \\
|
---|
1071 | 156 & telescopeTheta & Telescope zenith angle (rad) \\
|
---|
1072 | 157 & TimeFirst & Arrival time on camera of first photon (ns) \\
|
---|
1073 | 158 & 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)\\
|
---|
1077 | 159 & longi\_Nmax & Numer of charged particles at maximum \\
|
---|
1078 | 160 & longi\_t0 & Atmospheric depth of shower starting point (N=0) \\
|
---|
1079 | 161 & longi\_tmax & Atmospheric depth of shower maximum (g/cm$^2$) \\
|
---|
1080 | 162 & longi\_a & \\
|
---|
1081 | 163 & longi\_b & For {\bf longi\_a}, {\bf longi\_b}, {\bf longi\_c}, see CORSIKA manual \\
|
---|
1082 | 164 & longi\_c & \\
|
---|
1083 | 165 & longi\_chi2 & $\chi^2/dof$ of the fit\\
|
---|
1084 | 166 & CORSIKAPhs & Original photons written by {\it CORSIKA} \\
|
---|
1085 | 167 & AtmAbsPhs & Photons absorbed by the atmosphere \\
|
---|
1086 | 168 & MirrAbsPhs & Photons absorbed by the mirror \\
|
---|
1087 | 169 & OutOfMirrPhs & Photons outside the mirror \\
|
---|
1088 | 170 & BlackSpotPhs & Photons lost in the "black spot" \\
|
---|
1089 | 171 & OutOfChamPhs & Photons outside the camera \\
|
---|
1090 | 172 & CPhotons & Photons reaching the camera \\
|
---|
1091 |
|
---|
1092 | 173 & elec\_cph\_fraction & Fraction of C-photons produced by electrons \\
|
---|
1093 | 174 & muon\_cph\_fraction & Fraction of C-photons produced by muons \\
|
---|
1094 | 175 & other\_cph\_fraction & Fraction of C-photons produced by electrons \\
|
---|
1095 | 176 to 182 & dummy[7] & not used \\
|
---|
1096 | & \\
|
---|
1097 | \hline
|
---|
1098 | \end{tabular}
|
---|
1099 | %
|
---|
1100 | \vspace*{0.5cm}
|
---|
1101 | \\
|
---|
1102 | The event header is followed by 8-word blocks, one for each Cherenkov
|
---|
1103 | photon that reaches the camera. A photon block contains the following
|
---|
1104 | variables (as 4-byte float numbers):
|
---|
1105 | \vspace*{0.5cm}
|
---|
1106 | \\
|
---|
1107 | \begin{tabular}{ll}
|
---|
1108 | Variable & Description \\
|
---|
1109 | \hline
|
---|
1110 | & \\
|
---|
1111 | w & 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). \\
|
---|
1116 | x, y & Impact point in camera coordinates (cm) \\
|
---|
1117 | u, v & Director cosines of down-going versor indicating the photon direction \\
|
---|
1118 | t & Arrival time on camera (ns), measured from the time of first
|
---|
1119 | interaction of the primary \\
|
---|
1120 | h & Production height (cm), measured above sea level on the
|
---|
1121 | vertical of the telescope location \\
|
---|
1122 | & (it is not the {\it true} height which would be measured on
|
---|
1123 | the vertical of the emitting particle!) \\
|
---|
1124 | phi & Incidence angle with respect to camera plane (rad) \\
|
---|
1125 | & \\
|
---|
1126 | \hline
|
---|
1127 | \end{tabular}
|
---|
1128 | \vspace*{0.5cm}
|
---|
1129 | \\
|
---|
1130 | After the last photon block of an event there is a carriage return
|
---|
1131 | followed by the ascii flag indicating the event end, and then two more
|
---|
1132 | carriage returns before the ascii flag of the beginning of the next
|
---|
1133 | event, and so on:\\
|
---|
1134 | \\
|
---|
1135 | \verb"$END---EVENT$$START-EVENT$Event_header....$END---EVENT$$END-----RUN$$START---RUN$..."\\
|
---|
1136 | \\
|
---|
1137 | The 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
|
---|
1139 | files). After the last processed run, an end of file flag is
|
---|
1140 | written:\\
|
---|
1141 | \\
|
---|
1142 | \verb"...$END---EVENT$$END-----RUN$$END----FILE$"\\
|
---|
1143 | \\
|
---|
1144 | Finally, after this flag an ``ascii tail'' has been attached to the file:
|
---|
1145 | it 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 | \\
|
---|
1151 | In this way all the relevant parameters used to produce the output are
|
---|
1152 | kept 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 | %
|
---|
1159 | The simulation of the absorption of Cherenkov light in the atmosphere
|
---|
1160 | has been included in the {\it Reflector} program because this feature
|
---|
1161 | was not yet available in the first versions of CORSIKA used within the
|
---|
1162 | MAGIC collaboration. In the latest CORSIKA versions, the atmospheric
|
---|
1163 | absorption has been included as an option, but it is not
|
---|
1164 | compatible with the simulation of a curved atmosphere \cite{cor02},
|
---|
1165 | and hence we have kept this step as a part of our reflector
|
---|
1166 | simulation. This appendix describes how the atmospheric absorption is
|
---|
1167 | implemented in the program when the option ATM\_CORSIKA (see section
|
---|
1168 | \ref{commands}) is chosen.
|
---|
1169 | \par
|
---|
1170 | The geometry of the problem is sketched in figure
|
---|
1171 | \ref{fig:atmoscheme}. A Cherenkov photon is emitted in point A and
|
---|
1172 | travels 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$
|
---|
1174 | between 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
|
---|
1182 | observation level and $\theta$ is the zenith angle of the photon
|
---|
1183 | trajectory measured at the telescope site. The Cherenkov output of
|
---|
1184 | CORSIKA contains for each photon the height $h_C$ of the emission
|
---|
1185 | point A, measured along the vertical of the observer. The {\it true
|
---|
1186 | vertical height} $h_2$ of the emission point can be obtained by
|
---|
1187 | replacing $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
|
---|
1196 | of a Cherenkov photon (point A), and the optical path traversed down to the
|
---|
1197 | telescope (point B).}
|
---|
1198 | \label{fig:atmoscheme}
|
---|
1199 | \end{figure}
|
---|
1200 | %
|
---|
1201 | \par
|
---|
1202 | The optical path $I(\theta, h_1, h_2)$ traversed by the photon can be
|
---|
1203 | calculated 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
|
---|
1206 | for 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}
|
---|
1215 | Rayleigh scattering is the scattering of light by particles smaller
|
---|
1216 | than its wavelength. These are in our case the air molecules. The
|
---|
1217 | transmission coefficient due to Rayleigh scattering is a strong
|
---|
1218 | function of the wavelength $\lambda$:
|
---|
1219 | %
|
---|
1220 | \begin{equation}
|
---|
1221 | T_{\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 | %
|
---|
1226 | Here $I(\theta, h_1, h_2)$ is the optical path (in g/cm$^2$) traversed
|
---|
1227 | between points A and B, and $x_R = 2970$ g/cm$^2$ is the mean free path of
|
---|
1228 | the Rayleigh scattering at $\lambda = 400$ nm.
|
---|
1229 | \par
|
---|
1230 | A convenient way of expressing the optical path is the following:
|
---|
1231 | %
|
---|
1232 | \begin{equation}
|
---|
1233 | I\;(\theta, h_1, h_2) = (x_1 - x_2) \cdot \mathcal{AM}\;(\theta, h_1, h_2)
|
---|
1234 | \end{equation}
|
---|
1235 | Here $x_{i=1,2}$ is the mass overburden of the atmosphere above a
|
---|
1236 | height $h_i$ (in the
|
---|
1237 | vertical direction) and $\mathcal{AM}$ is the so called {\it air
|
---|
1238 | mass}\footnote{If we set $h_2 = \infty$, we have the usual definition
|
---|
1239 | of {\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
|
---|
1247 | fig. \ref{fig:airmass}). In our simulation, for the calculation of the
|
---|
1248 | mass overburden $x_i$ we have used the U.S. standard atmosphere
|
---|
1249 | parametrized by J. Linsley \cite{cor02}, the same we used in Corsika
|
---|
1250 | for the shower development simulation. It consists of five layers: in
|
---|
1251 | the lower four the density decreases exponentially with height, and in
|
---|
1252 | the upper one the mass overburden cecreases linearly until it vanishes
|
---|
1253 | at $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
|
---|
1261 | text. The air mass has been calculated for an exponential atmosphere
|
---|
1262 | with 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
|
---|
1264 | we can see the dependence with the emission height $h_2$ is very small.}
|
---|
1265 | \label{fig:airmass}
|
---|
1266 | \end{figure}
|
---|
1267 | %
|
---|
1268 | \par
|
---|
1269 | For the estimate of $\mathcal{AM}$, a simpler atmospheric model has
|
---|
1270 | been used, in which the vertical density profile is described by a
|
---|
1271 | single exponential: $\rho = \rho_0 \; e^{-h/H}$ with scale height $H
|
---|
1272 | = 7.4$ km. This simplifies the calculations, and is accurate enough
|
---|
1273 | for our purposes. Using (\ref{eq:dldh}) the optical path $I(\theta,
|
---|
1274 | h_1, h_2)$ can then be obtained approximately as:
|
---|
1275 | %
|
---|
1276 | \begin{equation}
|
---|
1277 | I(\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 | %
|
---|
1284 | and 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 | %
|
---|
1302 | where 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
|
---|
1305 | value of $\theta$, $h_1$ and $h_2$. In fig. \ref{fig:rayleigh} the
|
---|
1306 | resulting Rayleigh transmission coefficient $T_{\text{Rayl}}$ finally
|
---|
1307 | obtained from (\ref{eq:rayleigh}) is plotted versus the zenith angle
|
---|
1308 | for 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
|
---|
1316 | different wavelengths. The solid, dashed and dotted lines correspond
|
---|
1317 | respectively to light coming from 5, 10 and 20 km distance from the
|
---|
1318 | telescope.}
|
---|
1319 | \label{fig:rayleigh}
|
---|
1320 | \end{figure}
|
---|
1321 | %
|
---|
1322 | \subsection{Mie scattering}
|
---|
1323 | Cherenkov light also suffers Mie scattering through interaction with
|
---|
1324 | small dust particles suspended in the air (aerosols), whose size is
|
---|
1325 | comparable to the wavelength of the light. In our simulation of the
|
---|
1326 | attenuation due to aerosols we have used the model proposed by
|
---|
1327 | Elterman \cite{elterman64,elterman65}, which considers an aerosol
|
---|
1328 | number density $N_p$ which (roughly) decreases exponentially up to 10
|
---|
1329 | km a.s.l. with scale height $H \simeq 1.2$ km, followed by a more
|
---|
1330 | tenuous layer between 10 and 30 km (see fig. \ref{fig:aerosol}a). In
|
---|
1331 | this model, the aerosol size distribution is considered to be
|
---|
1332 | unchanged 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
|
---|
1340 | aerosols as a function of height above sea level; in (b), aerosol
|
---|
1341 | attenuation coefficient at sea level as a function of wavelength.}
|
---|
1342 | \label{fig:aerosol}
|
---|
1343 | \end{figure}
|
---|
1344 | %
|
---|
1345 | \par
|
---|
1346 | Measured values of the aerosol attenuation coefficients at sea level
|
---|
1347 | $\beta_p(0)$ for different wavelengths \cite{elterman65} are shown in
|
---|
1348 | figure \ref{fig:aerosol}b. To obtain the attenuation coefficient at a
|
---|
1349 | given 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
|
---|
1351 | transmission coefficient for the trajectory from A to B depicted in
|
---|
1352 | figure \ref{fig:atmoscheme} would then be:
|
---|
1353 | %
|
---|
1354 | \begin{equation}
|
---|
1355 | T_{\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 | %
|
---|
1362 | Here $\tau_{mie}$ is the aerosol optical depth of the path from A to
|
---|
1363 | B. Given that the aerosol density distribution is not a simple
|
---|
1364 | exponential, we have to do the integral in (\ref{eq:aerosoltau})
|
---|
1365 | numerically. The integral depends on $h_2$ and on $\theta$, through
|
---|
1366 | $dL/dh$ (it also
|
---|
1367 | depends on $h_1$, but this is the observation level and therefore
|
---|
1368 | fixed). In this case we use the exact expression for $\;dL/dh\;$ which can be
|
---|
1369 | obtained from (\ref{eq:height}). At the beginning of each simulation
|
---|
1370 | run 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
|
---|
1373 | linear interpolation has been used to obtain the value of $N_p$ for
|
---|
1374 | any height. During the simulation of each Cherenkov photon, we get the
|
---|
1375 | corresponding 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
|
---|
1384 | function of the distance between the photon emission point and the
|
---|
1385 | telescope. Plots for four different zenith angles between 0 and 80
|
---|
1386 | degrees are shown.}
|
---|
1387 | \label{fig:mie}
|
---|
1388 | \end{figure}
|
---|
1389 | %
|
---|
1390 | \par
|
---|
1391 | Since in this model the aerosols are concentrated mainly at very low
|
---|
1392 | altitude, the transmission coefficient is more or less constant above
|
---|
1393 | a certain height (which depends on $\theta$), as can be seen in
|
---|
1394 | fig. \ref{fig:mie}. For instance, for vertically incident 300 nm light
|
---|
1395 | emitted higher than 4 km above the telescope, the Mie transmission is
|
---|
1396 | about 0.95.
|
---|
1397 | %
|
---|
1398 | \subsection{Absorption by Ozone}
|
---|
1399 | %
|
---|
1400 | The absorption of Cherenkov light by Ozone has been implemented
|
---|
1401 | following also the Elterman standard atmosphere \cite{elterman65}. The
|
---|
1402 | coefficient 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
|
---|
1409 | absorption coefficient (cm$^{-1}$) and $D_3(h)$ is the ozone
|
---|
1410 | concentration (cm km$^{-1}$) according to Elterman. The transmission
|
---|
1411 | coefficient of Ozone in the path $\overline{\text{AB}}$ is then:
|
---|
1412 | %
|
---|
1413 | \begin{equation}
|
---|
1414 | T_{\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
|
---|
1426 | Ozone absorption (b). The Vigroux coefficients for $\lambda =$ 380 and
|
---|
1427 | 400 nm are zero.}
|
---|
1428 | \label{fig:ozone}
|
---|
1429 | \end{figure}
|
---|
1430 | %
|
---|
1431 | \par
|
---|
1432 | Once 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
|
---|
1434 | an integral which depends on $h_1$, $h_2$ and $\theta$. We proceed in
|
---|
1435 | the same way as before, precalculating the values of the integral in
|
---|
1436 | steps of $\Delta\theta = 1^\circ$ and $\Delta h = 100$ m, up to a
|
---|
1437 | height of 50 km a.s.l. (where the ozone concentration becomes
|
---|
1438 | negligible), and then reading the appropriate values for every
|
---|
1439 | simulated photon.
|
---|
1440 | \par
|
---|
1441 | Finally, the overall atmospheric transmission coefficient is
|
---|
1442 | calculated as
|
---|
1443 | %
|
---|
1444 | \begin{equation}
|
---|
1445 | T_{total} = T_{Ray} \cdot T_{Mie} \cdot T_{Ozone}
|
---|
1446 | \end{equation}
|
---|
1447 | %
|
---|
1448 | In figure \ref{fig:absorplot} the atmospheric transmission as a
|
---|
1449 | function of the distance to the telescope for $\theta = 0^\circ$ is
|
---|
1450 | shown. Ozone absorption turns out to be dominant below 320 nm, while
|
---|
1451 | Rayleigh scattering is the main cause of the loss of photons at longer
|
---|
1452 | wavelengths.
|
---|
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
|
---|
1460 | function of the distance between the emission point and the
|
---|
1461 | telescope. The contributions of absorption by ozone and of Rayleigh
|
---|
1462 | and 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 |
|
---|
1470 | The list of all Reflector files follows.
|
---|
1471 | \begin{verbatim}
|
---|
1472 |
|
---|
1473 | MagicProgs/Simulation/Detector/Reflector_0.6/Changelog
|
---|
1474 | MagicProgs/Simulation/Detector/Reflector_0.6/Makefile
|
---|
1475 | MagicProgs/Simulation/Detector/Reflector_0.6/atm.c
|
---|
1476 | MagicProgs/Simulation/Detector/Reflector_0.6/atm.h
|
---|
1477 | MagicProgs/Simulation/Detector/Reflector_0.6/attach.c
|
---|
1478 | MagicProgs/Simulation/Detector/Reflector_0.6/attenu.f
|
---|
1479 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux
|
---|
1480 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.linux-gnu
|
---|
1481 | MagicProgs/Simulation/Detector/Reflector_0.6/config.mk.osf1
|
---|
1482 | MagicProgs/Simulation/Detector/Reflector_0.6/diag.c
|
---|
1483 | MagicProgs/Simulation/Detector/Reflector_0.6/diag.h
|
---|
1484 | MagicProgs/Simulation/Detector/Reflector_0.6/geometry.c
|
---|
1485 | MagicProgs/Simulation/Detector/Reflector_0.6/geometry.h
|
---|
1486 | MagicProgs/Simulation/Detector/Reflector_0.6/header.c
|
---|
1487 | MagicProgs/Simulation/Detector/Reflector_0.6/header.h
|
---|
1488 | MagicProgs/Simulation/Detector/Reflector_0.6/init.c
|
---|
1489 | MagicProgs/Simulation/Detector/Reflector_0.6/init.h
|
---|
1490 | MagicProgs/Simulation/Detector/Reflector_0.6/input.card
|
---|
1491 | MagicProgs/Simulation/Detector/Reflector_0.6/lagrange.h
|
---|
1492 | MagicProgs/Simulation/Detector/Reflector_0.6/parms.c
|
---|
1493 | MagicProgs/Simulation/Detector/Reflector_0.6/parms.h
|
---|
1494 | MagicProgs/Simulation/Detector/Reflector_0.6/ph2cph.c
|
---|
1495 | MagicProgs/Simulation/Detector/Reflector_0.6/refl-install
|
---|
1496 | MagicProgs/Simulation/Detector/Reflector_0.6/reflector.c
|
---|
1497 | MagicProgs/Simulation/Detector/Reflector_0.6/version.h
|
---|
1498 |
|
---|
1499 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.ps
|
---|
1500 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/Tdas0211.tex
|
---|
1501 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/magic-tdas.sty
|
---|
1502 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/magiclogo.eps
|
---|
1503 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/absorplot.eps
|
---|
1504 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/aerosol.eps
|
---|
1505 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/airmass.eps
|
---|
1506 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/atmoscheme.eps
|
---|
1507 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/colimation.eps
|
---|
1508 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma.eps
|
---|
1509 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coma_star.eps
|
---|
1510 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/coorsystems.eps
|
---|
1511 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/evcompare.eps
|
---|
1512 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/mie.eps
|
---|
1513 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/ozone.eps
|
---|
1514 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/parabola.eps
|
---|
1515 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/rayleigh.eps
|
---|
1516 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/refl06images.eps
|
---|
1517 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/reflec.eps
|
---|
1518 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1694.eps
|
---|
1519 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot10kmf1700.eps
|
---|
1520 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/spot_inf_f1697.eps
|
---|
1521 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/telecoor.eps
|
---|
1522 | MagicProgs/Simulation/Detector/Reflector_0.6/doc/eps/timing.eps
|
---|
1523 |
|
---|
1524 | MagicProgs/Simulation/Detector/Reflector_0.6/tester/Makefile
|
---|
1525 | MagicProgs/Simulation/Detector/Reflector_0.6/tester/cermaker.c
|
---|
1526 |
|
---|
1527 | MagicProgs/Simulation/Detector/Data/axisdev.dat
|
---|
1528 | MagicProgs/Simulation/Detector/Data/magic.def
|
---|
1529 | MagicProgs/Simulation/Detector/Data/reflectivity.dat
|
---|
1530 |
|
---|
1531 | MagicProgs/Simulation/Detector/lib/libranlib.a.osf1
|
---|
1532 | MagicProgs/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}
|
---|
1547 | L. Elterman, Applied Optics Vol. 3, No. 6 (1964) 745.
|
---|
1548 |
|
---|
1549 | \bibitem{elterman65}
|
---|
1550 | L. Elterman, R.B. Toolin, S.L. Valley (editor), Handbook of
|
---|
1551 | geophysics and space environments, McGraw-Hill, N.Y. (1965).
|
---|
1552 |
|
---|
1553 | \bibitem{cor02}D. Heck and J. Knapp, EAS Simulation with CORSIKA: A User's
|
---|
1554 | Manual, 2002.
|
---|
1555 |
|
---|
1556 | \bibitem{vigroux53}
|
---|
1557 | E. Vigroux, Contributions \`a l'étude expérimentale de l'absorption
|
---|
1558 | de 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
|
---|