1 | \section{Signal Reconstruction Algorithms \label{sec:algorithms}}
|
---|
2 |
|
---|
3 | \subsection{Implementation of Signal Extractors in MARS}
|
---|
4 |
|
---|
5 | We performed all studies presented in this note using and developing the common MAGIC software framework
|
---|
6 | MARS~\cite{MARS}.
|
---|
7 | \par
|
---|
8 | All signal extractor classes are stored in the MARS-directory {\textit{\bf msignal/}}.
|
---|
9 | There, the base classes {\textit{\bf MExtractor}}, {\textit{\bf MExtractTime}}, {\textit{\bf MExtractTimeAndCharge}} and
|
---|
10 | all individual extractors can be found. Figure~\ref{fig:extractorclasses} gives a sketch of the
|
---|
11 | inheritances and tasks of each class.
|
---|
12 |
|
---|
13 | \begin{figure}[htp]
|
---|
14 | \includegraphics[width=0.99\linewidth]{ExtractorClasses.eps}
|
---|
15 | \caption{Sketch of the inheritances of three typical MARS signal extractor classes:
|
---|
16 | MExtractFixedWindow, MExtractTimeFastSpline and MExtractTimeAndChargeDigitalFilter}
|
---|
17 | \label{fig:extractorclasses}
|
---|
18 | \end{figure}
|
---|
19 |
|
---|
20 | The following base classes for the extractor tasks are used:
|
---|
21 | \begin{description}
|
---|
22 | \item[MExtractor:\xspace] This class provides the basic data members, equal for all extractors, which are:
|
---|
23 | \begin{enumerate}
|
---|
24 | \item Global extraction ranges, defined by the variables
|
---|
25 | {\textit{\bf fHiGainFirst, fHiGainLast, fLoGainFirst, fLoGainLast}} and the function {\textit{\bf SetRange()}}.
|
---|
26 | The ranges always {\textit{\bf include}} the edge slices.
|
---|
27 | \item An internal variable {\textit{\bf fHiLoLast}} regulating the overlap of the desired high-gain
|
---|
28 | extraction range into the low-gain array.
|
---|
29 | \item The maximum possible FADC value, before the slice is declared as saturated, defined
|
---|
30 | by the variable {\textit{\bf fSaturationLimit}} (default:\,254).
|
---|
31 | \item The typical delay between high-gain and low-gain slices, expressed in FADC slices and parameterized
|
---|
32 | by the variable {\textit{\bf fOffsetLoGain}} (default:\,1.51)
|
---|
33 | \item Pointers to the storage containers {\textit{\bf MRawEvtData, MRawRunHeader, MPedestalCam}}
|
---|
34 | and~{\textit{\bf MExtractedSignalCam}}, defined by the variables
|
---|
35 | {\textit{\bf fRawEvt, fRunHeader, fPedestals}} and~{\textit{\bf fSignals}}.
|
---|
36 | \item Names of the storage containers to be searched for in the parameter list, parameterized
|
---|
37 | by the variables {\textit{\bf fNamePedestalCam}} and~{\textit{\bf fNameSignalCam}} (default: ``MPedestalCam''
|
---|
38 | and~''MExtractedSignalCam'').
|
---|
39 | \item The equivalent number of FADC samples, used for the calculation of the pedestal RMS and then the
|
---|
40 | number of photo-electrons with the F-Factor method (see eq.~\ref{eq:rmssubtraction} and
|
---|
41 | section~\ref{sec:photo-electrons}). This number is parameterized by the variables
|
---|
42 | {\textit{\bf fNumHiGainSamples}} and~{\textit{\bf fNumLoGainSamples}}.
|
---|
43 | \end{enumerate}
|
---|
44 |
|
---|
45 | {\textit {\bf MExtractor}} is able to loop over all events, if the {\textit{\bf Process()}}-function is not overwritten.
|
---|
46 | It uses the following (virtual) functions, to be overwritten by the derived extractor class:
|
---|
47 |
|
---|
48 | \begin{enumerate}
|
---|
49 | \item void {\textit {\bf FindSignalHiGain}}(Byte\_t* firstused, Byte\_t* logain, Float\_t\& sum, Byte\_t\& sat) const
|
---|
50 | \item void {\textit {\bf FindSignalLoGain}}(Byte\_t* firstused, Float\_t\& sum, Byte\_t\& sat) const
|
---|
51 | \end{enumerate}
|
---|
52 |
|
---|
53 | where the pointers ``firstused'' point to the first used FADC slice declared by the extraction ranges,
|
---|
54 | the pointer ``logain'' points to the beginning of the ``low-gain'' FADC slices array (to be used for
|
---|
55 | pulses reaching into the low-gain array) and the variables ``sum'' and ``sat'' get filled with the
|
---|
56 | extracted signal and the number of saturating FADC slices, respectively.
|
---|
57 | \par
|
---|
58 | The pedestals get subtracted automatically {\textit {\bf after}} execution of these two functions.
|
---|
59 |
|
---|
60 | \item[MExtractTime:\xspace] This class provides - additionally to those already declared in {\textit{\bf MExtractor}} -
|
---|
61 | the basic data members, equal for all time extractors, which are:
|
---|
62 | \begin{enumerate}
|
---|
63 | \item Pointer to the storage container {\textit{\bf MArrivalTimeCam}}
|
---|
64 | parameterized by the variable
|
---|
65 | {\textit{\bf fArrTime}}.
|
---|
66 | \item The name of the ``MArrivalTimeCam''-container to be searched for in the parameter list,
|
---|
67 | parameterized by the variables {\textit{\bf fNameTimeCam}} (default: ``MArrivalTimeCam'' ).
|
---|
68 | \end{enumerate}
|
---|
69 |
|
---|
70 | {\textit {\bf MExtractTime}} is able to loop over all events, if the {\textit{\bf Process()}}-function is not
|
---|
71 | overwritten.
|
---|
72 | It uses the following (virtual) functions, to be overwritten by the derived extractor class:
|
---|
73 |
|
---|
74 | \begin{enumerate}
|
---|
75 | \item void {\textit {\bf FindTimeHiGain}}(Byte\_t* firstused, Float\_t\& time, Float\_t\& dtime, Byte\_t\& sat, const MPedestlPix \&ped) const
|
---|
76 | \item void {\textit {\bf FindTimeLoGain}}(Byte\_t* firstused, Float\_t\& time, Float\_t\& dtime, Byte\_t\& sat, const MPedestalPix \&ped) const
|
---|
77 | \end{enumerate}
|
---|
78 |
|
---|
79 | where the pointers ``firstused'' point to the first used FADC slice declared by the extraction ranges,
|
---|
80 | and the variables ``time'', ``dtime'' and ``sat'' get filled with the
|
---|
81 | extracted arrival time, its error and the number of saturating FADC slices, respectively.
|
---|
82 | \par
|
---|
83 | The pedestals can be used for the arrival time extraction via the reference ``ped''.
|
---|
84 |
|
---|
85 | \item[MExtractTimeAndCharge:\xspace] This class provides - additionally to those already declared in
|
---|
86 | {\textit{\bf MExtractor}} and {\textit{\bf MExtractTime}} -
|
---|
87 | the basic data members, equal for all time and charge extractors, which are:
|
---|
88 | \begin{enumerate}
|
---|
89 | \item The actual extraction window sizes, parameterized by the variables
|
---|
90 | {\textit{\bf fWindowSizeHiGain}} and {\textit{\bf fWindowSizeLoGain}}.
|
---|
91 | \item The shift of the low-gain extraction range start w.r.t. to the found high-gain arrival
|
---|
92 | time, parameterized by the variable {\textit{\bf fLoGainStartShift}} (default: -2.8)
|
---|
93 | \end{enumerate}
|
---|
94 |
|
---|
95 | {\textit {\bf MExtractTimeAndCharge}} is able to loop over all events, if the {\textit{\bf Process()}}-function is not
|
---|
96 | overwritten.
|
---|
97 | It uses the following (virtual) functions, to be overwritten by the derived extractor class:
|
---|
98 |
|
---|
99 | \begin{enumerate}
|
---|
100 | \item void {\textit {\bf FindTimeAndChargeHiGain}}(Byte\_t* firstused, Byte\_t* logain, Float\_t\& sum, Float\_t\& dsum,
|
---|
101 | Float\_t\& time, Float\_t\& dtime, Byte\_t\& sat,
|
---|
102 | const MPedestlPix \&ped, const Bool\_t abflag) const
|
---|
103 | \item void {\textit {\bf FindTimeAndChargeLoGain}}(Byte\_t* firstused, Float\_t\& sum, Float\_t\& dsum,
|
---|
104 | Float\_t\& time, Float\_t\& dtime, Byte\_t\& sat,
|
---|
105 | const MPedestalPix \&ped, const Bool\_t abflag) const
|
---|
106 | \end{enumerate}
|
---|
107 |
|
---|
108 | where the pointers ``firstused'' point to the first used FADC slice declared by the extraction ranges,
|
---|
109 | the pointer ``logain'' point to the beginning of the low-gain FADC slices array (to be used for
|
---|
110 | pulses reaching into the ``low-gain'' array),
|
---|
111 | the variables ``sum'', ``dsum'' get filled with the
|
---|
112 | extracted signal and its error. The variables ``time'', ``dtime'' and ``sat'' get filled with the
|
---|
113 | extracted arrival time, its error and the number of saturating FADC slices, respectively.
|
---|
114 | \par
|
---|
115 | The pedestals can be used for the extraction via the reference ``ped'', also the ``AB-flag'' is given
|
---|
116 | for clock noise correction.
|
---|
117 | \end{description}
|
---|
118 |
|
---|
119 |
|
---|
120 | \subsection{Pure Signal Extractors}
|
---|
121 |
|
---|
122 | The pure signal extractors have in common that they reconstruct only the
|
---|
123 | charge, but not the arrival time. All extractors treated here derive from the MARS-base
|
---|
124 | class {\textit{\bf MExtractor}} which provides the following facilities:
|
---|
125 |
|
---|
126 | \begin{itemize}
|
---|
127 | \item The global extraction limits can be set from outside
|
---|
128 | \item FADC saturation is kept track of
|
---|
129 | \end{itemize}
|
---|
130 |
|
---|
131 | The following adjustable parameters have to be set from outside:
|
---|
132 | \begin{description}
|
---|
133 | \item[Global extraction limits:\xspace] Limits in between which the extractor is allowed
|
---|
134 | to extract the signal, for high gain and low gain, respectively.
|
---|
135 | \end{description}
|
---|
136 |
|
---|
137 | As the pulses jitter by about one FADC slice,
|
---|
138 | not every pulse lies exactly within the optimal limits, especially if one chooses small
|
---|
139 | extraction windows.
|
---|
140 | Moreover, the readout position with respect to the trigger position has changed a couple
|
---|
141 | of times during last year, therefore a very careful adjustment of the extraction limits
|
---|
142 | is mandatory before using these extractors.
|
---|
143 |
|
---|
144 | \subsubsection{Fixed Window}
|
---|
145 |
|
---|
146 | This extractor is implemented in the MARS-class {\textit{\bf MExtractFixedWindow}}.
|
---|
147 | It simply adds the FADC slice contents in the assigned ranges.
|
---|
148 | As it does not correct for the clock-noise, only an even number of samples is allowed.
|
---|
149 | Figure~\ref{fig:fixedwindowsketch} gives a sketch of the extraction ranges used in this
|
---|
150 | paper and for two typical calibration pulses.
|
---|
151 |
|
---|
152 | \begin{figure}[htp]
|
---|
153 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindow_5Led_UV.eps}
|
---|
154 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindow_23Led_Blue.eps}
|
---|
155 | \caption[Sketch extraction ranges MExtractFixedWindow]{%
|
---|
156 | Sketch of the extraction ranges for the extractor {\textit{\bf MExtractFixedWindow}}
|
---|
157 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
158 | The pulse would be shifted half a slice to the right for an outer pixel. }
|
---|
159 | \label{fig:fixedwindowsketch}
|
---|
160 | \end{figure}
|
---|
161 |
|
---|
162 |
|
---|
163 | \subsubsection{Fixed Window with Integrated Cubic Spline}
|
---|
164 |
|
---|
165 | This extractor is implemented in the MARS-class {\textit{\bf MExtractFixedWindowSpline}}. It
|
---|
166 | uses a cubic spline algorithm, adapted from \cite{NUMREC} and integrates the
|
---|
167 | spline interpolated FADC slice values from a fixed extraction range. The edge slices are counted as half.
|
---|
168 | As it does not correct for the clock-noise, only an odd number of samples is allowed.
|
---|
169 | Figure~\ref{fig:fixedwindowsplinesketch} gives a sketch of the extraction ranges used in this
|
---|
170 | paper and for typical calibration pulses.
|
---|
171 |
|
---|
172 | \begin{figure}[htp]
|
---|
173 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindowSpline_5Led_UV.eps}
|
---|
174 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindowSpline_23Led_Blue.eps}
|
---|
175 | \caption[Sketch extraction ranges MExtractFixedWindowSpline]{%
|
---|
176 | Sketch of the extraction ranges for the extractor {\textit{\bf MExtractFixedWindowSpline}}
|
---|
177 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
178 | The pulse would be shifted half a slice to the right for an outer pixel. }
|
---|
179 | \label{fig:fixedwindowsplinesketch}
|
---|
180 | \end{figure}
|
---|
181 |
|
---|
182 | \subsubsection{Fixed Window with Global Peak Search}
|
---|
183 |
|
---|
184 | This extractor is implemented in the MARS-class {\textit{\bf MExtractFixedWindowPeakSearch}}.
|
---|
185 | The basic idea of this extractor is to correct for coherent movements in arrival time for all pixels,
|
---|
186 | as e.g. caused by the trigger jitter.
|
---|
187 | In a first loop over the pixels, it determined a reference point slices number defined by the highest sum of
|
---|
188 | consecutive non-saturating FADC slices in a (smaller) peak-search window.
|
---|
189 | \par
|
---|
190 | In a second loop over the pixels,
|
---|
191 | it adds the contents of the FADC slices starting from the reference point over an extraction window of a pre-defined window size.
|
---|
192 | It loops twice over all pixels in every event, because it has to find the reference point, first.
|
---|
193 | As it does not correct for the clock-noise, only extraction windows with an even number of samples are allowed.
|
---|
194 | For a high intensity calibration run causing high-gain saturation in the whole camera, this
|
---|
195 | extractor apparently fails since only dead pixels are taken into account in the peak search
|
---|
196 | which cannot produce a saturated signal.
|
---|
197 | For this special case, we modified {\textit{\bf MExtractFixedWindowPeakSearch}}
|
---|
198 | such to define the peak search window as the one starting from the mean position of the first saturating slice.
|
---|
199 | \par
|
---|
200 | The following adjustable parameters have to be set from outside:
|
---|
201 | \begin{description}
|
---|
202 | \item[Peak Search Window:\xspace] Defines the ``sliding window'' size within which the peaking sum is
|
---|
203 | searched for (default: 4 slices)
|
---|
204 | \item[Offset from Window:\xspace] Defines the offset of the start of the extraction window w.r.t. the
|
---|
205 | starting point of the obtained peak search window (default: 1 slice)
|
---|
206 | \item[Low-Gain Peak shift:\xspace] Defines the shift in the low-gain with respect to the peak found
|
---|
207 | in the high-gain (default: 1 slice)
|
---|
208 | \end{description}
|
---|
209 |
|
---|
210 | Figure~\ref{fig:fixedwindowpeaksearchsketch} gives a sketch of the possible peak-search and extraction
|
---|
211 | window positions in two typical calibration pulses.
|
---|
212 |
|
---|
213 | \begin{figure}[htp]
|
---|
214 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindowPeakSearch_5Led_UV.eps}
|
---|
215 | \includegraphics[width=0.49\linewidth]{MExtractFixedWindowPeakSearch_23Led_Blue.eps}
|
---|
216 | \caption[Sketch extraction ranges MExtractFixedWindowPeakSearch]{%
|
---|
217 | Sketch of the extraction ranges for the extractor {\textit{\bf MExtractFixedWindowPeakSearch}}
|
---|
218 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
219 | The pulse would be shifted half a slice to the right for an outer pixel. }
|
---|
220 | \label{fig:fixedwindowpeaksearchsketch}
|
---|
221 | \end{figure}
|
---|
222 |
|
---|
223 | \subsection{Combined Extractors}
|
---|
224 |
|
---|
225 | The combined extractors have in common that for a given pulse, they reconstruct
|
---|
226 | both the arrival time and
|
---|
227 | the charge.
|
---|
228 | All combined extractors described here derive from the MARS-base
|
---|
229 | class {\textit{\bf MExtractTimeAndCharge}} which itself derives from MExtractor and MExtractTime.
|
---|
230 | It provides the following facilities:
|
---|
231 |
|
---|
232 | \begin{itemize}
|
---|
233 | \item Only one loop over all pixels is performed.
|
---|
234 | \item The individual FADC slice values get the clock-noise-corrected pedestals immediately subtracted.
|
---|
235 | \item The low-gain extraction range is adapted dynamically, based on the arrival time computed from the high-gain samples.
|
---|
236 | \item Arrival times extracted from the low-gain samples get corrected for the intrinsic time delay of the low-gain
|
---|
237 | pulse.
|
---|
238 | \item The global extraction limits can be set from outside.
|
---|
239 | \item FADC saturation is kept track of.
|
---|
240 | \end{itemize}
|
---|
241 |
|
---|
242 | The following adjustable parameters have to be set from outside, additionally to those declared in the
|
---|
243 | base classes MExtractor and MExtractTime:
|
---|
244 |
|
---|
245 | \begin{description}
|
---|
246 | \item[Global extraction limits:\xspace] Limits in between which the extractor is allowed
|
---|
247 | to search. They are fixed by the extractor for the high-gain, but re-adjusted for
|
---|
248 | every event in the low-gain, depending on the arrival time found in the low-gain.
|
---|
249 | However, the dynamically adjusted window is not allowed to pass beyond the global
|
---|
250 | limits.
|
---|
251 | \item[Low-gain start shift:\xspace] Global shift between the computed high-gain arrival
|
---|
252 | time and the start of the low-gain extraction limit (corrected for the intrinsic time offset).
|
---|
253 | This variable tells where the extractor is allowed to start searching for the low-gain signal
|
---|
254 | if the high-gain arrival time is known. It avoids that the extractor gets confused by possible high-gain
|
---|
255 | signals leaking into the ``low-gain'' region (default: -2.8).
|
---|
256 | \end{description}
|
---|
257 |
|
---|
258 | \subsubsection{Sliding Window with Amplitude-Weighted Time}
|
---|
259 |
|
---|
260 | This extractor is implemented in the MARS-class {\textit{\bf MExtractTimeAndChargeSlidingWindow}}.
|
---|
261 | It extracts the signal from a sliding window of an adjustable size, for high-gain and low-gain
|
---|
262 | individually (default: 6 and 6). The signal is the one which maximizes the summed
|
---|
263 | (clock-noise and pedestal-corrected) consecutive FADC slice contents.
|
---|
264 | \par
|
---|
265 | The amplitude-weighted arrival time is calculated from the window with
|
---|
266 | the highest FADC slice contents integral using the following formula:
|
---|
267 |
|
---|
268 | \begin{equation}
|
---|
269 | t = \frac{\sum_{i=i_0}^{i_0+\mathrm{\it ws}-1} s_i \cdot i}{\sum_{i=i_0}^{i_0+\mathrm{\it ws}-1} i}
|
---|
270 | \end{equation}
|
---|
271 | where $i$ denotes the FADC slice index, starting from slice $i_0$
|
---|
272 | and running over a window of size $\mathrm{\it ws}$. $s_i$ the clock-noise and
|
---|
273 | pedestal-corrected FADC slice contents at slice position $i$.
|
---|
274 | \par
|
---|
275 | The following adjustable parameters have to be set from outside:
|
---|
276 | \begin{description}
|
---|
277 | \item[Window sizes:\xspace] Independently for high-gain and low-gain (default: 6,6)
|
---|
278 | \end{description}
|
---|
279 |
|
---|
280 | Figure~\ref{fig:slidingwindowsketch} gives a sketch of the reconstructed arrival time of the possible extraction
|
---|
281 | window positions in two typical calibration pulses.
|
---|
282 |
|
---|
283 | \begin{figure}[htp]
|
---|
284 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeSlidingWindow_5Led_UV.eps}
|
---|
285 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeSlidingWindow_23Led_Blue.eps}
|
---|
286 | \caption[Sketch calculated arrival times MExtractTimeAndChargeSlidingWindow]{%
|
---|
287 | Sketch of the calculated arrival times for the extractor {\textit{\bf MExtractTimeAndChargeSlidingWindow}}
|
---|
288 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
289 | The extraction window sizes modify the position of the (amplitude-weighted) mean FADC-slices slightly.
|
---|
290 | The pulse would be shifted half a slice to the right for an outer pixel. }
|
---|
291 | \label{fig:slidingwindowsketch}
|
---|
292 | \end{figure}
|
---|
293 |
|
---|
294 | \subsubsection{Cubic Spline with Sliding Window or Amplitude Extraction}
|
---|
295 |
|
---|
296 | This extractor is implemented in the MARS-class {\textit{\bf MExtractTimeAndChargeSpline}}.
|
---|
297 | It interpolates the FADC contents using a cubic spline algorithm, adapted from \cite{NUMREC}.
|
---|
298 | In a second step, it searches for the position of the spline maximum. From then on, two
|
---|
299 | possibilities are offered:
|
---|
300 |
|
---|
301 | \begin{description}
|
---|
302 | \item[Extraction Type Amplitude:\xspace] The amplitude of the spline maximum is taken as charge signal
|
---|
303 | and the (precise) position of the maximum is returned as arrival time. This type is faster, since a spline integration is not performed.
|
---|
304 | \item[Extraction Type Integral:\xspace] The integrated spline between maximum position minus
|
---|
305 | rise time (default: 1.5 slices) and maximum position plus fall time (default: 4.5 slices)
|
---|
306 | is taken as charge signal and the position of the half maximum left from the position of the maximum
|
---|
307 | is returned as arrival time (default).
|
---|
308 | The low-gain signal stretches the rise and fall time by a stretch factor (default: 1.5). This type
|
---|
309 | is slower, but yields more precise results (see section~\ref{sec:performance}) .
|
---|
310 | The charge integration resolution is set to 0.1 FADC slices.
|
---|
311 | \end{description}
|
---|
312 |
|
---|
313 | The following adjustable parameters have to be set from outside:
|
---|
314 |
|
---|
315 | \begin{description}
|
---|
316 | \item[Charge Extraction Type:\xspace] The amplitude of the spline maximum can be chosen while the position
|
---|
317 | of the maximum is returned as arrival time. This type is fast. \\
|
---|
318 | Otherwise, the integrated spline between maximum position minus rise time (default: 1.5 slices)
|
---|
319 | and maximum position plus fall time (default: 4.5 slices) is taken as signal and the position of the
|
---|
320 | half maximum is returned as arrival time (default).
|
---|
321 | The low-gain signal stretches the rise and fall time by a stretch factor (default: 1.5). This type
|
---|
322 | is slower, but more precise. The charge integration resolution is 0.1 FADC slices.
|
---|
323 | \item[Rise Time and Fall Time:\xspace] Can be adjusted for the integration charge extraction type.
|
---|
324 | \item[Resolution:\xspace] Defined as the maximum allowed difference between the calculated half maximum value and
|
---|
325 | the computed spline value at the arrival time position. Can be adjusted for the half-maximum time extraction
|
---|
326 | type.
|
---|
327 | \item[Low Gain Stretch:\xspace] Can be adjusted to account for the larger rise and fall times in the
|
---|
328 | low-gain as compared to the high gain pulses (default: 1.5)
|
---|
329 | \end{description}
|
---|
330 |
|
---|
331 | Figure~\ref{fig:splinesketch} gives a sketch of the reconstructed arrival time for possible extraction
|
---|
332 | window positions in two typical calibration pulses.
|
---|
333 |
|
---|
334 | \begin{figure}[htp]
|
---|
335 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeSpline_5Led_UV.eps}
|
---|
336 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeSpline_23Led_Blue.eps}
|
---|
337 | \caption[Sketch calculated arrival times MExtractTimeAndChargeSpline]{%
|
---|
338 | Sketch of the calculated arrival times for the extractor {\textit{\bf MExtractTimeAndChargeSpline}}
|
---|
339 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
340 | The extraction window sizes modify the position of the (amplitude-weighted) mean FADC-slices slightly.
|
---|
341 | The pulse would be shifted half a slice to the right for an outer pixel. }
|
---|
342 | \label{fig:splinesketch}
|
---|
343 | \end{figure}
|
---|
344 |
|
---|
345 | \subsubsection{Digital Filter}
|
---|
346 |
|
---|
347 | This extractor is implemented in the MARS-class {\textit{\bf MExtractTimeAndChargeDigitalFilter}}.
|
---|
348 |
|
---|
349 |
|
---|
350 | The goal of the digital filtering method \cite{OF94,OF77} is to optimally reconstruct the amplitude and time origin of a signal with a known signal shape
|
---|
351 | from discrete measurements of the signal. Thereby, the noise contribution to the amplitude reconstruction is minimized.
|
---|
352 |
|
---|
353 | For the digital filtering method, three assumptions have to be made:
|
---|
354 |
|
---|
355 | \begin{itemize}
|
---|
356 | \item{The normalized signal shape has to be always constant, especially independent of the signal amplitude and in time.}
|
---|
357 | \item{The noise properties have to be independent of the signal amplitude.}
|
---|
358 | \item{The noise auto-correlation matrix does not change its form significantly with time and operation conditions.}
|
---|
359 | \end{itemize}
|
---|
360 |
|
---|
361 |
|
---|
362 | The pulse shape is mainly determined by the artificial pulse stretching by about 6\,ns on the receiver board.
|
---|
363 | Thus the first assumption holds to a good approximation for all pulses with intrinsic signal widths much smaller than
|
---|
364 | the shaping constant. Also the second assumption is fulfilled: Signal and noise are independent
|
---|
365 | and the measured pulse is the linear superposition of the signal and noise. The validity of the third
|
---|
366 | assumption is discussed below, especially for different night sky background conditions.
|
---|
367 |
|
---|
368 | Let $g(t)$ be the normalized signal shape, $E$ the signal amplitude and $\tau$ the time shift
|
---|
369 | of the physical signal from the predicted signal shape. Then the time dependence of the signal, $y(t)$, is given by:
|
---|
370 |
|
---|
371 | \begin{equation}
|
---|
372 | y(t)=E \cdot g(t-\tau) + b(t) \ ,
|
---|
373 | \end{equation}
|
---|
374 |
|
---|
375 | where $b(t)$ is the time-dependent noise contribution. For small time shifts $\tau$ (usually smaller than
|
---|
376 | one FADC slice width),
|
---|
377 | the time dependence can be linearized:
|
---|
378 |
|
---|
379 | \begin{equation} \label{shape_taylor_approx}
|
---|
380 | y(t)=E \cdot g(t) - E\tau \cdot \dot{g}(t) + b(t) \ ,
|
---|
381 | \end{equation}
|
---|
382 |
|
---|
383 | where $\dot{g}(t)$ is the time derivative of the signal shape. Discrete
|
---|
384 | measurements $y_i$ of the signal at times $t_i \ (i=1,...,n)$ have the form:
|
---|
385 |
|
---|
386 | \begin{equation}
|
---|
387 | y_i=E \cdot g_i- E\tau \cdot \dot{g}_i +b_i \ .
|
---|
388 | \end{equation}
|
---|
389 |
|
---|
390 | The correlation of the noise contributions at times $t_i$ and $t_j$ can be expressed in the
|
---|
391 | noise autocorrelation matrix $\boldsymbol{B}$:
|
---|
392 |
|
---|
393 | \begin{equation}
|
---|
394 | B_{ij} = \langle b_i b_j \rangle - \langle b_i \rangle \langle b_j
|
---|
395 | \rangle \ .
|
---|
396 | \label{eq:autocorr}
|
---|
397 | \end{equation}
|
---|
398 | %\equiv \langle b_i b_j \rangle with $\langle b_i \rangle = 0$.
|
---|
399 |
|
---|
400 | The signal amplitude $E$, and the product $E \tau$ of amplitude and time shift, can be estimated from the given set of
|
---|
401 | measurements $\boldsymbol{y} = (y_1, ... ,y_n)$ by minimizing the deviation of the measured FADC slice contents from the
|
---|
402 | known pulse shape with respect to the known noise auto-correlation:
|
---|
403 |
|
---|
404 | \begin{eqnarray}
|
---|
405 | \chi^2(E, E\tau) &=& \sum_{i,j}(y_i-E g_i-E\tau \dot{g}_i) (\boldsymbol{B}^{-1})_{ij} (y_j - E g_j-E\tau \dot{g}_j) \\
|
---|
406 | &=& (\boldsymbol{y} - E
|
---|
407 | \boldsymbol{g} - E\tau \dot{\boldsymbol{g}})^T \boldsymbol{B}^{-1} (\boldsymbol{y} - E \boldsymbol{g}- E\tau \dot{\boldsymbol{g}}) \ ,
|
---|
408 | \end{eqnarray}
|
---|
409 |
|
---|
410 | where the last expression uses the matrix formalism.
|
---|
411 | $\chi^2$ is a continuous function of $\tau$ and will have to be discretized itself for numerical computation applications.
|
---|
412 | $\chi^2$ is in principle independent of the noise level if always the appropriate noise autocorrelation matrix is used.
|
---|
413 | In our case however, we decided to use one matrix $\boldsymbol{B}$ for all levels of night-sky background.
|
---|
414 | Changes in the noise level lead only to a multiplicative factor for all matrix elements and thus do not affect the
|
---|
415 | position of the minimum of $\chi^2$.
|
---|
416 | The minimum of $\chi^2$ is obtained for:
|
---|
417 |
|
---|
418 | \begin{equation}
|
---|
419 | \frac{\partial \chi^2(E, E\tau)}{\partial E} = 0 \qquad \text{and} \qquad \frac{\partial \chi^2(E, E\tau)}{\partial(E\tau)} = 0 \ .
|
---|
420 | \end{equation}
|
---|
421 |
|
---|
422 |
|
---|
423 | Taking into account that $\boldsymbol{B}$ is a symmetric matrix, this leads to the following
|
---|
424 | two equations for the estimated amplitude $\overline{E}$ and the estimation for the product of amplitude
|
---|
425 | and time offset $\overline{E\tau}$:
|
---|
426 |
|
---|
427 | \begin{eqnarray}
|
---|
428 | 0&=&-\boldsymbol{g}^T\boldsymbol{B}^{-1}\boldsymbol{y}
|
---|
429 | +\boldsymbol{g}^T\boldsymbol{B}^{-1}\boldsymbol{g}\overline{E}
|
---|
430 | +\boldsymbol{g}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}\overline{E\tau}
|
---|
431 | \\
|
---|
432 | 0&=&-\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{y}
|
---|
433 | +\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{g}\overline{E}
|
---|
434 | +\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}\overline{E\tau} \ .
|
---|
435 | \end{eqnarray}
|
---|
436 |
|
---|
437 | Solving these equations one gets the following solutions:
|
---|
438 |
|
---|
439 | \begin{equation}
|
---|
440 | \overline{E}(\tau) = \boldsymbol{w}_{\text{amp}}^T (\tau)\boldsymbol{y} \quad \mathrm{with} \quad
|
---|
441 | \boldsymbol{w}_{\text{amp}}
|
---|
442 | = \frac{ (\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) \boldsymbol{B}^{-1} \boldsymbol{g} -(\boldsymbol{g}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) \boldsymbol{B}^{-1} \dot{\boldsymbol{g}}}
|
---|
443 | {(\boldsymbol{g}^T \boldsymbol{B}^{-1} \boldsymbol{g})(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) -(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{g})^2 } \ ,
|
---|
444 | \end{equation}
|
---|
445 |
|
---|
446 | \begin{equation}
|
---|
447 | \overline{E\tau}(\tau)= \boldsymbol{w}_{\text{time}}^T(\tau) \boldsymbol{y} \quad
|
---|
448 | \mathrm{with} \quad \boldsymbol{w}_{\text{time}}
|
---|
449 | = \frac{ ({\boldsymbol{g}}^T\boldsymbol{B}^{-1}{\boldsymbol{g}}) \boldsymbol{B}^{-1} \dot{\boldsymbol{g}} -(\boldsymbol{g}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) \boldsymbol{B}^{-1} {\boldsymbol{g}}}
|
---|
450 | {(\boldsymbol{g}^T \boldsymbol{B}^{-1} \boldsymbol{g})(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) -(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{g})^2 } \ .
|
---|
451 | \end{equation}
|
---|
452 |
|
---|
453 | Thus $\overline{E}$ and $\overline{E\tau}$ are given by a weighted sum of the discrete measurements $y_i$
|
---|
454 | with the weights for the amplitude, $w_{\text{amp}}(\tau)$, and time shift, $w_{\text{time}}(\tau)$.
|
---|
455 | \par
|
---|
456 | The time dependence gets discretized once again leading to a set of weight samples which themselves depend on the
|
---|
457 | discretized time $\tau$.
|
---|
458 | \par
|
---|
459 | Note the remaining time dependency of the two weight samples. This follows from the dependence of $\boldsymbol{g}$ and
|
---|
460 | $\dot{\boldsymbol{g}}$ on the relative position of the signal pulse with respect to FADC slices positions.
|
---|
461 | \par
|
---|
462 | Because of the truncation of the Taylor series in equation (\ref{shape_taylor_approx}) the above results are
|
---|
463 | only valid for vanishing time offsets $\tau$. For larger time offsets, one has to iterate the problem using
|
---|
464 | the time shifted signal shape $g(t-\tau)$.
|
---|
465 |
|
---|
466 | The covariance matrix $\boldsymbol{V}$ of $\overline{E}$ and $\overline{E\tau}$ is given by:
|
---|
467 |
|
---|
468 | \begin{equation}
|
---|
469 | \left(\boldsymbol{V}^{-1}\right)_{ij}
|
---|
470 | =\frac{1}{2}\left(\frac{\partial^2 \chi^2(E, E\tau)}{\partial \alpha_i \partial \alpha_j} \right) \quad
|
---|
471 | \text{with} \quad \alpha_i,\alpha_j \in \{E, E\tau\} \ .
|
---|
472 | \end{equation}
|
---|
473 |
|
---|
474 | The expected contribution of the noise to the estimated amplitude, $\sigma_E$, is:
|
---|
475 |
|
---|
476 | \begin{equation}
|
---|
477 | \sigma_E^2=\boldsymbol{V}_{E,E}
|
---|
478 | =\frac{\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}}
|
---|
479 | {(\boldsymbol{g}^T \boldsymbol{B}^{-1} \boldsymbol{g})(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) -(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{g})^2} \ .
|
---|
480 | \label{eq:of_noise}
|
---|
481 | \end{equation}
|
---|
482 |
|
---|
483 | The expected contribution of the noise to the estimated timing, $\sigma_{\tau}$, is:
|
---|
484 |
|
---|
485 | \begin{equation}
|
---|
486 | E^2 \cdot \sigma_{\tau}^2 < \sigma^2_{E \tau} =\boldsymbol{V}_{E\tau,E\tau}
|
---|
487 | =\frac{{\boldsymbol{g}}^T\boldsymbol{B}^{-1}{\boldsymbol{g}}}
|
---|
488 | {(\boldsymbol{g}^T \boldsymbol{B}^{-1} \boldsymbol{g})(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\dot{\boldsymbol{g}}) -(\dot{\boldsymbol{g}}^T\boldsymbol{B}^{-1}\boldsymbol{g})^2} \ .
|
---|
489 | \label{eq:of_noise_time}
|
---|
490 | \end{equation}
|
---|
491 |
|
---|
492 | Both equations~\ref{eq:of_noise} and~\ref{eq:of_noise_time} are independent of the signal amplitude.
|
---|
493 | \par
|
---|
494 | In the MAGIC MC simulations~\cite{MC-Camera}, a night-sky background rate of 0.13 photoelectrons per ns,
|
---|
495 | an FADC gain of 7.8 FADC counts per photo-electron and an intrinsic FADC noise of 1.3 FADC counts
|
---|
496 | per FADC slice is implemented.
|
---|
497 | These numbers simulate the night sky background conditions for an extragalactic source and result
|
---|
498 | in a noise contribution of about 4 FADC counts per single FADC slice:
|
---|
499 | $\sqrt{B_{ii}} \approx 4$~FADC counts.
|
---|
500 | Using the digital filter with weights determined for 6~FADC slices ($i=0...5$) the errors of the
|
---|
501 | reconstructed signal and time amount to:
|
---|
502 |
|
---|
503 | \begin{equation}
|
---|
504 | \sigma_E \approx 8.3 \ \mathrm{FADC\ counts} \ (\approx 1.1\,\mathrm{phe}) \qquad
|
---|
505 | \sigma_{\tau} \approx \frac{6.5\ \Delta T_{\mathrm{FADC}}}{(E\ /\ \mathrm{FADC\ counts})} \ (\approx \frac{2.8\,\mathrm{ns}}{E\,/\ \mathrm{N_{phe}}})\ ,
|
---|
506 | \label{eq:of_noise_calc}
|
---|
507 | \end{equation}
|
---|
508 |
|
---|
509 | where $\Delta T_{\mathrm{FADC}} = 3.33$ ns is the sampling interval of the MAGIC FADCs.
|
---|
510 | The error in the reconstructed signal corresponds to about one photo electron.
|
---|
511 | For signals of the size of two photo electrons, the timing error is about 1.4\,ns.
|
---|
512 | \par
|
---|
513 |
|
---|
514 | An IACT has typically two types of background noise:
|
---|
515 | On the one hand, there is the constantly present electronics noise,
|
---|
516 | while on the other hand, the light of the night sky introduces a sizeable background
|
---|
517 | to the measurement of the Cherenkov photons from air showers.
|
---|
518 |
|
---|
519 | The electronics noise is largely white, i.e. uncorrelated in time.
|
---|
520 | The noise from the night sky background photons is the superposition of the
|
---|
521 | detector response to single photo electrons following a Poisson distribution in time.
|
---|
522 | Figure \ref{fig:noise_autocorr_allpixels} shows the noise
|
---|
523 | autocorrelation matrix for an open camera. The large noise autocorrelation of the current FADC
|
---|
524 | system is due to the pulse shaping (with the shaping constant equivalent to about two FADC slices).
|
---|
525 |
|
---|
526 | In general, the amplitude and time weights, $\boldsymbol{w}_{\text{amp}}$ and $\boldsymbol{w}_{\text{time}}$,
|
---|
527 | depend on the pulse shape, the derivative of the pulse shape and the noise autocorrelation.
|
---|
528 | In the high gain samples, the correlated night sky background noise dominates over
|
---|
529 | the white electronics noise. As a consequence, different noise levels cause the elements of the noise autocorrelation
|
---|
530 | matrix to change by the same factor, which cancels out in the weights calculation. Figure~\ref{fig:noise_autocorr_allpixels}
|
---|
531 | shows the noise autocorrelation matrix for two different levels of night sky background (top) and the ratio between the
|
---|
532 | corresponding elements of both (bottom). The central regions of $\pm$3 FADC slices around the diagonal (which is used to
|
---|
533 | calculate the weights) deviate by less than 10\%.
|
---|
534 | Thus, the weights are to a reasonable approximation independent of the night sky background noise level in the high gain.
|
---|
535 | \par
|
---|
536 | In the low gain samples the correlated noise of the LONS is in the same order of magnitude as the white electronics
|
---|
537 | and digitization noise.
|
---|
538 | Moreover, the noise autocorrelation for the low gain samples cannot be determined directly from the data. The low gain is only switched on
|
---|
539 | if the pulse exceeds a preset threshold. There are no pedestals in the low gain available. Thus the noise auto-correlation determined from
|
---|
540 | MC simulations for an extragalactic background is also used to compute the weights for cosmics and calibration pulses.
|
---|
541 |
|
---|
542 | %\begin{figure}[h!]
|
---|
543 | %\begin{center}
|
---|
544 | %\includegraphics[totalheight=7cm]{noise_autocorr_AB_36038_TDAS.eps}
|
---|
545 | %\end{center}
|
---|
546 | %\caption[Noise autocorrelation one pixel.]{Noise autocorrelation
|
---|
547 | %matrix $\boldsymbol{B}$ for open camera including the noise due to night sky background fluctuations
|
---|
548 | %for one single pixel (obtained from 1000 events).}
|
---|
549 | %\label{fig:noise_autocorr_1pix}
|
---|
550 | %\end{figure}
|
---|
551 |
|
---|
552 | \begin{figure}[htp]
|
---|
553 | \begin{center}
|
---|
554 | \includegraphics[totalheight=7cm]{noise_38995_smallNSB_all396.eps}
|
---|
555 | \includegraphics[totalheight=7cm]{noise_39258_largeNSB_all396.eps}
|
---|
556 | \includegraphics[totalheight=7cm]{noise_small_over_large.eps}
|
---|
557 | \end{center}
|
---|
558 | \caption[Noise autocorrelation average all pixels.]{Noise autocorrelation
|
---|
559 | matrix $\boldsymbol{B}$ for open camera and averaged over all pixels. The top figure shows $\boldsymbol{B}$
|
---|
560 | obtained with camera pointing off the galactic plane (and low night sky background fluctuations).
|
---|
561 | The central figure shows $\boldsymbol{B}$ with the camera pointing into the galactic plane
|
---|
562 | (high night sky background) and the
|
---|
563 | bottom plot shows the ratio between both. One can see that the entries of $\boldsymbol{B}$ do not
|
---|
564 | simply scale with the amount of night sky background.}
|
---|
565 | \label{fig:noise_autocorr_allpixels}
|
---|
566 | \end{figure}
|
---|
567 |
|
---|
568 | Using the average reconstructed pulpo pulse shapes, as shown in figure \ref{fig:pulse_shapes}, and the reconstructed noise
|
---|
569 | autocorrelation matrices from pedestal runs with random triggers, the digital filter weights are computed.
|
---|
570 | As the pulse shapes in the high and low gain and for cosmics, calibration and pulpo events are somewhat different,
|
---|
571 | dedicated digital filter weights are computed for these event classes. Also filter weights optimized for MC simulations are calculated.
|
---|
572 | High/low gain filter weights are computed for the following event classes:
|
---|
573 |
|
---|
574 | \begin{enumerate}
|
---|
575 | \item{cosmics weights: for cosmics events}
|
---|
576 | \item{calibration weights UV: for UV calibration pulses}
|
---|
577 | \item{calibration weights blue: for blue and green calibration pulses}
|
---|
578 | \item{MC weights: for MC simulations}
|
---|
579 | \item{pulpo weights: for pulpo runs.}
|
---|
580 | \end{enumerate}
|
---|
581 |
|
---|
582 |
|
---|
583 | \begin{table}[h]{\normalsize\center
|
---|
584 | \begin{tabular}{lllll}
|
---|
585 | \hline
|
---|
586 | & high gain shape & high gain noise & low gain shape & low gain noise
|
---|
587 | \\ cosmics & 25945 (pulpo) & 38995 (extragal.) & 44461 (pulpo) & MC low
|
---|
588 | \\ UV & 36040 (UV) & 38995 (extragal.) & 44461 (pulpo) & MC low
|
---|
589 | \\ blue & 31762 (blue) & 38995 (extragal.) & 31742 (blue) & MC low
|
---|
590 | \\ MC & MC & MC high & MC & MC low
|
---|
591 | \\ pulpo & 25945 (pulpo) & 38993 (no LONS) & 44461 (pulpo) & MC low
|
---|
592 | \\
|
---|
593 | \hline
|
---|
594 | \end{tabular}
|
---|
595 | \caption{The used runs for the pulse shapes and noise auto-correlations for the digital filter weights of the different event types.}\label{table:weight_files}}
|
---|
596 | \end{table}
|
---|
597 |
|
---|
598 |
|
---|
599 |
|
---|
600 |
|
---|
601 | Figures \ref{fig:w_time_MC_input_TDAS} and \ref{fig:w_amp_MC_input_TDAS} show the amplitude and timing weights for the MC pulse shape.
|
---|
602 | The first weight $w_{\mathrm{amp/time}}(t_0)$ is plotted as a function of the relative time $t_{\text{rel}}$ between the trigger and the
|
---|
603 | FADC clock in the range $[-0.5,0.5[ \ T_{\text{ADC}}$, the second weight in the range $[0.5,1.5[ \ T_{\text{ADC}}$ and so on.
|
---|
604 | A binning resolution of $0.1\,T_{\text{ADC}}$ has been chosen.
|
---|
605 |
|
---|
606 |
|
---|
607 | \begin{figure}[h!]
|
---|
608 | \begin{center}
|
---|
609 | \includegraphics[totalheight=7cm]{w_time_MC_input_TDAS.eps}
|
---|
610 | \end{center}
|
---|
611 | \caption[Time weights.]{Time weights $w_{\mathrm{time}}(t_0) \ldots w_{\mathrm{time}}(t_5)$ for a window size of 6 FADC slices for the pulse shape
|
---|
612 | used in the MC simulations. The first weight $w_{\mathrm{time}}(t_0)$ is plotted as a function of the relative time $t_{\text{rel}}$ the trigger and the
|
---|
613 | FADC clock in the range $[-0.5,0.5[ \ T_{\text{ADC}}$, the second weight in the range $[0.5,1.5[ \ T_{\text{ADC}}$ and so on. A binning resolution
|
---|
614 | of $0.1\,T_{\text{ADC}}$ has been chosen.} \label{fig:w_time_MC_input_TDAS}
|
---|
615 | \end{figure}
|
---|
616 |
|
---|
617 | \begin{figure}[h!]
|
---|
618 | \begin{center}
|
---|
619 | \includegraphics[totalheight=7cm]{w_amp_MC_input_TDAS.eps}
|
---|
620 | \end{center}
|
---|
621 | \caption[Amplitude weights.]{Amplitude weights $w_{\mathrm{amp}}(t_0) \ldots w_{\mathrm{amp}}(t_5)$ for a window size of 6 FADC slices for the
|
---|
622 | pulse shape used in the MC simulations. The first weight $w_{\mathrm{amp}}(t_0)$ is plotted as a function of the relative time $t_{\text{rel}}$
|
---|
623 | the trigger and the FADC clock in the range $[-0.5,0.5[ \ T_{\text{ADC}}$, the second weight in the range $[0.5,1.5[ \ T_{\text{ADC}}$ and so on.
|
---|
624 | A binning resolution of $0.1\, T_{\text{ADC}}$ has been chosen.} \label{fig:w_amp_MC_input_TDAS}
|
---|
625 | \end{figure}
|
---|
626 |
|
---|
627 | In the current implementation a two step procedure is applied to reconstruct the signal. The weight functions $w_{\mathrm{amp}}(t)$
|
---|
628 | and $w_{\mathrm{time}}(t)$ are computed numerically with a resolution of $1/10$ of an FADC slice.
|
---|
629 | In the first step the quantities $e_{i_0}$ and $(e\tau)_{i_0}$ are computed using a window of $n$ slices:
|
---|
630 |
|
---|
631 | \begin{equation}
|
---|
632 | e_{i_0}=\sum_{i=i_0}^{i_0+n-1} w_{\mathrm{amp}}(t_i)y(t_{i+i_0}) \qquad (e\tau)_{i_0}=\sum_{i=i_0}^{i_0+n-1} w_{\mathrm{time}}(t_i)y(t_{i+i_0})
|
---|
633 | \end{equation}
|
---|
634 |
|
---|
635 | for all possible signal start slices $i_0$. Let $i_0^*$ be the signal start slice yielding the largest $e_{i_0}$.
|
---|
636 | Then in a second step the timing offset $\tau$ is calculated:
|
---|
637 |
|
---|
638 | \begin{equation}
|
---|
639 | \tau=\frac{(e\tau)_{i_0^*}}{e_{i_0^*}}
|
---|
640 | \label{eq:offsettau}
|
---|
641 | \end{equation}
|
---|
642 |
|
---|
643 | Using this value of $\tau$, another iteration is performed:
|
---|
644 |
|
---|
645 | \begin{equation}
|
---|
646 | E=\sum_{i=i_0^*}^{i_0^*+n-1} w_{\mathrm{amp}}(t_i - \tau)y(t_{i+i_0^*}) \qquad
|
---|
647 | E \theta=\sum_{i=i_0^*}^{i_0^*+n-1} w_{\mathrm{time}}(t_i - \tau)y(t_{i+i_0^*}) \ .
|
---|
648 | \end{equation}
|
---|
649 |
|
---|
650 | The reconstructed signal is then taken to be $E$ and the reconstructed arrival time $t_{\text{arrival}}$ is
|
---|
651 |
|
---|
652 | \begin{equation}
|
---|
653 | t_{\text{arrival}} = i_0^* + \tau + \theta \ .
|
---|
654 | \end{equation}
|
---|
655 |
|
---|
656 |
|
---|
657 |
|
---|
658 | Figure \ref{fig:amp_sliding} shows the result of the applied amplitude and time weights to the recorded FADC time slices of one
|
---|
659 | simulated MC pulse. The left plot displays the result of the applied amplitude weights
|
---|
660 | $e(t_0)=\sum_{i=0}^{i=n-1} w_{\mathrm{amp}}(t_0+i \cdot T_{\text{ADC}})y(t_0+i \cdot T_{\text{ADC}})$ and
|
---|
661 | the right plot shows the result of the applied timing weights
|
---|
662 | $e\tau(t_0)=\sum_{i=0}^{i=n-1} w_{\mathrm{time}}(t_0+i \cdot T_{\text{ADC}})y(t_0+i \cdot T_{\text{ADC}})$ as a function of the time shift $t_0$.
|
---|
663 |
|
---|
664 |
|
---|
665 | % This does not apply for MAGIC as the LONs are giving always a correlated noise (in addition to the artificial shaping)
|
---|
666 |
|
---|
667 | %In the case of an uncorrelated noise with zero mean the noise autocorrelation matrix is:
|
---|
668 |
|
---|
669 | %\begin{equation}
|
---|
670 | %\boldsymbol{B}_{ij}= \langle b_i b_j \rangle \delta_{ij} = \sigma^2(b_i) \ ,
|
---|
671 | %\end{equation}
|
---|
672 |
|
---|
673 | %where $\sigma(b_i)$ is the standard deviation of the noise of the discrete measurements. Equation (\ref{of_noise}) than becomes:
|
---|
674 |
|
---|
675 |
|
---|
676 | %\begin{equation}
|
---|
677 | %\frac{\sigma^2(b_i)}{\sigma_E^2} = \sum_{i=1}^{n}{g_i^2} - \frac{\sum_{i=1}^{n}{g_i \dot{g}_i}}{\sum_{i=1}^{n}{\dot{g}_i^2}} \ .
|
---|
678 | %\end{equation}
|
---|
679 |
|
---|
680 |
|
---|
681 | \begin{figure}[h!]
|
---|
682 | \begin{center}
|
---|
683 | \includegraphics[totalheight=7cm]{amp_sliding.eps}
|
---|
684 | \includegraphics[totalheight=7cm]{time_sliding.eps}
|
---|
685 | \end{center}
|
---|
686 | \caption[Digital filter weights applied.]{Digital filter weights applied to the recorded FADC time slices of
|
---|
687 | one simulated MC pulse. The left plot shows the result of the applied amplitude weights
|
---|
688 | $e(t_0)=\sum_{i=0}^{i=n-1} w_{\mathrm{amp}}(t_0+i \cdot T_{\text{ADC}})y(t_0+i \cdot T_{\text{ADC}})$ and
|
---|
689 | the right plot displays the result of the applied timing weights
|
---|
690 | $e\tau(t_0)=\sum_{i=0}^{i=n-1} w_{\mathrm{time}}(t_0+i \cdot T_{\text{ADC}})y(t_0+i \cdot T_{\text{ADC}})$ as a function of the time shift $t_0$.}
|
---|
691 | \label{fig:amp_sliding}
|
---|
692 | \end{figure}
|
---|
693 |
|
---|
694 | Figure \ref{fig:shape_fit_TDAS} shows the signal pulse shape of a typical MC event together with the simulated FADC slices
|
---|
695 | of the signal pulse plus noise. The digital filter has been applied to reconstruct the signal size and timing.
|
---|
696 | Using this information together with the average normalized MC pulse shape the simulated signal pulse shape is reconstructed
|
---|
697 | and shown as well.
|
---|
698 |
|
---|
699 |
|
---|
700 | \begin{figure}[h!]
|
---|
701 | \begin{center}
|
---|
702 | \includegraphics[totalheight=7cm]{shape_fit_TDAS.eps}
|
---|
703 | \end{center}
|
---|
704 | \caption[Shape fit.]{Simulated signal pulse shape and FADC slices for a typical MC event. The FADC measurements are affected by noise. Using the digital filter and the average MC pulse shape the signal shape is reconstructed. The event shown is the same as in figure \ref{fig:amp_sliding}.} \label{fig:shape_fit_TDAS}
|
---|
705 | \end{figure}
|
---|
706 | %Full fit to the MC pulse shape with the MC input shape and a numerical fit using the digital filter
|
---|
707 |
|
---|
708 |
|
---|
709 |
|
---|
710 | The following free adjustable parameters have to be set from outside:
|
---|
711 |
|
---|
712 | \begin{description}
|
---|
713 | \item[Weights File:\xspace] An ascii-file containing the weights, the binning resolution and
|
---|
714 | the window size. Currently, the following weight files have been created:
|
---|
715 | \begin{itemize}
|
---|
716 | \item "cosmics\_weights.dat'' with a window size of 6 FADC slices
|
---|
717 | \item "cosmics\_weights4.dat'' with a window size of 4 FADC slices
|
---|
718 | \item "calibration\_weights\_blue.dat'' with a window size of 6 FADC slices
|
---|
719 | \item "calibration\_weights4\_blue.dat'' with a window size of 4 FADC slices
|
---|
720 | \item "calibration\_weights\_UV.dat'' with a window size of 6 FADC slices and in the low-gain the
|
---|
721 | calibration weights obtained from blue pulses\footnote{UV-pulses saturating the high-gain are not yet
|
---|
722 | available.}.
|
---|
723 | \item "calibration\_weights4\_UV.dat'' with a window size of 4 FADC slices and in the low-gain the
|
---|
724 | calibration weights obtained from blue pulses\footnote{UV-pulses saturating the high-gain are not yet
|
---|
725 | available.}.
|
---|
726 | \end{itemize}
|
---|
727 | \end{description}
|
---|
728 |
|
---|
729 | Figure~\ref{fig:dfsketch} gives a sketch of the reconstructed arrival time of the possible extraction
|
---|
730 | window positions in two typical calibration pulses.
|
---|
731 |
|
---|
732 | \begin{figure}[htp]
|
---|
733 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeDigitalFilter_5Led_UV.eps}
|
---|
734 | \includegraphics[width=0.49\linewidth]{MExtractTimeAndChargeDigitalFilter_23Led_Blue.eps}
|
---|
735 | \caption[Sketch calculated arrival times MExtractTimeAndChargeDigitalFilter]{%
|
---|
736 | Sketch of the calculated arrival times for the extractor {\textit{MExtractTimeAndChargeDigitalFilter}}
|
---|
737 | for two typical calibration pulses (pedestals have been subtracted) and a typical inner pixel.
|
---|
738 | The extraction window sizes modify the position of the (amplitude-weighted) mean FADC-slices slightly.
|
---|
739 | The pulse would be shifted half a slice to the right for an outer pixels. }
|
---|
740 | \label{fig:dfsketch}
|
---|
741 | \end{figure}
|
---|
742 |
|
---|
743 | \subsubsection{Digital Filter with Global Peak Search}
|
---|
744 |
|
---|
745 | This extractor is implemented in the MARS-class {\textit{\bf MExtractTimeAndChargeDigitalFilterPeakSearch}}.
|
---|
746 |
|
---|
747 | The idea of this extractor is to combine {\textit{\bf MExtractFixedWindowPeakSearch}} (the same reference point for all pixels) and
|
---|
748 | {\textit{\bf MExtractTimeAndChargeDigitalFilter}}, where the reference point is determined pixel by pixel, in order to correct for coherent movements in arrival time
|
---|
749 | for all pixels and still use the digital filter fit capabilities.
|
---|
750 | \par
|
---|
751 |
|
---|
752 | In a first loop over the pixels, it fixes a reference point (slice number) defined by the highest sum of
|
---|
753 | consecutive non-saturating FADC slices in a (smaller) peak-search window.
|
---|
754 | \par
|
---|
755 | In a second loop over the pixels,
|
---|
756 | it uses the digital filter algorithm within a reduced extraction window.
|
---|
757 | It loops twice over all pixels in every event, because it has to find the reference point, first.
|
---|
758 |
|
---|
759 | As in the case of {\textit{\bf MExtractFixedWindowPeakSearch}}, for a high intensity calibration run
|
---|
760 | causing high-gain saturation in the whole camera, this
|
---|
761 | extractor apparently fails since only dead pixels
|
---|
762 | are taken into account in the peak search which cannot produce a saturated signal.
|
---|
763 |
|
---|
764 | \par
|
---|
765 | For this special case, the extractor then defines the peak search window
|
---|
766 | as the one starting from the mean position of the first saturating slice.
|
---|
767 | \par
|
---|
768 | The following adjustable parameters have to be set from outside, additionally to the ones to be
|
---|
769 | set in {\textit{\bf MExtractTimeAndChargeDigitalFilter}}:
|
---|
770 | \begin{description}
|
---|
771 | \item[Peak Search Window:\xspace] Defines the ``sliding window'' size within which the peaking sum is
|
---|
772 | searched for (default: 2 slices)
|
---|
773 | \item[Offset left from Peak:\xspace] Defines the left offset of the start of the extraction window w.r.t. the
|
---|
774 | starting point of the obtained peak search window (default: 3 slices)
|
---|
775 | \item[Offset right from Peak:\xspace] Defines the right offset of the of the extraction window w.r.t. the
|
---|
776 | starting point of the obtained peak search window (default: 3 slices)
|
---|
777 | \item[Limit for high gain failure events:\xspace] Defines the limit of the number of events which failed
|
---|
778 | to be in the high-gain window before the run is rejected.
|
---|
779 | \item[Limit for low gain failure events:\xspace] Defines the limit of the number of events which failed
|
---|
780 | to be in the low-gain window before the run is rejected.
|
---|
781 | \end{description}
|
---|
782 |
|
---|
783 | In principle, the ``offsets'' can be chosen very small, because both showers and calibration pulses spread
|
---|
784 | over a very small time interval, typically less than one FADC slice. However, the MAGIC DAQ produces
|
---|
785 | artificial jumps of two FADC slices from time to time\footnote{in 5\% of the events per pixel in December 2004},
|
---|
786 | so the 3 slices are made in order not to reject these pixels already with the extractor.
|
---|
787 |
|
---|
788 | \subsubsection{Real Fit to the Expected Pulse Shape }
|
---|
789 |
|
---|
790 | The digital filter is a sophisticated numerical tool to fit the read-out FADC samples with the expected wave form taking the autocorrelation of the noise into account. In order to cross-check the results a pulse shape fit has been implemented using the root TH1::Fit routine. For each event the FADC samples of each pixel are filled into a histogram and fit by the expected wave form having the time shift and the area of the fit pulse as free parameters. The results are in very good agreement with the results of the digital filter.
|
---|
791 |
|
---|
792 | Figure \ref{fig:probability_fit} shows the distribution of the fit probability for simulated MC pulses. Both electronics and NSB noise are simulated. The distribution is mainly flat with a slight excess in the very lowest probability bins.
|
---|
793 | \par
|
---|
794 |
|
---|
795 | This extractor is not (yet) implemented as a MARS-class.
|
---|
796 |
|
---|
797 |
|
---|
798 |
|
---|
799 | \begin{figure}[h!]
|
---|
800 | \begin{center}
|
---|
801 | \includegraphics[totalheight=7cm]{probability_fit_0ns.eps}
|
---|
802 | \end{center}
|
---|
803 | \caption[Fit Probability.]{Probability of the fit with the input signal shape to the simulated FADC samples
|
---|
804 | including electronics and NSB noise.} \label{fig:probability_fit}
|
---|
805 | \end{figure}
|
---|
806 |
|
---|
807 |
|
---|
808 |
|
---|
809 | \subsection{Used Extractors for this Analysis}
|
---|
810 |
|
---|
811 | We tested in this TDAS the following parameterized extractors:
|
---|
812 |
|
---|
813 | \begin{description}
|
---|
814 | \item[MExtractFixedWindow]: with the following initialization, if {\textit{maxbin}} defines the
|
---|
815 | mean position of the high-gain FADC slice which carries the pulse maximum \footnote{The function
|
---|
816 | {\textit{MExtractor::SetRange(higain first, higain last, logain first, logain last)}} sets the extraction
|
---|
817 | range with the high gain start bin {\textit{higain first}} to (including) the last bin {\textit{higain last}}.
|
---|
818 | Analog for the low gain extraction range. Note that in MARS, the low-gain FADC samples start with
|
---|
819 | the index 0 again, thus {\textit{maxbin+0.5}} means in reality {\textit{maxbin+15+0.5}}. }
|
---|
820 | :
|
---|
821 | \begin{enumerate}
|
---|
822 | \item SetRange({\textit{maxbin}}-1,{\textit{maxbin}}+2,{\textit{maxbin}}+0.5,{\textit{maxbin}}+3.5);
|
---|
823 | \item SetRange({\textit{maxbin}}-1,{\textit{maxbin}}+2,{\textit{maxbin}}-0.5,{\textit{maxbin}}+4.5);
|
---|
824 | \item SetRange({\textit{maxbin}}-2,{\textit{maxbin}}+3,{\textit{maxbin}}-0.5,{\textit{maxbin}}+4.5);
|
---|
825 | \item SetRange({\textit{maxbin}}-2,{\textit{maxbin}}+5,{\textit{maxbin}}-0.5,{\textit{maxbin}}+6.5);
|
---|
826 | \item SetRange({\textit{maxbin}}-3,{\textit{maxbin}}+10,{\textit{maxbin}}-1.5,{\textit{maxbin}}+7.5);
|
---|
827 | \suspend{enumerate}
|
---|
828 | \item[MExtractFixedWindowSpline]: with the following initialization, if {\textit{maxbin}} defines the
|
---|
829 | mean position of the high-gain FADC slice carrying the pulse maximum \footnote{The function
|
---|
830 | {\textit{MExtractor::SetRange(higain first, higain last, logain first, logain last)}} sets the extraction
|
---|
831 | range with the high gain start bin {\textit{higain first}} to (including) the last bin {\textit{higain last}}.
|
---|
832 | Analog for the low gain extraction range. Note that in MARS, the low-gain FADC samples start with
|
---|
833 | the index 0 again, thus {\textit{maxbin+0.5}} means in reality {\textit{maxbin+15+0.5}}.}:
|
---|
834 | \resume{enumerate}
|
---|
835 | \item SetRange({\textit{maxbin}}-1,{\textit{maxbin}}+3,{\textit{maxbin}}+0.5,{\textit{maxbin}}+4.5);
|
---|
836 | \item SetRange({\textit{maxbin}}-1,{\textit{maxbin}}+3,{\textit{maxbin}}-0.5,{\textit{maxbin}}+5.5);
|
---|
837 | \item SetRange({\textit{maxbin}}-2,{\textit{maxbin}}+4,{\textit{maxbin}}-0.5,{\textit{maxbin}}+5.5);
|
---|
838 | \item SetRange({\textit{maxbin}}-2,{\textit{maxbin}}+6,{\textit{maxbin}}-0.5,{\textit{maxbin}}+7.5);
|
---|
839 | \item SetRange({\textit{maxbin}}-3,{\textit{maxbin}}+11,{\textit{maxbin}}-1.5,{\textit{maxbin}}+8.5);
|
---|
840 | \suspend{enumerate}
|
---|
841 | \item[MExtractFixedWindowPeakSearch]: with the following initialization: \\
|
---|
842 | SetRange(0,18,2,14); and:
|
---|
843 | \resume{enumerate}
|
---|
844 | \item SetWindows(2,2,2); SetOffsetFromWindow(0);
|
---|
845 | \item SetWindows(4,4,2); SetOffsetFromWindow(1);
|
---|
846 | \item SetWindows(4,6,4); SetOffsetFromWindow(0);
|
---|
847 | \item SetWindows(6,6,4); SetOffsetFromWindow(1);
|
---|
848 | \item SetWindows(8,8,4); SetOffsetFromWindow(1);
|
---|
849 | \item SetWindows(14,10,4); SetOffsetFromWindow(2);
|
---|
850 | \suspend{enumerate}
|
---|
851 | \item[MExtractTimeAndChargeSlidingWindow]: with the following initialization: \\
|
---|
852 | \resume{enumerate}
|
---|
853 | \item SetWindowSize(2,2); SetRange(5,11,7,11);
|
---|
854 | \item SetWindowSize(4,4); SetRange(5,13,6,12);
|
---|
855 | \item SetWindowSize(4,6); SetRange(5,13,5,13);
|
---|
856 | \item SetWindowSize(6,6); SetRange(4,14,5,13);
|
---|
857 | \item SetWindowSize(8,8); SetRange(4,16,4,14);
|
---|
858 | \item SetWindowSize(14,10); SetRange(5,10,7,11);
|
---|
859 | \suspend{enumerate}
|
---|
860 | \item[MExtractTimeAndChargeSpline]: with the following initialization:
|
---|
861 | \resume{enumerate}
|
---|
862 | \item SetChargeType(MExtractTimeAndChargeSpline::kAmplitude); \\
|
---|
863 | SetRange(5,10,7,10);
|
---|
864 | \suspend{enumerate}
|
---|
865 | SetChargeType(MExtractTimeAndChargeSpline::kIntegral); \\
|
---|
866 | and:
|
---|
867 | \resume{enumerate}
|
---|
868 | \item SetRiseTime(0.5); SetFallTime(0.5); SetRange(5,10,7,11);
|
---|
869 | \item SetRiseTime(0.5); SetFallTime(1.5); SetRange(5,11,7,12);
|
---|
870 | \item SetRiseTime(1.0); SetFallTime(3.0); SetRange(4,12,5,13);
|
---|
871 | \item SetRiseTime(1.5); SetFallTime(4.5); SetRange(4,14,3,13);
|
---|
872 | \suspend{enumerate}
|
---|
873 | \item[MExtractTimeAndChargeDigitalFilter]: with the following initialization:
|
---|
874 | \resume{enumerate}
|
---|
875 | \item SetWeightsFile(``cosmics\_weights.dat''); SetRange(4,14,5,13);
|
---|
876 | \item SetWeightsFile(``cosmics\_weights4.dat''); SetRange(5,13,6,12);
|
---|
877 | \item SetWeightsFile(``calibration\_weights\_UV.dat'');
|
---|
878 | \item SetWeightsFile(``calibration\_weights4\_UV.dat'');
|
---|
879 | \item SetWeightsFile(``calibration\_weights\_blue.dat'');
|
---|
880 | \item SetWeightsFile(``calibration\_weights4\_blue.dat'');
|
---|
881 | \end{enumerate}
|
---|
882 | \end{description}
|
---|
883 |
|
---|
884 | References: \cite{OF77,OF94}.
|
---|
885 |
|
---|
886 |
|
---|
887 | %%% Local Variables:
|
---|
888 | %%% mode: latex
|
---|
889 | %%% TeX-master: "MAGIC_signal_reco"
|
---|
890 | %%% TeX-master: "MAGIC_signal_reco"
|
---|
891 | %%% TeX-master: "Algorithms"
|
---|
892 | %%% End:
|
---|