diff --git a/documents/thesis/chapters/appendix-random-phasor.tex b/documents/thesis/chapters/appendix-random-phasor.tex deleted file mode 100644 index 507256a..0000000 --- a/documents/thesis/chapters/appendix-random-phasor.tex +++ /dev/null @@ -1,140 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{Random Phasor Sum Distribution} -\label{sec:phasor_distributions} -%\section{Random Phasor Distribution} - -This section gives a short derivation of \eqref{eq:random_phasor_sum:phase:sine} using two frequency-domain phasors. -Further reading can be found in Ref.~\cite[Chapter 2.9]{goodman1985:2.9} under ``Constant Phasor plus Random Phasor Sum''. -\\ - -Write the noise phasor as $\vec{m} = a \, e^{i\pTrue}$ with phase $-\pi < \pTrue \leq \pi$ and amplitude $a \geq 0$, -and the signal phasor as $\vec{s} = s \, e^{i\pTrue_s}$, but rotated such that its phase $\pTrue_s = 0$. -\\ -% Noise phasor description -The noise phasor is fully described by the joint probability density function -\begin{equation} - \label{eq:noise:pdf:joint} - \phantom{,} - p_{A\PTrue}(a, \pTrue; \sigma) - = - \frac{a}{2\pi\sigma^2} e^{-\frac{a^2}{2\sigma^2}} - , -\end{equation} -for $-\pi < \pTrue \leq \pi$ and $a \geq 0$. -\\ - -Integrating \eqref{eq:noise:pdf:joint} over the amplitude $a$, it follows that the phase is uniformly distributed. -\\ -Likewise, the amplitude follows a Rayleigh distribution -\begin{equation} - \label{eq:noise:pdf:amplitude} - %\label{eq:pdf:rayleigh} - \phantom{,} - p_A(a; \sigma) - %= p^{\mathrm{RICE}}_A(a; \nu = 0, \sigma) - = \frac{a}{\sigma^2} e^{-\frac{a^2}{2\sigma^2}} - , -\end{equation} -for which the mean is $\bar{a} = \sigma \sqrt{\frac{\pi}{2}}$ and the standard~deviation is given by $\sigma_{a} = \sigma \sqrt{ 2 - \tfrac{\pi}{2} }$. -\\ - -% Random phasor sum -Adding the signal phasor, the mean in \eqref{eq:noise:pdf:joint} shifts - from $\vec{a}^2 = a^2 {\left( \cos \pTrue + \sin \pTrue \right)}^2$ - to ${\left(\vec{a} - \vec{s}\right)}^2 = {\left( a \cos \pTrue -s \right)}^2 + {\left(\sin \pTrue \right)}^2$, - resulting in a new joint distribution -\begin{equation} - \label{eq:phasor_sum:pdf:joint} - \phantom{.} - p_{A\PTrue}(a, \pTrue; s, \sigma) - = \frac{a}{2\pi\sigma^2} - \exp[ - - \frac{ - {\left( a \cos \pTrue - s \right)}^2 - + {\left( a \sin \pTrue \right)}^2 - }{ - 2 \sigma^2 - } - ] - . -\end{equation} -\\ - -Integrating \eqref{eq:phasor_sum:pdf:joint} over $\pTrue$ one finds -a Rice (or Rician) distribution for the amplitude, -\begin{equation} - \label{eq:phasor_sum:pdf:amplitude} - %\label{eq:pdf:rice} - \phantom{,} - p_A(a; s, \sigma) - = \frac{a}{\sigma^2} - \exp[-\frac{a^2 + s^2}{2\sigma^2}] - \; - I_0\left( \frac{a s}{\sigma^2} \right) - , -\end{equation} -where $I_0(z)$ is the modified Bessel function of the first kind with order zero. -\\ - -\begin{figure} - \centering - \includegraphics[width=0.5\textwidth]{beacon/phasor_sum/pdfs-amplitudes.pdf} - \caption{ - A signal phasor's amplitude in the presence of noise will follow a Rician distribution~\eqref{eq:phasor_sum:pdf:amplitude}. - For strong signals, this approximates a gaussian distribution, while for weak signals, this approaches a Rayleigh distribution. - } - \label{fig:phasor_sum:pdf:amplitude} -\end{figure} -For the Rician distribution, two extreme cases can be highlighted (as can be seen in Figure~\ref{fig:phasor_sum:pdf:amplitude}). -In the case of a weak signal ($s \ll a$), \eqref{eq:phasor_sum:pdf:amplitude} behaves as a Rayleigh distribution~\eqref{eq:noise:pdf:amplitude}. -Meanwhile, it approaches a gaussian distribution around $s$ when a strong signal ($s \gg a$) is presented. -\begin{equation} - \label{eq:strong_phasor_sum:pdf:amplitude} - p_A(a; \sigma) = \frac{1}{\sqrt{2\pi}} \exp[-\frac{{\left(a - s\right)}^2}{2\sigma^2}] -\end{equation}\\ - -Like the amplitude distribution \eqref{eq:phasor_sum:pdf:amplitude}, the marginal phase distribution of \eqref{eq:phasor_sum:pdf:joint} results in two extreme cases; -weak signals correspond to the uniform distribution for \eqref{eq:noise:pdf:joint}, while strong signals are well approximated by a gaussian distribution (see Figure~\ref{fig:random_phasor_sum:pdf:phase}). -\\ - -The analytic form takes the following complex expression, -\begin{equation} - \label{eq:phase_pdf:random_phasor_sum} - p_\PTrue(\pTrue; s, \sigma) = - \frac{ e^{-\left(\frac{s^2}{2\sigma^2}\right)} }{ 2 \pi } - + - \sqrt{\frac{1}{2\pi}} - \frac{s}{\sigma} - e^{-\left( \frac{s^2}{2\sigma^2}\sin^2{\pTrue} \right)} - \frac{\left( - 1 + \erf{ \frac{s \cos{\pTrue}}{\sqrt{2} \sigma }} - \right)}{2} - \cos{\pTrue} -\end{equation} -where -\begin{equation} - \label{eq:erf} - \phantom{,} - \erf{\left(z\right)} = \frac{2}{\sqrt{\pi}} \int_0^z \dif{t} e^{-t^2} - , -\end{equation} -is the error function. -\begin{figure} - \centering - \includegraphics[width=0.5\textwidth]{beacon/phasor_sum/pdfs-phases.pdf} - \caption{ - The Random Phasor Sum phase distribution \eqref{eq:phase_pdf:random_phasor_sum}. - For strong signals, this approximates a gaussian distribution, while for weak signals, this approaches a uniform distribution. - } - \label{fig:random_phasor_sum:pdf:phase} -\end{figure} -\end{document} diff --git a/documents/thesis/chapters/appendix-supplementary-figures.tex b/documents/thesis/chapters/appendix-supplementary-figures.tex deleted file mode 100644 index 9c7f972..0000000 --- a/documents/thesis/chapters/appendix-supplementary-figures.tex +++ /dev/null @@ -1,153 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{Supplementary Figures} -\label{sec:supplementary_figures} - -\begin{figure}[h] - \centering - \includegraphics[width=\textwidth]{beacon/field/field_three_left_phase_nomax_large.pdf} - \caption{Enhanced size of Figure~\ref{fig:dynamic-resolve}.} - \label{fig:dynamic-resolve:phase:large} -\end{figure} - -\clearpage -\begin{figure}% <<< - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.50.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.50.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.50.pdf} - \caption{ - $50\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.75.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.75.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.75.pdf} - \caption{ - $75\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.100.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.100.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.100.pdf} - \caption{ - $100\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.125.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.125.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.125.pdf} - \caption{ - $125\MHz$ - } - \end{subfigure} -\end{figure}% -\begin{figure}[t]\ContinuedFloat - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.150.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.150.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.150.pdf} - \caption{ - $150\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.175.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.175.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.175.pdf} - \caption{ - $175\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.200.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.200.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig8-histogram.200.pdf} - \caption{ - $200\MHz$ - } - \end{subfigure} - \caption{ - The measured phase differences between channels 1 and 2. - See Figure~\ref{fig:grand:phaseshift:measurements} for details. - } - \label{fig:grand:phaseshift:ch1ch2} -\end{figure} - -\begin{figure}[t]% <<< - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf} - \caption{ - $50\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.75.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.75.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.75.pdf} - \caption{ - $75\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.100.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.100.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.100.pdf} - \caption{ - $100\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.125.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.125.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.125.pdf} - \caption{ - $125\MHz$ - } - \end{subfigure} -\end{figure}% -\begin{figure}\ContinuedFloat - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.150.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.150.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.150.pdf} - \caption{ - $150\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.175.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.175.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.175.pdf} - \caption{ - $175\MHz$ - } - \end{subfigure} - \begin{subfigure}{1\textwidth} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.200.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.200.pdf} - \includegraphics[width=0.32\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.200.pdf} - \caption{ - $200\MHz$ - } - \end{subfigure} - \caption{ - The measured phase differences between channels 2 and 4. - See Figure~\ref{fig:grand:phaseshift:measurements} for details. - } - \label{fig:grand:phaseshift:ch2ch4} -\end{figure} -\end{document} diff --git a/documents/thesis/chapters/beacon_discipline.tex b/documents/thesis/chapters/beacon_discipline.tex index d39fc57..39f7b88 100644 --- a/documents/thesis/chapters/beacon_discipline.tex +++ b/documents/thesis/chapters/beacon_discipline.tex @@ -1,69 +1,99 @@ % vim: fdm=marker fmr=<<<,>>> \documentclass[../thesis.tex]{subfiles} +% Local preamble <<< \graphicspath{ {.} {../../figures/} {../../../figures/} } +% Notes: +% \tau is a measured/apparent quantity +% t is true time +% priming is required for moving with the signal / different reference frame + +% time variables +\newcommand{\tTrue}{t} +\newcommand{\tMeas}{\tau} + +\newcommand{\tTrueEmit}{\tTrue_0} +\newcommand{\tTrueArriv}{\tTrueEmit'} +\newcommand{\tMeasArriv}{\tMeas_0} +\newcommand{\tProp}{\tTrue_d} +\newcommand{\tClock}{\tTrue_c} + +% phase variables +\newcommand{\pTrue}{\phi} +\newcommand{\PTrue}{\Phi} +\newcommand{\pMeas}{\varphi} + +\newcommand{\pTrueEmit}{\pTrue_0} +\newcommand{\pTrueArriv}{\pTrueArriv'} +\newcommand{\pMeasArriv}{\pMeas_0} +\newcommand{\pProp}{\pTrue_d} +\newcommand{\pClock}{\pTrue_c} + +% >>> Local Preamble + \begin{document} -\chapter{Synchronising Detectors with a Beacon Signal} +\chapter{Disciplining by Beacon} %<<< \label{sec:disciplining} -The detection of extensive air showers uses detectors distributed over large areas. %<<< -Solutions for precise timing ($< 0.1\ns$) over large distances exist. -Initially developed for fibre-optic setups, White~Rabbit~\cite{Serrano:2009wrp} is also being investigated to be used as a direct wireless time dissemination system~\cite{Gilligan:WR-over-mm-wave}. +Time synchronisation for autonomous stations is typically performed with a \gls{GNSS} clock in each station. +The time accuracy supplied by the \gls{GNSS} clock ($\sim 10 \ns$) is not enough to do effective interferometry. +To cross the $1 \ns$ accuracy threshold an additional timing mechanism is required. \\ -However, the combination of large distances and the number of detectors make it prohibitively expensive to realise such a setup for \gls{UHECR} detection. -For this reason, the time synchronisation of these autonomous stations is typically performed with a \gls{GNSS} clock in each station. -\\ - -To obtain a competitive resolution of the atmospheric shower depth \Xmax with radio interferometry requires an inter-detector synchronisation of better than a few nanoseconds (see Figure~\ref{fig:xmax_synchronise}). -The synchronisation defect in \gls{AERA} using a \gls{GNSS} was found to range between a few nanoseconds up to multiple tens of nanoseconds over the course of a single day (see~\cite[Figure~3]{PierreAuger:2015aqe}). -Therefore, an extra timing mechanism must be provided to enable interferometric reconstruction of \glspl{EAS}. -\\ - % High sample rate -> additional clock -For radio antennas, an in-band solution can be created using the antennas themselves by emitting a radio signal from a transmitter. -With the position of the transmitter known, the time delays can be inferred and thus the arrival times at each station individually. -This has been successfully employed in \gls{AERA} reaching an accuracy better than $2 \ns$ \cite{PierreAuger:2015aqe}. -\\ -% Active vs Parasitic -For this section, it is assumed that the transmitter is actively introduced to the array and therefore controlled in terms of produced signals and transmitting power. -It is foreseeable that ``parasitic'' setups, where sources that are not under control of the experiment introduce signals, can be analysed in a similar manner. -However, for such signals to work, they must have a well-determined and stable origin. -See the next Chapter for one such possible setup in \gls{Auger}. +For radio antennas, an in-band solution can be created using the antennas themselves together with a transmitter. +This is directly dependent on the sampling rate of the detectors. +With the position of the transmitter known, time delays can be inferred and thus the arrival times at each station individually. +Such a mechanism has been previously employed in \gls{AERA} reaching an accuracy better than $2 \ns$ \cite{PierreAuger:2015aqe}. \\ -% Impulsive vs Continuous -The nature of the transmitted radio signal, hereafter beacon signal, affects both the mechanism of reconstructing the timing information and the measurement of the radio signal for which the antennas have been designed. -Depending on the stability of the station clock, one can choose for employing a continuous beacon (e.g.~a~sine~wave) or one that is emitted at some interval (e.g.~a~pulse). -\\ - -% noise sources -Nonetheless, various sources emit radiation that is also picked up by the antenna on top of the wanted signals. -An important characteristic is the ability to separate a beacon signal from noise. -Therefore, these analysis methods must be performed in the presence of noise. -\\ -A simple noise model is given by gaussian noise in the time-domain which is associated to many independent random noise sources. -Especially important is that this noise model will affect any phase measurement depending on the strength of the beacon with respect to the noise level, without introducing a frequency dependence,~i.e.~ white noise. +% Discrete vs Continuous +The nature of the transmitted radio signal, hereafter beacon, affects both the mechanism of reconstructing the timing information and the measurement of the radio signal for which the antennas have been designed.. +Depending on the stability of the station clock, one can choose for employing a continous or an intermittent beacon. +This influences the tradeoff between methods. \\ % outline of chapter -In the following, the synchronisation scheme for both the continuous and the recurrent beacon are elaborated upon. -Before going in-depth on the synchronisation using either of such beacons, the synchronisation problem is worked out. %>>> +In the following, the synchronisation scheme for both the continuous and intermittent beacon are elaborated upon. +\Todo{further outline} + +\section{Physical Setup} %<<< + +\begin{figure} + \centering + \includegraphics[width=0.6\textwidth,height=0.7\textheight,keepaspectratio]{beacon/antenna_setup_two.pdf} + \caption{ + An example setup of two antennas ($A_i$) at different distances from a transmitter ($T$). + } + \label{fig:beacon_spatial_setup} +\end{figure} + +The setup of an additional in-band synchronisation mechanism using a transmitter reverses the method of interferometry.\todo{Requires part in intro about IF} +\\ -\section{The Synchronisation Problem} %<<< -% <<<< % time delay -An in-band solution for synchronising the detectors is effectively a reversal of the method of interferometry in Section~\ref{sec:interferometry}. -The distance between the transmitter $T$ and the antenna $A_i$ incurs a time delay caused by the finite propagation speed of the radio signal (see the $\Delta_i$ term in \eqref{eq:propagation_delay}). -In this chapter it will be denoted as $(\tProp)_i$ for clarity. +The distance between the transmitter $T$ and the antenna $A_i$ incur a time delay $(\tProp)_i$ caused by the finite propagation speed of the radio signal over these distances. +Since the signal is an electromagnetic wave, its instantanuous velocity $v$ depends solely on the refractive index~$n$ of the medium as $v = \frac{c}{n}$. +In general, the refractive index of air is dependent on factors such as the pressure and temperature of the air the signal is passing through and the frequencies of the signal. +However, in many cases, the refractive index can be taken constant over the trajectory to simplify models. + +As such, the time delay due to propagation can be written as +\begin{equation} + \label{eq:propagation_delay} + \phantom{,} + (\tProp)_i = \frac{ \left|{ \vec{\small T} - \vec{ \small A_i} }\right| }{c} n_{eff} + , +\end{equation} +where $n_{eff}$ is the effective refractive index over the trajectory of the signal. \\ If the time of emitting the signal at the transmitter $\tTrueEmit$ is known, this allows to directly synchronise the transmitter and an antenna since -\begin{equation}\label{eq:transmitter2antenna_t0}%<<< +\begin{equation} + \label{eq:transmitter2antenna_t0} \phantom{,} %$ (\tTrueArriv)_i @@ -73,7 +103,7 @@ If the time of emitting the signal at the transmitter $\tTrueEmit$ is known, thi (\tMeasArriv)_i - (\tClock)_i %$ , -\end{equation}%>>> +\end{equation} where $(\tTrueArriv)_i$ and $(\tMeasArriv)_i$ are respectively the true and measured arrival time of the signal at antenna $A_i$. The difference between these two terms gives the clock deviation term $(\tClock)_i$. \\ @@ -81,7 +111,8 @@ The difference between these two terms gives the clock deviation term $(\tClock) % relative timing; synchronising without t0 information As \eqref{eq:transmitter2antenna_t0} applies for each antenna, two antennas recording the same signal from a transmitter will share the $\tTrueEmit$ term. In that case, the differences between the true arrival times $(\tTrueArriv)_i$ and propagation delays $(\tProp)_i$ of the antennas can be related as -\begin{equation}\label{eq:interantenna_t0}%<<< +\begin{equation} + \label{eq:interantenna_t0} \phantom{.} \begin{aligned} (\Delta \tTrueArriv)_{ij} @@ -94,11 +125,13 @@ In that case, the differences between the true arrival times $(\tTrueArriv)_i$ a \equiv (\Delta \tProp)_{ij} \end{aligned} . -\end{equation}%>>> +\end{equation} + + % mismatch into clock deviation -Combining \eqref{eq:interantenna_t0} and \eqref{eq:transmitter2antenna_t0} then gives the relative clock mismatch $(\Delta \tClock)_{ij}$ as -\begin{equation}%<<< +Combining \eqref{eq:interantenna_t0} and \eqref{eq:transmitter2antenna_t0} then gives the relative clock mismatch $\Delta (\tClock)_{ij}$ as +\begin{equation} \label{eq:synchro_mismatch_clocks} \phantom{.} \begin{aligned} @@ -110,135 +143,66 @@ Combining \eqref{eq:interantenna_t0} and \eqref{eq:transmitter2antenna_t0} then &= (\Delta \tMeasArriv)_{ij} - (\Delta \tProp)_{ij} \\ \end{aligned} . -\end{equation}%>>> +\end{equation} Thus, measuring $(\tMeasArriv)_i$ and determining $(\tProp)_i$ for two antennas provides the synchronisation mismatch between them. \\ -% relative if tMeasArriv unkonwn -Note that $\tTrueEmit$ is not required in \eqref{eq:synchro_mismatch_clocks} to be able to synchronise two antennas. -However, without knowledge on the $\tTrueEmit$ of the transmitter, the synchronisation mismatch $(\Delta \tClock)_{ij}$ cannot be uniquely attributed to either of the antennas; -this scheme only provides relative synchronisation. -% >>>> - -\subsection{Sine Synchronisation}% <<< -% continuous -> period multiplicity -In the case of a sine beacon, its periodicity prevents to differentiate between consecutive periods using the beacon alone. -The measured arrival term $\tMeasArriv$ in \eqref{eq:transmitter2antenna_t0} is no longer uniquely defined, since -\begin{equation}\label{eq:period_multiplicity}%<<< - \phantom{,} - f(\tMeasArriv) - %= \tTrueArriv + kT\\ - = f\left( \frac{\pMeasArriv}{2\pi}\,T \right)\\ - = f\left( \frac{\pMeasArriv}{2\pi}\,T + kT \right)\\ - , -\end{equation}%>>> -where $-\pi < \pMeasArriv < \pi$ is the phase of the beacon $f(t)$ at time $\tMeasArriv$, $T$ the period of the beacon and $k \in \mathbb{Z}$ is an unknown period counter. -Of course, this means that the clock defects $\tClock$ can only be resolved up to the beacon's period, changing \eqref{eq:synchro_mismatch_clocks} to -\begin{equation}\label{eq:synchro_mismatch_clocks_periodic}%<<< - \begin{aligned} - \phantom{.} - (\Delta \tClock)_{ij} - &\equiv (\tClock)_i - (\tClock)_j \\ - &= (\Delta \tMeasArriv)_{ij} - (\Delta \tTrueArriv)_{ij} \\ - &= (\Delta \tMeasArriv)_{ij} - (\Delta \tProp)_{ij} \\ - &= \left[ \frac{ (\Delta \pMeasArriv)_{ij}}{2\pi} - \Delta k'_{ij} \right] T - (\Delta \tProp)_{ij} \\ - &= \left[ \frac{ (\Delta \pMeasArriv)_{ij}}{2\pi} - \frac{(\Delta \pProp)_{ij} }{2\pi} \right] - \Delta k_{ij} T\\ - &\equiv \left[ \frac{ (\Delta \pClock)_{ij} }{2\pi}\right] T - k_i T - .\\ - \end{aligned} -\end{equation}%>>> -Relative synchronisation of two antennas is thus possible with the caveat of being off by an unknown amount of periods $k_i \in \mathbb{Z}$. -Note that in the last step, $k_i = \Delta k_{ij}$ is redefined taking station $j$ as the reference station such that $k_j = 0$. +% is relative +As the mismatch is the difference between the antenna clock deviations, this scheme does not allow to uniquely attribute the mismatch to one of the clock deviations $(\tClock)_i$. +Instead, it only gives a relative synchronisation between the antennas. \\ +This can be resolved by knowledge on the $\tTrueEmit$ of the transmitter. + + +\bigskip -The correct period $k$ alignment might be found in at least two ways. -% lifting period multiplicity -> long timescale -First, if the timescale of the beacon is much longer than the estimated accuracy of another timing mechanism (such as a \gls{GNSS}), - one can be confident to have the correct period. -In \gls{AERA} for example, multiple sine waves were used amounting to a total beacon period of $\sim 1 \us$ \cite[Figure~2]{PierreAuger:2015aqe}. -With an estimated timing accuracy of the \gls{GNSS} under $50 \ns$ the correct beacon period can be determined, resulting in a unique measured arrival time $\tMeasArriv$. -\\ -% lifing period multiplicity -> short timescale counting + -A second method consists of using an additional (discrete) signal to declare a unique $\tMeasArriv$. -This relies on the ability of counting how many beacon periods have passed since this extra signal has been recorded. -Chapter~\ref{sec:single_sine_sync} shows a special case of this last scenario where the period counters are approximated from an extensive air shower. -\\%>>> -\subsection{Array synchronisation}% <<< -\label{sec:beacon:array} % extending to array -The idea of a beacon is to synchronise an array of antennas. -As \eqref{eq:synchro_mismatch_clocks} applies for each pair of antennas in the array, all the antennas that record the beacon signal can determine the synchronisation mismatches simultaneously.% -\footnote{%<<< -The mismatch terms for any two pairs of antennas sharing one antenna $\{ (i,j), (j,k) \}$ allows to find the closing mismatch term for $(i,k)$ since -\begin{equation*}\label{eq:synchro_closing}%<<< +In general, we are interested in synchronising an array of antennas. +As \eqref{eq:synchro_mismatch_clocks} applies for any two antennas in the array, all the antennas that record the signal can determine the synchronisation mismatches simultaneously. +\\ +The mismatch terms for any two pairs of antennas sharing a single antenna $\{ (i,j), (j,k) \}$ allows to find the closing mismatch term for $(i,k)$ since +\begin{equation*} + \label{eq:synchro_closing} (\Delta \tClock)_{ij} + (\Delta \tClock)_{jk} + (\Delta \tClock)_{ki} = 0 -\end{equation*}%>>> -} %>>> -Taking one antenna as the reference antenna with $(\tClock)_r = 0$, the mismatches across the array can be determined by applying \eqref{eq:synchro_mismatch_clocks} over consecutive pairs of antennas and thus all relative clock deviations $(\Delta \tClock)_{ir}$. +\end{equation*} +Taking one antenna as the reference antenna with $(\tClock)_r = 0$, the mismatches across the array can be determined by applying \eqref{eq:synchro_mismatch_clocks} over consecutive pairs of antennas and thus all clock deviations $(\tClock)_i$. \\ -As discussed previously, the synchronisation problem is different for a continuous and an impulsive beacon due to the non-uniqueness (in the sine wave case) of the measured arrival time $\tMeasArriv$. -This is illustrated in Figure~\ref{fig:dynamic-resolve} where a three-element array constrains the location of the transmitter using the true timing information of the antennas. -It works by finding the minimum deviation between the putative and measured time differences ($\Delta t_{ij}(x)$, $\Delta t_{ij}$ respectively) per baseline $(i,j)$ for each location on a grid. -\\ -For a sine signal, comparing the baseline phase differences instead, this results in a highly complex pattern constraining the transmitter's location. -\\ +% floating offset, minimising total +\Todo{floating offset, matrix minimisation?} + -\begin{figure}%<<< - \centering - \begin{subfigure}{0.49\textwidth} - \centering - \includegraphics[width=\textwidth]{beacon/field/field_three_left_time_nomax.pdf} - \end{subfigure} - \hfill - \begin{subfigure}{0.49\textwidth} - \centering - \includegraphics[width=\textwidth]{beacon/field/field_three_left_phase_nomax.pdf} - \end{subfigure} - \caption{ - Reconstruction of a transmitter's location (\textit{tx}) or direction using three antennas~($a$,~$b$,~$c$). - For each location, the colour indicates the total deviation from the measured time or phase differences in the array, such that $0$ (blue) is considered a valid location of \textit{tx}. - The different baselines allow to reconstruct the direction of an impulsive signal (\textit{left pane}) while a periodic signal (\textit{right pane}) gives rise to a complex pattern (see Appendix~\ref{fig:dynamic-resolve:phase:large} for enhanced size). - } - \label{fig:dynamic-resolve} -\end{figure}%>>> % signals to send, and measure, (\tTrueArriv)_i. In the former, the mechanism of measuring $(\tMeasArriv)_i$ from the signal has been deliberately left out. -The nature of the beacon, being impulsive or continuous, requires different methods to determine this quantity. -In the following sections, two separate approaches for measuring the arrival time $(\tMeasArriv)_i$ are examined. -\\ +The nature of the beacon allows for different methods to determine $(\tMeasArriv)_i$. +In the following, two approaches for measuring $(\tMeasArriv)_i$ are examined. +\Todo{reword towards next sections?} -%%%% >>> %%%% >>> %%%% Pulse %%%% -\section{Pulse Beacon}% <<< Impulsive +\section{Intermittent Pulse Beacon}% <<< \label{sec:beacon:pulse} -% pulse vs airshower detection -% order of magnitudes -To synchronise on an impulsive signal, it must be recorded at the relevant detectors. -However, it must be distinguished from air shower signals. -It is therefore important to choose an appropriate length and interval of the synchronisation signal to minimise \mbox{dead-time} of the detector. +If the stability of the clock allows for it, the synchronisation can be performed during a discrete period. +The tradeoff between the gained accuracy and the timescale between synchronisation periods allows for a dead time of the detectors during synchronisation. +The dead time in turn, allows to emit and receive strong signals such as a single pulse. \\ -With air shower signals typically lasting in the order of $10\ns$, transmitting a pulse of $1\us$ once every second already achieves a simple distinction between the synchronisation and air shower signals and a dead-time below $0.001\%$. -\\ -Schemes using such a ``ping'' might also be employed between the antennas themselves. -Appointing the transmitter role to differing antennas additionally opens the way to \mbox{(self-)calibrating} the antennas in the array. -\\ -In this section, the idea of using a single pulse as beacon signal is explored. +Schemes using such a ``ping'' can be employed between the antennas themselves. +Appointing the transmitter role to differing antennas additionally opens the way to calibrating the antennas in the array. \\ +Note the following method works fully within the time-domain. % conceptually simple + filterchain response -The detection of a (strong) pulse in a waveform is conceptually simple, and can be accomplished while working fully in the time-domain. -Before recording the signal at a detector, the signal at the antenna is typically put through a filter-chain which acts as a band-pass filter. +The detection of a pulse is conceptually simple. +Before recording a signal at a detector, it is typically put through a filterchain which acts as a bandpass filter. This causes the sampled pulse to be stretched in time (see Figure~\ref{fig:pulse:filter_response}). \\ -We can characterise the response of a filter as the response to an impulse. -This impulse response can then be used as a template to match against measured waveforms. -In Figure~\ref{fig:pulse:filter_response}, the impulse and the filter's response are shown, where the Butterworth filter band-passes the signal between $30\MHz$ and $80\MHz$. +The response of a filter is characterised by the response to an impulse. +In Figure~\ref{fig:pulse:filter_response}, an impulsive signal is filtered using a Butterworth filter which bandpasses the signal between $30\MHz$ and $80\MHz$. +The resulting signal can be used as a template to match against a measured waveform. \\ A measured waveform will consist of the filtered signal in combination with noise. @@ -247,348 +211,779 @@ Figure~\ref{fig:pulse:simulated_waveform} shows an example of the waveform obtai \\ \begin{figure} - \centering - \begin{subfigure}{0.48\textwidth} + \begin{subfigure}{0.5\textwidth} \includegraphics[width=\textwidth]{pulse/filter_response.pdf} \caption{ - The impulse response of the used filter. - Amplitudes are not to scale. + The filter response. + The amplitudes are not to scale. } \label{fig:pulse:filter_response} \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{pulse/antenna_signals_tdt0.2.pdf} + \begin{subfigure}{0.5\textwidth} + \includegraphics[width=\textwidth]{pulse/antenna_signal_to_noise_6.pdf} \caption{ - Simulated waveform with noise. - Horizontal dashed lines indicate signal and noise level. + A simulated waveform with noise. + Dashed lines indicate signal and noise level. } \label{fig:pulse:simulated_waveform} \end{subfigure} \caption{ - \subref{fig:pulse:filter_response} A single impulse and a simulated filtered signal, using a Butterworth filter, available to the digitiser in a detector. - \subref{fig:pulse:simulated_waveform} A noisy sampling of the filtered signal. It is derived from the filtered signal by adding filtered gaussian noise. + Left: A single impulse and the Butterworth filtered signal available to the digitiser in a detector. + Right: A noisy sampling of the filtered signal. It is derived from the filtered signal by adding filtered gaussian noise. } \label{fig:pulse:waveforms} \end{figure} +% pulse finding: signal to noise definition +The impulse response spreads the power of the signal over time. +The peak amplitude gives a measure of this power without needing to integrate the signal. +\\ +Since the noise is gaussian distributed in the time domain, it is natural to use the root mean square of its amplitude. +\\ +Therefore, in the following, the signal-to-noise ratio will be defined as the maximum amplitude of the filtered signal versus the root-mean-square of the noise amplitudes. + +\bigskip % pulse finding: template correlation: correlation -Detecting the modelled signal from Figure~\ref{fig:pulse:filter_response} in a waveform can be achieved by finding the correlation (see Section~\ref{sec:correlation}) between the two signals (see Figure~\ref{fig:pulse_correlation}). -The correlation is a measure of how similar two signals $u(t)$ and $v(t)$ are as a function of the time delay $\tau$. +Detecting the modeled signal from Figure~\ref{fig:pulse:filter_response} in a waveform can be achieved by finding the correlation~\eqref{eq:correlation_cont} between the two signals. +This is a measure of how similar two signals $u(t)$ and $v(t)$ are as a function of the time delay $\tau$. The maximum is attained when $u(t)$ and $v(t)$ are most similar to each other. -Therefore, this gives a measure of the best time delay $\tau$ between the two signals. +This then gives a measure of the best time delay $\tau$ between the two signals. +\\ + +The correlation is defined as +\begin{equation} + \label{eq:correlation_cont} + \phantom{,} + \Corr(\tau; u,v) = \int_{-\infty}^{\infty} \dif t \, u(t)\, v^*(t-\tau) + , +\end{equation} +where the integral reduces to a sum for a finite amount of samples in either $u(t)$ or $v(t)$. +Still, $\tau$ remains a continuous variable. \\ % pulse finding: template correlation: template and sampling frequency/sqrt(12) -When the digitiser samples the filtered signal, time offsets $\tau$ smaller than the sampling period $\Delta t = 1/f_s$ cannot be resolved. -Still, for many measurements under ideal conditions, one can show that the resolution of the timing asymptotically approaches $\Delta t/\sqrt{12}$. -\\ -This is an effect of the quantisation of the sampling period, where the time offsets $\tau$ are modelled as a uniform distribution in time bins the size of $\Delta t$. -In that case, the variance of a uniform distribution applies, obtaining this limit. -\\ - +When the digitiser samples the filtered signal, time offsets smaller than the sampling period that cannot be resolved. +Since the filtered signal is sampled discretely, this means the start of the \begin{figure} - \centering - \includegraphics[width=\textwidth]{pulse/correlation_tdt0.2_zoom.pdf} + \includegraphics[width=\textwidth]{pulse/waveform+correlation.pdf} \caption{ - \textit{Top:} The measured waveform and templated filter response from Figure~\ref{fig:pulse:filter_response}. - \textit{Bottom:} The (normalised) correlation between the waveform and template as a function of time delay $\tau$. - The template is shifted by the time delay found at the maximum correlation (green dashed line), aligning the template and waveform in the top figure. - } + } \label{fig:pulse_correlation} \end{figure} -% pulse finding: signal to noise definition -As can be seen in Figure~\ref{fig:pulse:filter_response}, the impulse response spreads the power of the signal over time. -The peak amplitude gives a measure of this power without needing to integrate the signal. -\\ -Expecting the noise to be gaussian distributed in the time domain, it is natural to use the \gls{RMS} of its amplitude as a quantity representing the strength of the noise. -\\ -Therefore, the \gls{SNR} will be defined as the maximum amplitude of the filtered signal versus the \gls{RMS} of the noise amplitudes. -\\ - - -\subsection{Timing accuracy} -% simulation -From the above, it is clear that both the \gls{SNR} as well as the sampling rate of the template have an effect on the ability to resolve small time offsets. -To further investigate this, we set up a simulation\footnote{\url{https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction/-/tree/main/simulations}} where templates with different sampling rates are matched to simulated waveforms for multiple \glspl{SNR}. - -First, an ``analog'' template is rendered at $\Delta t = 10\mathrm{\,fs}$ to be able to simulate small time-offsets. -Each simulated waveform samples this ``analog'' template with $\Delta t = 2\ns$ and a randomised time-offset $\tTrueTrue$. -\\ -Second, the matching template is created by sampling the ``analog'' template at the specified sampling rate (here considered are $0.5\ns$, $0.1\ns$ and $0.01\ns$). -\\ % pulse finding: time accuracies -Afterwards, simulated waveforms are correlated (see \eqref{eq:correlation_cont} in Chapter~\ref{sec:correlation}) against the matching template, this obtains a best time delay $\tau$ per waveform by finding the maximum correlation (see Figure~\ref{fig:pulse_correlation}). -%\\ -%Finding the best time delay $\tau$ using \eqref{eq:correlation_cont} corresponds to solving -%\begin{equation}\label{eq:argmax_correlation} -% \begin{array} -% \phantom{,} -% \tau -% &= \argmax \Corr(\tau; u, v)\\ -% &= \argmax\left( \sum u(t)\, v^*(t-\tau) \right) -% , -% \end{array} -%\end{equation} -%where we take the discrete version of \eqref{correlation_cont}. -\\ -Comparing the best time delay $\tau$ with the randomised time-offset $\tTrueTrue$, we get a time residual $\tResidual = \tTrueTrue - \tau$ per waveform. -\\ -For weak signals ($\mathrm{\gls{SNR}} \lesssim 2$), the correlation method will often select wrong peaks. -Therefore a selection criterion is applied on $\tResidual < 2 \Delta t$ to filter such waveforms and low \glspl{SNR} are not considered here. -\\ - -Figure~\ref{fig:pulse:snr_histograms} shows two histograms ($N=500$) of the time residuals for two \glspl{SNR}. -Expecting the time residual to be affected by both the quantisation and the noise, we fit a gaussian to the histograms. -The width of each such gaussian gives an accuracy on the time offset $\sigma_t$ that is recovered using the correlation method. -\\ - -\begin{figure}%<<< - \centering - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.small.pdf} - %\caption{\gls{SNR} = 5} - %\label{fig:pulse:snr_histograms:snr5} - \end{subfigure} - \hfill - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.small.pdf} - %\caption{\gls{SNR} = 50} - %\label{fig:pulse:snr_histograms:snr50} - \end{subfigure} - \caption{ - Time residuals histograms ($N=500$) for $\mathrm{\gls{SNR}} = (5, 50)$ at a template sampling rate of $10 \mathrm{\,ps}$. - } - \label{fig:pulse:snr_histograms} -\end{figure}%>>> - -By evaluating the timing accuracies $\sigma_t$ for some combinations of \glspl{SNR} and template sampling rates, Figure~\ref{fig:pulse:snr_time_resolution} is produced. -It shows that, as long as the pulse is (much) stronger than the noise ($\mathrm{\gls{SNR}} \gtrsim 5$), template matching could achieve a sub-nanosecond timing accuracy even if the measured waveform is sampled at a lower rate (here $\Delta t = 2\ns$). \begin{figure} - \centering - \includegraphics[width=\textwidth]{pulse/time_res_vs_snr_multiple_dt.pdf} + \includegraphics[width=0.45\textwidth]{pulse/time_accuracy_histogram_snr5.pdf} + \hfill + \includegraphics[width=0.45\textwidth]{pulse/time_accuracy_histogram_snr50.pdf} \caption{ - Pulse timing accuracy obtained by matching $N=500$ waveforms, sampled at $2\ns$, to a templated pulse, sampled at $\Delta t = 0.5\ns$ (blue), $0.1\ns$ (orange) and $0.01\ns$ (green). - Dashed lines indicate the asymptotic best time accuracy ($\Delta t/\sqrt{12}$) per template sampling rate. } - \label{fig:pulse:snr_time_resolution} + \label{fig:pulse_snr_histograms} \end{figure} -%\begin{figure}%<<< -% \centering -% \includegraphics[width=0.5\textwidth]{beacon/auger/1512.02216.figure2.beacon_beat.png} -% \caption{ -% From Ref~\cite{PierreAuger:2015aqe}. -% The beacon signal that the \gls{Auger} has employed in \gls{AERA}. -% The beating between 4 frequencies gives a total period of $1.1\us$ (indicated by the arrows). -% With a synchronisation uncertainty below $100\ns$ from the \gls{GNSS}, it fully resolves the period degeneracy. -% } -% \label{fig:beacon:pa} -%\end{figure}%>>> - +\begin{figure} + \includegraphics[width=\textwidth]{pulse/time_res_vs_snr_multiple_dt.pdf} + \caption{ + Pulse timing accuracy obtained by correlating a template pulse for multiple template sampling rates. + Dashed lines indicate the asymptotic best time accuracy ($\tfrac{1}{f\sqrt{12}}$) per template sampling rate. + } + \label{fig:pulse_snr_time_resolution} +\end{figure} % dead time %%%% >>> %%%% Sine %%%% -\section{Sine Beacon}% <<< Continuous +\section{Continuous Sine Beacon}% <<< \label{sec:beacon:sine} % continuous -> can be discrete -In the case the stations need continuous synchronisation, a different approach can be taken. -Still, the following method can be applied as a non-continuous beacon if required. +In the case that the stations need continuous synchronisation, a different route must be taken. +Still, the following method could be applied as an intermittent beacon if required. \\ -% continuous -> affect air shower -A continuously emitted beacon will be recorded simultaneously with the signals from air showers. -It is therefore important that the beacon does not fully perturb the recording of the air shower signals, but still be prominent enough for synchronising the antennas. -\\ -% Use sine wave to filter using frequency -By implementing the beacon signal as one or more sine waves, the beacon can be recovered from the waveform using Fourier Transforms (see Section~\ref{sec:fourier}). -It is then straightforward to discriminate a strong beacon from the air shower signals, resulting in a relatively unperturbed air shower recording for analysis after synchronisation. -\\ -Note that for simplicity, the beacon in this section will consist of a single sine wave at $f_\mathrm{beacon} = 51.53\MHz$ corresponding to a period of roughly $20\ns$. +% continuous -> affect airshower +If the beacon must be emitted continuously to be able to synchronise, it will be recorded simultaneously with the signals from airshowers. +The strength of the beacon at each antenna must therefore be tuned such to both be prominent enough to be able to synchronise, + and only affect the airshower signals recording upto a certain degree\Todo{reword}, much less saturating the detector. \\ -% FFT common knowledge .. -The typical Fourier Transform implementation, the \gls{FFT}, finds the amplitudes and phases at frequencies $f_m = m \Delta f$ determined solely by properties of the waveform, i.e.~the~sampling frequency $f_s$ and the number of samples $N$ in the waveform ($0 \leq m < N$ such that $\Delta f = f_s / (2N)$). -\\ -% .. but we require a DTFT -Depending on the frequency content of the beacon, the sampling frequency and the number of samples, one can resort to use such a \gls{DFT} \eqref{eq:fourier:dft}. -However, if the frequency of interest is not covered in the specific frequencies $f_m$, the approach must be modified (e.g.~by~zero-padding or interpolation). -Especially when only a single frequency is of interest, a simpler and shorter route can be taken by evaluating the \gls{DTFT} \eqref{eq:fourier:dtft} for this frequency directly. -\\ -The effect of using a \gls{DTFT} instead of a \gls{FFT} for the detection of a sine wave is illustrated in Figure~\ref{fig:sine:snr_definition}, where the \gls{DTFT} displays a higher amplitude than the \gls{FFT}. -\\ -% Signal to Noise -% frequency domain -%A strong beacon consisting of sine waves will show up as peaks in the frequency spectrum. -%An example spectrum is shown in Figure~\ref{fig:sine:snr_definition}, where -% large amplitudes -Of course, like the pulse method, the ability to measure the beacon's sine waves is dependent on the amplitude of the beacon in comparison to noise. -To quantify this comparison in terms of \gls{SNR}, - we define the signal level to be the amplitude of the frequency spectrum at the beacon's frequency determined by \gls{DTFT} (the orange line in Figure~\ref{fig:sine:snr_definition}), - and the noise level as the scaled \gls{RMS} of all amplitudes in the noise band determined by \gls{FFT} (blue line in Figure~\ref{fig:sine:snr_definition}). -Since gaussian noise has Rayleigh distributed amplitudes (see Figure~\ref{fig:phasor_sum:pdf:amplitude} in Appendix~\ref{sec:phasor_distributions}), this \gls{RMS} is scaled by $1/\sqrt{2\pi}$. -\\ -% longer traces -However, for sine waves, an additional method to increase the \gls{SNR} is available. -In the frequency spectrum, the amplitude with respect to gaussian noise also increases with more samples $N$ in a waveform. -Thus, by recording more samples in a waveform, the sine wave is recovered better. -This effect can be seen in Figure~\ref{fig:sine:snr_vs_n_samples} where the signal to noise ratio increases as $\sqrt{N}$. +% continuous -> period multiplicity +The continuity of the beacon poses a different issue. +Because the beacon must be periodic, differentiating between consecutive periods is not possible using the beacon alone. +The $\tTrueEmit$ term describing the transmitter time in \eqref{eq:transmitter2antenna_t0} is no longer uniquely defined, +\begin{equation} + \phantom{,} + \label{eq:period_multiplicity} + \tTrueEmit = \left[ \frac{\pTrueEmit}{2\pi} + k\right] T + , +\end{equation} +with $-\pi < \pTrueEmit < \pi$ the phase of the beacon at time $\tTrueEmit$, $T$ the period of the beacon and $k \in \mathbb{Z}$. \\ +This changes the synchronisation mismatches in \eqref{eq:synchro_mismatch_clocks} to +\begin{equation} + \label{eq:synchro_mismatch_clocks_periodic} + \phantom{.} + \begin{aligned} + (\Delta \tClock)_{ij} + &\equiv (\tClock)_i - (\tClock)_j \\ + &= (\Delta \tMeasArriv)_{ij} - (\Delta \tTrueArriv)_{ij} \\ + &= (\Delta \tMeasArriv)_{ij} - (\Delta \tProp)_{ij} - \Delta k_{ij} T\\ + &= \left[ \frac{ (\Delta \pMeasArriv)_{ij}}{2\pi} - \frac{(\Delta \pProp)_{ij} }{2\pi} - \Delta k_{ij} \right] T\\ + &\equiv \left[ \frac{ (\Delta \pClock)_{ij} }{2\pi} - \Delta k_{ij} \right] T\\ + \end{aligned} + . +\end{equation} -% spectral leaking, need strong(?) signals -Note that the \gls{DTFT}, as a finite \gls{FT}, suffers from spectral leakage, where signals at adjacent frequencies influence the ability to resolve the signals separately. -Depending on the signal to be recovered, different windowing functions (e.g.~Hann, Hamming, etc.) can be applied to a waveform. -For simplicity, in this document, no special windowing functions are applied to waveforms. - -\begin{figure}%<<< - \centering - %\begin{subfigure}{0.45\textwidth} - \includegraphics[width=0.7\textwidth]{fourier/signal_to_noise_definition.pdf} +\begin{figure} + \begin{subfigure}{\textwidth} + \includegraphics[width=\textwidth]{beacon/08_beacon_sync_timing_outline.pdf} \caption{ - Signal to Noise definition in the frequency domain. - Solid lines are the noise (blue) and beacon's (orange) frequency spectra obtained with a \gls{FFT}. - The noise level (blue dashed line) is the $\mathrm{\gls{RMS}}/\sqrt{2 \pi}$ over all frequencies (blue-shaded area). - The signal level (orange dashed line) is the amplitude calculated from the \gls{DTFT} at $51.53\MHz$ (orange star). + Measure two waveforms at different antennas at approximately the same local time (clocks are not synchronised). } - \label{fig:sine:snr_definition} + \label{fig:beacon_sync:timing_outline} + \end{subfigure} + \begin{subfigure}{\textwidth} + \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_outline.pdf} + \caption{ + Phase alignment syntonising the antennas using the beacon. + } + \label{fig:beacon_sync:syntonised} + \end{subfigure} + \begin{subfigure}{\textwidth} + \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_period_alignment.pdf} + \caption{ + Lifting period degeneracy ($k=m-n=7$ periods) using the optimal overlap between impulsive signals. + } + \label{fig:beacon_sync:period_alignment} + \end{subfigure} + \caption{ + Synchronisation scheme for two antennas using a continuous beacon and an impulsive signal, each emitted from a separate transmitter. + Grey dashed lines indicate periods of the beacon (orange), + full lines indicate the time of the impulsive signal (blue). + \\ + Middle panel: The beacon allows to resolve a small timing delay ($\Delta t_\phase$). + \\ + Lower panel: Expecting the impulsive signals to come from the same source, the overlap between the two impulsive signals is used to lift the period degeneracy ($k=m-n$). + } + \label{fig:beacon_sync:sine} + \todo{ + Redo figure without xticks and spines, + rename $\Delta t_\phase$, + also remove impuls time diff? + } \end{figure} -\begin{figure} - \centering - %\end{subfigure} - %\hfill - %\begin{subfigure}{0.45\textwidth} - \includegraphics[width=0.7\textwidth]{fourier/signal_to_noise_vs_timelength.pdf} - \caption{ - Signal to Noise ratio (SNR) as a function of time for waveforms containing only a sine wave and gaussian noise. - Note that there is little dependence on the sine wave frequency. - The two branches (up and down triangles) differ by a factor of $\sqrt{2}$ in SNR due to their sampling rate. - } - \label{fig:sine:snr_vs_n_samples} - %\end{subfigure} - %\\ - %\caption{} -\end{figure}%>>> -\subsection{Timing accuracy} -% simulation - -% Gaussian noise -The phase measurement of a sine beacon is influenced by other signals in the recorded waveforms. -They can come from various sources, both internal (e.g.~LNA~noise) and external (e.g.~galactic~background) to the detector. +% lifting period multiplicity -> long timescale +Synchronisation is possible with the caveat of being off by an unknown integer amount of periods $\Delta k_{ij}$. +In phase-locked systems this is called syntonisation. +There are two ways to lift this period degeneracy. \\ +First, if the timescale of the beacon is much longer than the estimated accuracy of another timing mechanism (such as a \gls{GNSS}), + one can be confident to have the correct period. +In AERA \cite{PierreAuger:2015aqe} for example, the total beacon repeats only after $\sim 1 \us$ (see Figure~\ref{fig:beacon:pa}). +With an estimated accuracy of the \gls{GNSS} below $50 \ns$ the correct beacon period can be determined, resulting in a unique $\tTrueEmit$ transmit time\todo{reword}. \\ -% simulation waveform -To investigate the resolution of the phase measurement, we generate waveforms of a sine wave with known, but differing, phases $\pTrueTrue$. -Gaussian noise is added to the waveform in the time-domain, after which the waveform is band-pass filtered between $30\MHz$ and $80\MHz$. -The phase measurement of the band-passed waveform is then performed by employing a \gls{DTFT}. -We can compare this measured phase $\pMeas$ with the initial known phase $\pTrueTrue$ to obtain a phase residual $\pResidual = \pTrueTrue - \pMeas$. -\\ -In Figure~\ref{fig:sine:trace_phase_measure}, the band-passed waveform and the measured sine wave are shown. -Note that the \gls{DTFT} allows for an implementation where samples are missing by explicitly using the samples' timestamps. -This is illustrated in Figure~\ref{fig:sine:trace_phase_measure} by the cut-out of the waveform. -\\ +% lifing period multiplicity -> short timescale counting + +Another scheme is using an additional discrete signal to declare a unique $\tTrueEmit$ (see Figure~\ref{fig:beacon_sync:sine}). +This relies on the ability of counting how many beacon periods have passed since the discrete signal has been recorded. \begin{figure} - \centering - %\begin{subfigure}{0.8\textwidth} - \includegraphics[width=\textwidth]{fourier/analysed_waveform.zoomed.pdf} + \includegraphics[width=0.5\textwidth]{beacon/auger/1512.02216.figure2.beacon_beat.png} \caption{ - Band-passed waveform containing a sine wave and gaussian time domain noise and the recovered sine wave at $51.53\MHz$. - Part of the waveform is removed to verify the implementation of the \gls{DTFT} allowing cut-out samples. + From Ref~\cite{PierreAuger:2015aqe}. + The beacon signal that the \acrlong*{PAObs} has employed in \gls{AERA}. + The beating between 4 frequencies gives a total period of $1.1\us$ (indicated by the arrows). } - \label{fig:sine:trace_phase_measure} - %\end{subfigure} + \label{fig:beacon:pa} \end{figure} +\bigskip -Figure~\ref{fig:sine:snr_histograms} shows two histograms ($N=100$) of the phase residuals for a medium and a high \gls{SNR}, respectively. -It can be shown that for medium and strong signals, the phase residual will be gaussian distributed (see below). -The width of each fitted gaussian in Figure~\ref{fig:sine:snr_histograms} gives an accuracy on the phase offset that is recovered using the \gls{DTFT}. -\\ -Note that these distributions have non-zero means, -this systematic offset has not been investigated further in this work. -\\ +% Yay for the sine wave +In the following section, the scenario of a (single) sine wave as a beacon is worked out. +It involves the tuning of the signal strength to attain the required accuracy. +Later, a mechanism to lift the period degeneracy using an airshower as discrete signal is presented. -% Signal to Noise definition -\begin{figure} - \begin{subfigure}{0.47\textwidth} - %\includegraphics[width=\textwidth]{ZH_simulation/bd_antenna_phase_deltas.py.phase.residuals.c5_b_N4096_noise1e4.pdf} - \includegraphics[width=\textwidth]{fourier/time_residuals/time_residuals_hist_n7.0e+0.small.pdf} - %\caption{$\mathrm{\gls{SNR}} \sim 7$} - %\label{fig:sine:snr_histograms:medium_snr} + +%% +%% Phase measurement +\subsection{Phase measurement} % <<< +% <<< +A continuous beacon can syntonise an array of antennas by correcting for the measured difference in beacon phases $(\Delta \pMeasArriv)_{ij}$. +They are derived by applying a \gls{FT} to the traces of each antenna. + +The digital measurement of the beacon phase is dependent on at least two factors: + the strength of the beacon in comparison to other signals (such as noise) and the length of the traces. + +Additionally, the \gls{FT} can be performed in a number of ways. + +These aspects are examined in the following section. + +\begin{figure}[h] + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/sine_beacon.pdf} + \caption{ + A waveform of a strong sine wave with gaussian noise.\Todo{Add noise} + } + \label{fig:beacon:sine} \end{subfigure} \hfill - \begin{subfigure}{0.47\textwidth} - %\includegraphics[width=\textwidth]{ZH_simulation/bd_antenna_phase_deltas.py.phase.residuals.c5_b_N4096_noise1e3.pdf} - \includegraphics[width=\textwidth]{fourier/time_residuals/time_residuals_hist_n7.0e+1.small.pdf} - %\caption{$\mathrm{\gls{SNR}} \sim 70$} - %\label{fig:sine:snr_histograms:strong_snr} + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{fourier/noisy_sine.pdf} + \caption{ + Fourier Spectrum of the signals. + \Todo{Add fourier spectra?} + } + \label{fig:beacon:spectrum} \end{subfigure} + \\ + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/ttl_beacon.pdf} + \caption{ + TTL + } + \label{fig:beacon:ttl} + \end{subfigure} + \caption{ - Phase residuals histograms ($N=100$) for $\mathrm{\gls{SNR}} \sim (7, 70)$. - For medium to strong signals the phase residuals sample a gaussian distribution. + Both show two samplings with a small offset in time. + Reconstructing the signal is easier to do for the sine wave with the same samplelength and number of samples. + } + \label{fig:beacon:ttl_sine_beacon} +\end{figure} +% >>> +% +% DTFT +\subsubsection{Discrete Time Fourier Transform}% <<< +% FFT common knowledge .. +The typical method to obtain spectral information from periodic data is the \gls{FFT} (a fast implementation of the \gls{DFT} \eqref{eq:fourier:dft}). +Such an algorithm efficiently finds the amplitudes and phases within a trace $x$ at specific frequencies $f = f_s \tfrac{k}{N}$ determined solely by the number of samples $N$ ($0 \leq k < N$) and the sampling frequency $f_s$. +\\ + +% .. but we require a DTFT +Depending on the frequency of the beacon, the sampling frequency and the number of samples, one can resort to use such a \gls{DFT}. +However, if the frequency of interest is not covered in the specific frequencies, the approach must be modified (e.g. zero-padding or interpolation). + +Especially when a single frequency is of interest, a shorter route can be taken by evaluating a discretized \gls{FT} directly. +\\ + +% DTFT from CTFT +The continuous formulation of the \acrlong{FT} takes the following form, +\begin{equation} + \label{eq:fourier} + \phantom{.} + X(f) = \int_\infty^\infty \dif{t}\, x(t)\, e^{-i 2 \pi f t} + . +\end{equation} +It decomposes the signal $x(t)$ into complex-valued plane waves $X(f)$ of frequency $f$. + +When $x(t)$ is sampled at discrete times, the integral of \eqref{eq:fourier} is discretized in time to result in the \acrlong{DTFT}: +\begin{equation} + \tag{DTFT} + \label{eq:fourier:dtft} + X(f) = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f t[n]} +\end{equation} +where $x(t) \in \mathcal{R} $ is sampled at times $t[n]$. +Considering a finite sampling size $N$ and periodicity of the signal, the bounds of the integral in \eqref{eq:fourier} collapse to $t[0]$ up to $t[N]$. +\\ +From this it follows that the lowest resolvable frequency is $f_\mathrm{lower} = \tfrac{1}{T} = \tfrac{1}{t[N] - t[0]}$. +\\ +Additionally, when the sampling of $x(t)$ is equally spaced, the $t[n]$ terms can be written as a sequence, $t[n] - t[0] = n \Delta t = \tfrac{n}{f_s}$, with $f_s$ the sampling frequency. +The highest resolvable frequency, known as the Nyqvist frequency, is limited by this sampling frequency as $f_\mathrm{nyqvist} = \tfrac{f_s}{2}$. +\\ + +% DFT sampling of DTFT / efficient multifrequency FFT +Implementing the above decomposition of $t[n]$, \eqref{eq:fourier:dtft} can be rewritten in terms of multiples $k$ of the sampling frequency, becoming the \acrlong{DFT} +\begin{equation*} + \label{eq:fourier:dft} + \phantom{,} + X(k) = \sum_{n=0}^{N-1} x[n]\, \cdot e^{ -i 2 \pi {\frac{k n}N} } + , +\end{equation*} +with $k = \tfrac{f}{f_s}$. +For integer $0 \leq k < N $, efficient algorithms exist that derive all $X( 0 \leq k < N )$ in $\mathcal{O}( N \log N )$ calculations, a~\acrlong{FFT}, sampling a subset of the frequencies.\Todo{citation?} + +\bigskip + +% Linearity fourier for real/imag +In the previous equations, the resultant quantity $X(f)$ is a complex value. +Since a complex plane wave can be linearly decomposed as +\begin{equation*} + \phantom{,} + \label{eq:complex_wave_decomposition} + \begin{aligned} + e^{-i x} + & + = \cos(x) + i\sin(-x) + %\\ & + = \Re\left(e^{-i x}\right) + i \Im\left( e^{-i x} \right) + , + \end{aligned} +\end{equation*} +the above transforms can be decomposed into explicit real and imaginary parts aswell, +i.e.,~\eqref{eq:fourier:dtft} becomes +\begin{equation} + \phantom{.} + \label{eq:fourier:dtft_decomposed} + \begin{aligned} + X(f) + & + = X_R(f) + i X_I(f) + %\\ & + \equiv \Re(X(f)) + i \Im(X(f)) + \\ & + = \sum_{n=0}^{N-1} \, x[n] \, \cos( 2\pi f t[n] ) + - i \sum_{n=0}^{N-1} \, x[n] \, \sin( 2\pi f t[n] ) + . + \end{aligned} +\end{equation} + +% FT term to phase and magnitude +The normalised amplitude at a given frequency $A(f)$ is calculated from \eqref{eq:fourier:dtft} as +\begin{equation} + \label{eq:complex_magnitude} + \phantom{.} + A(f) \equiv \frac{ 2 \sqrt{ X_R(f)^2 + X_I(f)^2 } }{N} + . +\end{equation} +Likewise, the complex phase at a given frequency $\pTrue(f)$ is obtained by +\begin{equation} + \label{eq:complex_phase} + \phantom{.} + \pTrue(f) \equiv \arctantwo\left( X_I(f), X_R(f) \right) + . +\end{equation} +\\ + +% Recover A\cos(2\pi t[n] f + \phi) using above definitions +Applying \eqref{eq:fourier:dtft_decomposed} to a signal $x(t) = A\cos(2\pi t[n] f + \pTrue)$ with the above definitions obtains +an amplitude $A$ and phase $\pTrue$ at frequency $f$. +When the minus sign in the exponent of \eqref{eq:fourier} is not taken into account, the calculated phase in \eqref{eq:complex_phase} will have an extra minus sign. + +\bigskip +% Static sin/cos terms if f_s, f and N static .. +When calculating the \gls{DTFT} for multiple inputs which share both an equal number of samples $N$ and equal sampling frequencies $f_s$, the $\sin$ and $\cos$ terms in \eqref{eq:fourier:dtft_decomposed} are the same for a single frequency $f$. +Therefore, these can be precomputed ahead of time, reducing the number of calculations to $2N$ multiplications. + +% .. relevance to hardware if static frequency +Thus, for static frequencies in a continuous beacon, the coefficients for evaluating the \gls{DTFT} can be put into the hardware of the detectors, +opening the way to efficiently measuring the phases in realtime.\Todo{figure?} + + + +% Beacon frequency known -> single DTFT run +% Beacon frequency unknown -> either zero-padding FFT or, DTFT grid search +%When the beacon frequency is known, a single \gls{DTFT} needs to be evaluated. + + +% Removing the beacon from the signal trace + +% >>> +% +% >>> +% Signal to noise +\subsubsection{Signal to Noise}% <<< + +% Gaussian noise +The traces will contain noise from various sources, both internal (e.g.~LNA~noise) and external (e.g.~radio~communications) to the detector. +A simple noise model is given by gaussian noise in the time-domain, associated to many independent random noise sources. +Especially important is that this simple noise model will affect the phase measurement depending on the strength of the beacon with respect to the noise level. + +In the following, this aspect is shortly described in terms of two frequency-domain phasors; +the noise phasor written as $\vec{m} = a \, e^{i\pTrue}$ with phase $-\pi < \pTrue \leq \pi$ and amplitude $a \geq 0$, +and the signal phasor written as $\vec{s} = s \, e^{i\pTrue_s}$, but rotated such that its phase $\pTrue_s = 0$. +\Todo{reword; phasor vs plane wave} +Further reading can be found in Ref.~\cite{goodman1985:2.9}. +\\ + +% Phasor concept +\begin{figure} + \label{fig:phasor} + \caption{ + Phasors picture } - \label{fig:sine:snr_histograms} \end{figure} -% Random phasor sum -For gaussian noise, the measurement of the beacon phase $\pTrue$ can be shown to be distributed by the following equation -(see Appendix~\ref{sec:phasor_distributions} or \cite[Chapter 2.9]{goodman1985:2.9} for derivation), -\begin{equation}\label{eq:random_phasor_sum:phase:sine} +\bigskip + +% Noise phasor description +The noise phasor is fully described by the joint probability density function +\begin{equation} + \label{eq:noise:pdf:joint} \phantom{,} - p_\PTrue(\pTrue; s, \sigma) = - \frac{ e^{-\left(\frac{s^2}{2\sigma^2}\right)} }{ 2 \pi } - + - \sqrt{\frac{1}{2\pi}} - \frac{s}{\sigma} - e^{-\left( \frac{s^2}{2\sigma^2}\sin^2{\pTrue} \right)} - \frac{\left( - 1 + \erf{ \frac{s \cos{\pTrue}}{\sqrt{2} \sigma }} - \right)}{2} - \cos{\pTrue} + p_{A\PTrue}(a, \pTrue; \sigma) + = + \frac{a}{s\pi\sigma^2} e^{-\frac{a^2}{2\sigma^2}} , \end{equation} -where $s$ is the amplitude of the beacon, $\sigma$ the noise amplitude and $\erf{z}$ the error function. -\cite{goodman1985:2.9} names this equation ``Constant Phasor plus a Random Phasor Sum''. -\\ -This distribution approaches a gaussian distribution when the beacon amplitude is (much) larger than the noise amplitude. -This can be seen in Figure~\ref{fig:sine:snr_time_resolution} where both distributions are shown for a range of \glspl{SNR}. -There, the phase residuals of the simulated waveforms closely follow the distribution. +for $-\pi < \pTrue \leq \pi$ and $a \geq 0$. \\ -From Figure~\ref{fig:sine:snr_time_resolution} we can conclude that depending on the \gls{SNR}, the timing accuracy of the beacon is below $1\ns$ for our beacon at $51.53\MHz$. -Since the time accuracy is derived from the phase accuracy with -\begin{equation}\label{eq:phase_accuracy_to_time_accuracy} +Integrating \eqref{eq:noise:pdf:joint} over the amplitude $a$, it follows that the phase is uniformly distributed. + +Likewise, the amplitude follows a Rayleigh distribution +\begin{equation} + \label{eq:noise:pdf:amplitude} + \label{eq:pdf:rayleigh} \phantom{,} - \sigma_t = \frac{\sigma_\pTrue}{2\pi \fbeacon} + p_A(a; \sigma) + %= p^{\mathrm{RICE}}_A(a; \nu = 0, \sigma) + = \frac{a}{\sigma^2} e^{-\frac{a^2}{2\sigma^2}} , \end{equation} -slightly lower frequencies could be used instead, but they would require a comparatively stronger signal to resolve to the same degree. -Likewise, higher frequencies are an available method of linearly improving the time accuracy. -\\ - -However, as mentioned before, the period duplicity restricts an arbitrary high frequency to be used for the beacon. -For the $51.53\MHz$ beacon, the next Chapter~\ref{sec:single_sine_sync} shows a method of using an additional signal to counter the period degeneracy of a single sine wave. +for which the mean is $\bar{a} = \sigma \sqrt{\frac{\pi}{2}}$ and the standard~deviation is given by $\sigma_{a} = \sigma \sqrt{ 2 - \tfrac{\pi}{2} }$. \begin{figure} - \includegraphics[width=\textwidth]{beacon/time_res_vs_snr_large.pdf} + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/pdf_noise_phase.pdf} + \caption{ + The phase of the noise is uniformly distributed. + } + \label{fig:noise:pdf:phase} + \end{subfigure} + \hfill + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/pdf_noise_amplitude.pdf} + \caption{ + The amplitude of the noise is Rayleigh distribution \eqref{eq:noise:pdf:amplitude}. + } + \label{fig:noise:pdf:amplitude} + \end{subfigure} \caption{ - Phase accuracy (right y-axis) for a sine beacon as a function of signal to noise ratio for waveforms of $10240$ samples containing a sine wave at $51.53\MHz$ and white noise. - It can be shown that the phase accuracies (right y-axis) follow a special distribution~\eqref{eq:random_phasor_sum:phase:sine} that is well approximated by a gaussian distribution for $\mathrm{\gls{SNR}} \gtrsim 3$. - The time accuracy is converted from the phase accuracy using \eqref{eq:phase_accuracy_to_time_accuracy}. - The green dashed line indicates the $1\ns$ level. - Thus, for a beacon at $51.53\MHz$ and a $\mathrm{\gls{SNR}} \gtrsim 3$, the time accuracy is better than $1\ns$. + Marginal distribution functions of the noise phasor. + Rayleigh and Rice distributions. + \Todo{expand captions} } - \label{fig:sine:snr_time_resolution} + \label{fig:noise:pdf} \end{figure} -% Sine Beacon >>> +\bigskip + +% Random phasor sum + +In this work, the addition of the signal phasor to the noise phasor will be named ``Random Phasor Sum''. +The addition shifts the mean in \eqref{eq:noise:pdf:joint} +from $\vec{a}^2 = a^2 {\left( \cos \pTrue + \sin \pTrue \right)}^2$ +to ${\left(\vec{a} - \vec{s}\right)}^2 = {\left( a \cos \pTrue -s \right)}^2 + {\left(\sin \pTrue \right)}^2$ +, +resulting in a new joint distribution +\begin{equation} + \label{eq:phasor_sum:pdf:joint} + \phantom{.} + p_{A\PTrue}(a, \pTrue; s, \sigma) + = \frac{a}{2\pi\sigma^2} + \exp[ - + \frac{ + {\left( a \cos \pTrue - s \right)}^2 + + {\left( a \sin \pTrue \right)}^2 + }{ + 2 \sigma^2 + } + ] + . +\end{equation} +\\ + +Integrating \eqref{eq:phasor_sum:pdf:joint} over $\pTrue$ one finds +a Rice (or Rician) distribution for the amplitude, +\begin{equation} + \label{eq:phasor_sum:pdf:amplitude} + \label{eq:pdf:rice} + \phantom{,} + p_A(a; s, \sigma) + = \frac{a}{\sigma^2} + \exp[-\frac{a^2 + s^2}{2\sigma^2}] + \; + I_0\left( \frac{a s}{\sigma^2} \right) + , +\end{equation} +where $I_0(z)$ is the modified Bessel function of the first kind with order zero. + +For the Rician distribution, two extreme cases can be highlighted (as can be seen in Figure~\ref{fig:phasor_sum:pdf:amplitude}). +In the case of a weak signal ($s \ll a$), \eqref{eq:phasor_sum:pdf:amplitude} behaves as a Rayleigh distribution~\eqref{eq:noise:pdf:amplitude}. +Meanwhile, it approaches a gaussian distribution around $s$ when a strong signal ($s \gg a$) is presented. + +\begin{equation} + \label{eq:strong_phasor_sum:pdf:amplitude} + p_A(a; \sigma) = \frac{1}{\sqrt{2\pi}} \exp[-\frac{{\left(a - s\right)}^2}{2\sigma^2}] +\end{equation} + +\begin{figure} + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/pdf_phasor_sum_phase.pdf} + \caption{ + The Random Phasor Sum phase distribution \eqref{eq:phasor_sum:pdf:phase}. + } + \label{fig:phasor_sum:pdf:phase} + \end{subfigure} + \hfill + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/pdf_phasor_sum_amplitude.pdf} + \caption{ + The Random Phasor Sum amplitude distribution \eqref{eq:phasor_sum:pdf:amplitude}. + } + \label{fig:phasor_sum:pdf:amplitude} + \end{subfigure} + \caption{ + A signal phasor's amplitude in the presence of noise will follow a Rician distribution. + For strong signals, this approximates a gaussian distribution, while for weak signals, this approaches a Rayleigh distribution. + \Todo{expand captions} + } + \label{fig:phasor_sum:pdf} +\end{figure} + +\bigskip +Like the amplitude distribution \eqref{eq:phasor_sum:pdf:amplitude}, the marginal phase distribution of \eqref{eq:phasor_sum:pdf:joint} results in two extremes cases; +weak signals correspond to the uniform distribution for \eqref{eq:noise:pdf:joint}, while strong signals are well approximated by a gaussian distribution. + +The analytic form takes the following complex expression, +\begin{equation} + \label{eq:phase_pdf:random_phasor_sum} + p_\PTrue(\pTrue; s, \sigma) = + \frac{ e^{-\left(\frac{s^2}{2\sigma^2}\right)} }{ 2 \pi } + + + \sqrt{\frac{1}{2\pi}} + \frac{s}{\sigma} + e^{-\left( \frac{s^2}{2\sigma^2}\sin^2{\pTrue} \right)} + \frac{\left( + 1 + \erf{ \frac{s \cos{\pTrue}}{\sqrt{2} \sigma }} + \right)}{2} + \cos{\pTrue} +\end{equation} +where +\begin{equation} + \label{eq:erf} + \phantom{,} + \erf{\left(z\right)} = \frac{2}{\sqrt{\pi}} \int_0^z \dif{t} e^{-t^2} + , +\end{equation} +is the error function. + +\begin{figure} + \includegraphics[width=0.5\textwidth]{beacon/time_res_vs_snr.pdf} + \caption{ + Measured Time residuals vs Signal to Noise ratio + } + \label{fig:time_res_vs_snr} +\end{figure} + +% Signal to Noise >>> + +% Phase measurement >>> +% +\subsection{Period degeneracy}% <<< +% period multiplicity/degeneracy + +% airshower gives t0 + + + +% Period Degeneracy >>> + +% Continuous Sine Beacon >>> +% >>> + +\bigskip +\chapter{Old work on Sine Beacon}% <<< +\Todo{fully rewrite} +The idea of a sine beacon is semi-analogous to an oscillator in electronic circuits. +A periodic signal is sent out from a transmitter (the oscillator), and captured by an antenna (the chip the oscillator drives). + +In a digital circuit, the oscillator often emits a discrete (square wave) signal (see Figure~\ref{fig:beacon:ttl}). +A tick is then defined as the moment that the signal changes from high to low or vice versa. + +In this scheme, synchronising requires latching on the change very precisely. +As between the ticks, there is no time information in the signal. +\\ + +\todo{Possibly Invert story from short->long to long->short} +Instead of introducing more ticks in the same time, and thus a higher frequency of the oscillator, a smooth continous signal can also be used. +This enables the opportunity to determine the phase of the signal by measuring the signal at some time interval. +This time interval has an upper limit on its size depending on the properties of the signal, such as its frequency, but also on the length of the recording. + + +In Figure~\ref{fig:beacon:sine}, both sampling~1~and~2 can reconstruct the sine wave from the measurements. +Meanwhile, the square wave has some leeway on the precise timing.\todo{reword sentence} +\\ + +\begin{figure}[h] + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/ttl_beacon.pdf} + \caption{ + Discrete (square wave) clocks are commonly found in digital circuits. + } + \label{fig:beacon:ttl} + \end{subfigure} + \hfill + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/sine_beacon.pdf} + \caption{ + A sine wave clock, as will be employed throughout this document. + } + \label{fig:beacon:sine} + \end{subfigure} + + \caption{ + Two different beacon signals with the same frequency. + Both show two samplings with a small offset in time. + Reconstructing the signal is easier to do for the sine wave with the same samplelength and number of samples. + } + \label{fig:beacon:ttl_sine_beacon} + \todo{Add fourier spectra?} +\end{figure} + +%% Second timescale needed + +Instead of driving the antenna, the beacon is meant to synchronise the clock of the antenna with the clock of the transmitter. +With one oscillator, the antenna can work in phase with the transmitter, but the actual synchronization can be off by a multiple of periods. +To be able to determine this offset, a second timescale needs to be introduced in the signal. +\\ + +This slower timescale allows to count the ticks of the quicker signal.\todo{Extend paragraph} + +\begin{figure} + \begin{subfigure}{0.45\textwidth} +% \includegraphics[width=0.5\textwidth]{beacon/sine_beacon_multiple_periods_off.pdf} + \caption{ + Two syntonised beacons. + The actual synchronization is off by a multiple of periods. + } + \label{fig:second_timescale:off} + \end{subfigure} + \hfill + \begin{subfigure}{0.45\textwidth} +% \includegraphics[width=0.5\textwidth]{beacon/sine_beacon_multiple_periods_off.pdf} + \caption{ + Two syntonised beacons, the actual synchronization is off by a multiple of periods. + } + \label{fig:second_timescale:on} + \end{subfigure} + \caption{ + } + \label{fig:second_timescale} + \todo{Fill figure and caption} +\end{figure} + + +\subsection{Beacons in Airshower timing}% <<< +To setup a time synchronising system for airshower measurements, actually only the high frequency part of the beacon must be employed. +The low frequency part, from which the number of oscillations of the high frequency part are counted, is supplied by the very airshower that is measured. + + +% >>> + +\section{Beacon synchronisation}% <<< + +As outlined in Section~\ref{sec:time:beacon}, a beacon can also be employed to synchronise the stations. + + + +\clearpage +% \delta \phase +As mentioned in Section~\ref{sec:time:beacon}, a beacon consisting of a single sine wave allows to syntonise two antennas by measuring the phase difference of the beacon at both antennas $\Delta \phase = \phase_1 - \phase_2$. +This means the local clock difference of the two antennas can be corrected upto an unknown multiple $k$ of its period, with +\begin{equation} + \label{eq:phase_diff_to_time_diff} + \phantom{.} + \Delta t = \Delta t_\phase + kT = \left(\frac{\Delta \phase}{2\pi} + k\right) T + . +\end{equation} +By finding a suitably long timescale signal in addition to the sine wave, the amount of periods $k$ can be determined. +\\ + +\begin{figure} + \centering + \includegraphics[width=\textwidth]{beacon/08_beacon_sync_timing_outline.pdf} + \caption{ + Waveforms of a beacon at two antennas, where the clocks have not been synchronised. + Grey dotted lines indicate periods of the sine wave (orange), + full lines indicate the time of the impulsive signal (blue). + Both are sent out from the same transmitter. + The sine wave allows to resolve a small timing delay ($\Delta t_\phase$), + while the impulsive signal allows to calibrate the amount of cycles ($m$,~$n$) the two clocks are separated. + } + \label{fig:beacon_outline} + \todo{ + Redo figure without xticks and spines, + rename $\Delta t_\phase$, + also remove impuls time diff + } +\end{figure} + +In Figure~\ref{fig:beacon_outline}, both such a signal and a sine wave beacon are shown as received at two desynchronised antennas. +The total time delay $\Delta t$ is indicated by the location of the peak of the slow signal. +Part of this delay can be observed as a phase difference $\Delta \phase$ between the two beacons. + + +% k from coherent sum +\bigskip +The phase difference of the beacon signal obtained in Figure~\ref{fig:beacon_outline} allows to correct small (with respect to the beacon frequency) time delays. +The total time delay may, however, be much larger than one such period. +As shown in \eqref{eq:phase_diff_to_time_diff}, after correcting for the time delay proportional to the phase difference $\Delta t_\phase$, the left-over time delay should be a multiple of the beacon period $kT$. + +\bigskip +When the slower signal is transmitted from the transmitter that sent out the beacon signal, then the number of periods $k$ can be obtained directly from the signal. +If, however, the slow signal is sent from a different transmitter, the different distances incur different time delays. +In a static setup, these distance should be measured to such a degree to have a time delay accuracy of about one period of the beacon signal.\todo{reword sentence} +\\ + +\bigskip +If measuring the distances to the required accuracy is not possible, a different method must be found to obtain the correct number of periods. +The total time delay in \eqref{eq:phase_diff_to_time_diff} contains a continuous term $\Delta t_\phase$ that can be determined from the beacon signal, and a discrete term $k T$ where $k$ is the unknown discrete quantity. +\\ + +Since $k$ is discrete, the best time delay might be determined from the calibration signal by using a coherent sum +\begin{equation} + \label{eq:coherent_sum} + \phantom{,} + %\chi( t; k) = \sum + , +\end{equation} +where .., finding the best time delay at the maximum of the sum. +The time delay obtained from the coherent sum + +\bigskip +When measuring airshowers, the very signal of the airshower can be used as the calibration signal. +This falls into the dynamic setup described above. +However, while in a static setup the value of $k$ can be estimated from the distances, the distances for each airshower will differ. +\\ + + +\subsection{Lifting period degeneracy}% <<< +\begin{figure} + \begin{subfigure}[t]{0.5\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf} + \label{fig:grid_power:no_offset} + \end{subfigure} + \hfill + \begin{subfigure}[t]{0.5\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf} + \label{fig:grid_power:repair_none} + \end{subfigure} + \\ + \begin{subfigure}[b]{0.5\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf} + \label{fig:grid_power:repair_phases} + \end{subfigure} + \hfill + \begin{subfigure}[b]{0.5\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf} + + \label{fig:grid_power:repair_all} + \end{subfigure} + \caption{ + } + \label{fig:grid_power_time_fixes} +\end{figure} + +% >>> + + + +%>>> \end{document} diff --git a/documents/thesis/chapters/colophon.tex b/documents/thesis/chapters/colophon.tex deleted file mode 100644 index b76a609..0000000 --- a/documents/thesis/chapters/colophon.tex +++ /dev/null @@ -1,26 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\vspace*{\fill} -A digital copy of this document can be found at\\ -\url{https://etdeboone.nl/masters-thesis/thesis.pdf}\\[0.2cm] - - -The \LaTeX\ source, including figures, can be found at\\ -\url{https://gitlab.science.ru.nl/mthesis-edeboone/m.internship-documentation}\\ ---- or ---\\ -\url{https://etdeboone.nl/masters-thesis/documentation}\\[0.2cm]. - -Code for generating figures, as well as the beacon synchronising pipeline can be found at\\ -\url{https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction/}\\ ---- or ---\\ -\url{https://etdeboone.nl/masters-thesis/airshower_beacon_simulation}. - -\end{document} diff --git a/documents/thesis/chapters/conclusion.tex b/documents/thesis/chapters/conclusion.tex index 4dcd648..c52096d 100644 --- a/documents/thesis/chapters/conclusion.tex +++ b/documents/thesis/chapters/conclusion.tex @@ -1,4 +1,3 @@ -% vim: fdm=marker fmr=<<<,>>> \documentclass[../thesis.tex]{subfiles} \graphicspath{ @@ -11,39 +10,5 @@ \chapter{Conclusion} \label{sec:conclusion} -%<<< -Using radio antennas to detect \glspl{UHECR} has received much attention recently. -The \acrlong{Auger} is currently being upgraded to \gls{AugerPrime} incorporating radio and scintillation detectors together with the already existing water-Cherenkov and fluorescence detectors. -Other experiments, such as \gls{GRAND}, envision to rely only on radio measurements of an \gls{EAS}. -\\ -% Timing not enough -Time information in such large observatories is typically distributed using \glspl{GNSS}, reaching up to $10\ns$ accuracy under very good conditions. -For analysis using radio interferometry to be competitive, this timing accuracy needs to be improved towards the $1\ns$ mark. -\\ -%>>> -% Beacon introduction %<<< -A viable method to obtain this timing accuracy is to incorporate a beacon transmitter into the array. -This (narrow-band) transmitter sends out a special signal that is picked up by the radio antennas in the array. -With relatively simple techniques, the timing accuracy can be improved to below $1\ns$. -Thus, at a relatively low cost, the (relative) timing of radio arrays can be improved to enable radio interferometry. -\\ -%>>> - -% Passive Beacon %<<< -In some circumstances, an external transmitter can be used as a beacon. -For example, in \gls{Auger}, a public TV broadcaster emits its signal at $f = 62.75\MHz$. -With the source location and the frequency known, time delays can be calculated and this signal can be used to account for timing errors smaller than $T = 1/f \sim 16\ns$. -Unfortunately, with the \gls{GNSS} timing accuracy estimated in the same order of magnitude and the signal being periodic, the synchronisation of the antennas can be off by an integer amount of periods $T$. -\\ -% >>> - -% Combined sine beacon + air shower %<<< -Recording an air shower, in addition to such a narrow-band beacon, might provide a method to determine the correct beacon period. -Radio interferometric analysis of the air shower depends on the coherence of the received signals. -Any synchronicity problems in the radio antennas decrease the coherence and thus the power mapping used to derive properties of the air shower. -With a limited set of periods to test, this power can be maximised while simultaneously inferring the correct beacon period. -\\ -The developed method to synchronise can be directly tested at \gls{Auger}, both with data from \gls{AERA} and the upcoming radio detectors from AugerPrime. -% >>> \end{document} diff --git a/documents/thesis/chapters/grand_characterisation.tex b/documents/thesis/chapters/grand_characterisation.tex index 8ea1162..3c23c23 100644 --- a/documents/thesis/chapters/grand_characterisation.tex +++ b/documents/thesis/chapters/grand_characterisation.tex @@ -1,4 +1,3 @@ -% vim: fdm=marker fmr=<<<,>>> \documentclass[../thesis.tex]{subfiles} \graphicspath{ @@ -8,200 +7,31 @@ } \begin{document} -\chapter{GRAND signal chain characterisation} +\chapter{GRAND characterisation} \label{sec:gnss_accuracy} -% systematic delays important to obtain the best synchronisation -The beacon synchronisation strategy hinges on the ability to measure the beacon signal with sufficient timing accuracy. -In the previous chapters, the overall performance of this strategy has been explored by using simulated waveforms. -\\ -% ADC and filtering setup most important component. -As mentioned in Chapter~\ref{sec:waveform}, the measured waveforms of a true detector will be influenced by characteristics of the antenna, the filter and the \gls{ADC}. -Especially the filter and \gls{ADC} are important components to be characterised to compensate for possible systematic (relative) delays. -This chapter starts an investigation into these systematic delays within \gls{GRAND}'s \gls{DU} V2.0\cite{GRAND:DU2}. -\\ +Trimble ICM 360 -%\section{GRAND DU}% <<< -%\begin{figure} -% \begin{subfigure}{0.47\textwidth} -% \includegraphics[width=\textwidth]{grand/DU_board_encased} -% \end{subfigure} -% \hfill -% \begin{subfigure}{0.47\textwidth} -% \includegraphics[width=\textwidth]{grand/DU_board_nocase} -% \end{subfigure} -% \caption{ -% \gls{GRAND}'s \acrlong{DU} V2.0 inside (\textit{left}) and outside (\textit{right}) its protective encasing. -% } -% \label{fig:grand_du} -%\end{figure} +Wanted to use WR, but did not work out. -% ADC -At the base of every single antenna, a \gls{DU} is mounted. -Its protective encasing has three inputs to which the different polarisations of the antenna are connected. -These inputs are connected to their respective filter chains, leaving a fourth filter chain as spare. -Each filter chain band-passes the signal between $30\MHz$ and $200\MHz$. -Finally, the signals are digitised by a four channel 14-bit \gls{ADC} sampling at $500\MHz$. -%The input voltage ranges from $-900\mV$ to $+900\mV$. -In our setup, the channels are read out after one of two internal ``monitoring'' triggers fire with the ten-second trigger (TD) linked to the 1~\acrlong{PPS} of the \gls{GNSS} chip and the other (MD) a variable randomising trigger. -\\ +Use GRAND DU to do the same, also to do characterisation of hardware. -% timestamp = GPS + local oscillator -%The \gls{DU} timestamps an event using a combination of the 1\gls{PPS} of a Trimble ICM 360 \gls{GNSS} chip and counting the local oscillator running at $500\MHz$. -%At trigger time, the counter value is stored to obtain a timing accuracy of roughly $2\ns$. -%The counter is also used to correct for fluctuating intervals of the 1\gls{PPS} by storing and resetting it at each incoming 1\gls{PPS}. +\section{GRAND Digitizer Unit} -\begin{figure}% <<<< - \centering - \includegraphics[width=0.5\textwidth]{grand/DU/1697110935017.jpeg} - \caption{ - \gls{GRAND}'s \acrlong{DU} V2.0 inside its protective encasing. - } - \label{fig:grand_du} -\end{figure}% >>>> +\section{Characterisation} +\subsection{Filterchain time delay} +(split-cable experiment) -% >>> -%\section{Filterchain Relative Time Delays}% <<< -Both the \gls{ADC} and the filter chains introduce systematic delays. -Since each channel corresponds to a polarisation, it is important that relative systematic delays between the channels can be accounted for. -\\ +per filterchain time delay from phase differences -\begin{figure} - \centering - \includegraphics[width=0.4\textwidth]{grand/setup/channel-delay-setup.pdf} - \caption{ - Relative time delay experiment, a signal generator sends the same signal to two channels of the \gls{DU}. - The extra time delay incurred by the loop in the upper cable can be ignored by interchanging the cabling and doing a second measurement. - } - \label{fig:channel-delay-setup} -\end{figure} -Figure~\ref{fig:channel-delay-setup} illustrates a setup to measure the relative time delays of the filter chain and \gls{ADC}. -Two \gls{DU}-channels receive the same signal from a signal generator where one of the channels takes an extra time delay $\Delta t_\mathrm{cable}$ due to extra cable length. -In this ``forward'' setup, both channels are read out at the same time, and a time delay is derived from the channels' traces. -Afterwards, the cables are interchanged and a second (``backward'') time delay is measured. -\\ -The sum of the ``forward'' and ``backward'' time delays gives twice the relative time delay $\Delta t$ without needing to measure the time delays due to the cable lengths $t_\mathrm{cable}$ separately since -\begin{equation}\label{eq:forward_backward_cabling} - \phantom{.} - \Delta t - = (t_\mathrm{forward} + t_\mathrm{backward})/2 - = ([\Delta t + t_\mathrm{cable}] + [\Delta t - t_\mathrm{cable}])/2 - . -\end{equation}\\ +\subsection{Global Navigation Satellite System} +\label{sec:grand:gnss} +$\sigma_t \sim 20 \ns$ -% setup: signal -We used a signal generator to emit a single sine wave at frequencies from $50\MHz$ to $200\MHz$ at $200\;\mathrm{mVpp}$. -Note that we measured the phases to determine the time delays for each channel. -In Figure~\ref{fig:grand:signal} the time delay between the channels is clearly visible in the measured waveforms as well as in the phase spectrum. -\\ -\begin{figure}% <<< fig:grand:signal - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/waveform_eid1_ch1ch2.pdf} - \label{fig:split-cable:waveform} - \end{subfigure} - \hfill - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/waveform_eid1_ch1ch2_spectrum.pdf} - \label{fig:split-cable:waveform:spectra} - \end{subfigure} - \caption{ - Waveforms of the sine wave measured in the ``forward'' setup and their spectra around the testing frequency of $50\MHz$.. - The sine wave was emitted at $200\;\mathrm{mVpp}$. - } - \label{fig:grand:signal} -\end{figure}% >>> -% Frequencies above 50mhz not true measurement -In our setup, the cable length difference was $3.17-2.01 = 1.06\metre$, resulting in an estimated cable time delay of roughly $5\ns$. -At a frequency of $50\MHz$, the difference between the forward and backward phase differences is thus expected to be approximately half a cycle. -Figures~\ref{fig:grand:phaseshift:measurements} and~\ref{fig:grand:phaseshift} show this is in accordance with the measured delays. -\\ -\begin{figure}% <<< fig:grand:phaseshift:measurements - \centering - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf} - \caption{} - \label{fig:grand:phaseshift:measurements:forward} - \end{subfigure} - \hfill - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf} - \caption{} - \label{fig:grand:phaseshift:measurements:backward} - \end{subfigure} - \caption{ - The measured phase differences between channels 2 and 4 at $50\MHz$ converted to a time delay for the \subref{fig:grand:phaseshift:measurements:forward}~forward and \subref{fig:grand:phaseshift:measurements:backward}~backward setups. - The dashed vertical lines indicate the mean time delay, the errorbar at the bottom indicates the standard deviation of the samples. - Crosses are TD-triggered events, circles are MD-triggered. - The measurements are time-ordered within their trigger type. - } - \label{fig:grand:phaseshift:measurements} -\end{figure} +\subsection{Local Oscillator} +Should be $f_\mathrm{osc} = 500 \MHz$ -\begin{figure}% <<< fig:grand:phaseshift - \centering - \includegraphics[width=0.47\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf} - \caption{ - Histogram of the measured phase differences in Figure~\ref{fig:grand:phaseshift:measurements}. - The relative signal chain time delay for the portrayed means is $0.2\ns$. - } - \label{fig:grand:phaseshift} -\end{figure}% >>> - -\clearpage - -% Conclusion -Figure~\ref{fig:channel-delays} shows the measured total time delays and the resulting signal chain time delays between both channels 1 and 2, and channels 2 and 4. -Apart from two exceptional time delays up to $0.2\ns$, the signal chain time delays are in general below $0.05\ns$. -\\ -Note that the reported signal chain time delays must be taken to be indications due to systematic behaviours (see below). -\\ -Still, even when taking $0.2\ns$ as the upper limit of any relative signal chain time delay, the electric field at the antenna are reconstructable to a sufficient accuracy to use either the pulsed or sine beacon methods (see Figures~\ref{fig:pulse:snr_time_resolution} and~\ref{fig:sine:snr_time_resolution} for reference) to synchronise an array to enable radio interferometry. -\\ - -Note that at higher frequencies the phase differences are phase-wrapped due to contention of the used period and the cable time delay. -Because it is symmetric for both setups, this should not affect the measurement of the signal chain time delay at the considered frequencies. -Nevertheless, the result at these frequencies must be interpreted with some caution. -\\ - -% Discussion -The time delays for both TD- and MD-triggered events in Figure~\ref{fig:grand:phaseshift:measurements} show a systematic behaviour of increasing total time delays for the forward setup. -However, in the backward setup, this is not as noticeable. -\\ -This skewing of the channel time delays in one of the setups is also found at other frequencies (see Figures~\ref{fig:grand:phaseshift:ch1ch2} and~\ref{fig:grand:phaseshift:ch2ch4}), raising questions on the stability of the setup. -Unfortunately, it is primarily visible in the larger datasets which correspond to measurements over larger timescales. -As the number of these large datasets is limited, further investigation with the current datasets is prohibited. -\\ -The skewing might also be an artefact of the short waveforms ($N\sim500\;\mathrm{samples}$) the data acquisition system was able to retrieve at the time of measurement. -Since the data acquisition system is now able to retrieve the maximum size waveforms, this systematic behaviour can be investigated in a further experiment. -\\ - -\begin{figure}% <<<< - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.pdf} - \caption{ - Channels 1,2 - } - \label{fig:channel-delays:1,2} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.pdf} - \caption{ - Channels 2,4 - } - \label{fig:channel-delays:2,4} - \end{subfigure} - \caption{ - Total (\textit{upper}) and signal chain (\textit{lower}) time delays between \subref{fig:channel-delays:1,2} channels 1 and 2, and \subref{fig:channel-delays:2,4} 2 and 4. - The dark grey vertical lines in the upper panes indicate the maximum measurable time delays at each frequency. - Due to systematic effects in the measurements and a low number of samples at certain frequencies, the signal chain time delays depicted here must be taken as indicative. - See text for discussion. - } - \label{fig:channel-delays} -\end{figure}% >>>> -% >>> \end{document} diff --git a/documents/thesis/chapters/grand_characterisation.tex.bak b/documents/thesis/chapters/grand_characterisation.tex.bak deleted file mode 100644 index fcafdb8..0000000 --- a/documents/thesis/chapters/grand_characterisation.tex.bak +++ /dev/null @@ -1,207 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{GRAND signal chain characterisation} -\label{sec:gnss_accuracy} - -% systematic delays important to obtain the best synchronisation -The beacon synchronisation strategy hinges on the ability to measure the beacon signal with sufficient timing accuracy. -In the previous chapters, the overall performance of this strategy has been explored by using simulated waveforms. -\\ -% ADC and filtering setup most important component. -As mentioned in Chapter~\ref{sec:waveform}, the measured waveforms of a true detector will be influenced by characteristics of the antenna, the filter and the \gls{ADC}. -Especially the filter and \gls{ADC} are important components to be characterised to compensate for possible systematic (relative) delays. -This chapter starts an investigation into these systematic delays within \gls{GRAND}'s \gls{DU} V2.0\cite{GRAND:DU2}. -\\ - -%\section{GRAND DU}% <<< -%\begin{figure} -% \begin{subfigure}{0.47\textwidth} -% \includegraphics[width=\textwidth]{grand/DU_board_encased} -% \end{subfigure} -% \hfill -% \begin{subfigure}{0.47\textwidth} -% \includegraphics[width=\textwidth]{grand/DU_board_nocase} -% \end{subfigure} -% \caption{ -% \gls{GRAND}'s \acrlong{DU} V2.0 inside (\textit{left}) and outside (\textit{right}) its protective encasing. -% } -% \label{fig:grand_du} -%\end{figure} - -% ADC -At the base of every single antenna, a \gls{DU} is mounted. -Its protective encasing has three inputs to which the different polarisations of the antenna are connected. -These inputs are connected to their respective filterchains, leaving a fourth filterchain as spare. -Each filterchain bandpasses the signal between $30\MHz$ and $200\MHz$. -Finally, the signals are digitised by a four channel 14-bit \gls{ADC} sampling at $500\MHz$. -%The input voltage ranges from $-900\mV$ to $+900\mV$. -In our setup, the channels are read out after one of two internal ``monitoring'' triggers fire with the ten-second trigger (TD) linked to the 1~\acrlong{PPS} of the \gls{GNSS} chip and the other (MD) a variable randomising trigger. -\\ - -% timestamp = GPS + local oscillator -%The \gls{DU} timestamps an event using a combination of the 1\gls{PPS} of a Trimble ICM 360 \gls{GNSS} chip and counting the local oscillator running at $500\MHz$. -%At trigger time, the counter value is stored to obtain a timing accuracy of roughly $2\ns$. -%The counter is also used to correct for fluctuating intervals of the 1\gls{PPS} by storing and resetting it at each incoming 1\gls{PPS}. - - -\begin{figure}% <<<< - \centering - \includegraphics[width=0.5\textwidth]{grand/DU/1697110935017.jpeg} - \caption{ - \gls{GRAND}'s \acrlong{DU} V2.0 inside its protective encasing. - } - \label{fig:grand_du} -\end{figure}% >>>> - -% >>> -%\section{Filterchain Relative Time Delays}% <<< -Both the \gls{ADC} and the filterchains introduce systematic delays. -Since each channel corresponds to a polarisation, it is important that relative systematic delays between the channels can be accounted for. -\\ - -\begin{figure} - \centering - \includegraphics[width=0.4\textwidth]{grand/setup/channel-delay-setup.pdf} - \caption{ - Relative time delay experiment, a signal generator sends the same signal to two channels of the \gls{DU}. - The extra time delay incurred by the loop in the upper cable can be ignored by interchanging the cabling and doing a second measurement. - } - \label{fig:channel-delay-setup} -\end{figure} -Figure~\ref{fig:channel-delay-setup} illustrates a setup to measure the relative time delays of the filterchain and \gls{ADC}. -Two \gls{DU}-channels receive the same signal from a signal generator where one of the channels takes an extra time delay $\Delta t_\mathrm{cable}$ due to extra cable length. -In this ``forward'' setup, both channels are read out at the same time, and a time delay is derived from the channels' traces. -Afterwards, the cables are interchanged and a second (``backward'') time delay is measured. -\\ -The sum of the ``forward'' and ``backward'' time delays gives twice the relative time delay $\Delta t$ without needing to measure the time delays due to the cable lengths $t_\mathrm{cable}$ separately since -\begin{equation}\label{eq:forward_backward_cabling} - \phantom{.} - \Delta t - = (t_\mathrm{forward} + t_\mathrm{backward})/2 - = ([\Delta t + t_\mathrm{cable}] + [\Delta t - t_\mathrm{cable}])/2 - . -\end{equation}\\ - -% setup: signal -We used a signal generator to emit a single sine wave at frequencies from $50\MHz$ to $200\MHz$ at $200\;\mathrm{mVpp}$. -Note that we measured the phases to determine the time delays for each channel. -In Figure~\ref{fig:grand:signal} the time delay between the channels is clearly visible in the measured waveforms as well as in the phase spectrum. -\\ -\begin{figure}% <<< fig:grand:signal - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/waveform_eid1_ch1ch2.pdf} - \label{fig:split-cable:waveform} - \end{subfigure} - \hfill - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/waveform_eid1_ch1ch2_spectrum.pdf} - \label{fig:split-cable:waveform:spectra} - \end{subfigure} - \caption{ - Waveforms of the sine wave measured in the ``forward'' setup and their spectra around the testing frequency of $50\MHz$.. - The sine wave was emitted at $200\;\mathrm{mVpp}$. - } - \label{fig:grand:signal} -\end{figure}% >>> - -% Frequencies above 50mhz not true measurement -In our setup, the cable length difference was $3.17-2.01 = 1.06\metre$, resulting in an estimated cable time delay of roughly $5\ns$. -At a frequency of $50\MHz$, the difference between the forward and backward phase differences is thus expected to be approximately half a cycle. -Figures~\ref{fig:grand:phaseshift:measurements} and~\ref{fig:grand:phaseshift} show this is in accordance with the measured delays. -\\ - -\begin{figure}% <<< fig:grand:phaseshift:measurements - \centering - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf} - \caption{} - \label{fig:grand:phaseshift:measurements:forward} - \end{subfigure} - \hfill - \begin{subfigure}{0.47\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf} - \caption{} - \label{fig:grand:phaseshift:measurements:backward} - \end{subfigure} - \caption{ - The measured phase differences between channels 2 and 4 at $50\MHz$ converted to a time delay for the \subref{fig:grand:phaseshift:measurements:forward}~forward and \subref{fig:grand:phaseshift:measurements:backward}~backward setups. - The dashed vertical lines indicate the mean time delay, the errorbar at the bottom indicates the standard deviation of the samples. - Crosses are TD-triggered events, circles are MD-triggered. - The measurements are time-ordered within their trigger type. - } - \label{fig:grand:phaseshift:measurements} -\end{figure} - -\begin{figure}% <<< fig:grand:phaseshift - \centering - \includegraphics[width=0.47\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf} - \caption{ - Histogram of the measured phase differences in Figure~\ref{fig:grand:phaseshift:measurements}. - The relative signal chain time delay for the portrayed means is $0.2\ns$. - } - \label{fig:grand:phaseshift} -\end{figure}% >>> - -\clearpage - -% Conclusion -Figure~\ref{fig:channel-delays} shows the measured total time delays and the resulting signal chain time delays between both channels 1 and 2, and channels 2 and 4. -Apart from two exceptional time delays upto $0.2\ns$, the signal chain time delays are in general below $0.05\ns$. -\\ -Note that the reported signal chain time delays must be taken to be indications due to systematic behaviours (see below). -\\ -Still, even when taking $0.2\ns$ as the upper limit of any relative signal chain time delay, the electric field at the antenna are reconstructable to a sufficient accuracy to use either the pulsed or sine beacon methods (see Figures~\ref{fig:pulse:snr_time_resolution} and~\ref{fig:sine:snr_time_resolution} for reference) to synchronise an array to enable radio interferometry. -\\ - -Note that at higher frequencies the phase differences are phase-wrapped due to contention of the used period and the cable time delay. -Because it is symmetric for both setups, this should not affect the measurement of the signal chain time delay at the considered frequencies. -Nevertheless, the result at these frequencies must be interpreted with some caution. -\\ - -% Discussion -The time delays for both TD- and MD-triggered events in Figure~\ref{fig:grand:phaseshift:measurements} show a systematic behaviour of increasing total time delays for the forward setup. -However, in the backward setup, this is not as noticable. -\\ -This skewing of the channel time delays in one of the setups is also found at other frequencies (see Figures~\ref{fig:grand:phaseshift:ch1ch2} and~\ref{fig:grand:phaseshift:ch2ch4}), raising questions on the stability of the setup. -Unfortunately, it is primarily visible in the larger datasets which correspond to measurements over larger timescales. -As the number of these large datasets is limited, further investigation with the current datasets is prohibited. -\\ -The skewing might also be an artifact of the short waveforms ($N\sim500\;\mathrm{samples}$) the data acquisition system was able to retrieve at the time of measurement. -Since the data acquisition system is now able to retrieve the maximum size waveforms, this systematic behaviour can be investigated in a further experiment. -\\ - -\begin{figure}% <<<< - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.pdf} - \caption{ - Channels 1,2 - } - \label{fig:channel-delays:1,2} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.pdf} - \caption{ - Channels 2,4 - } - \label{fig:channel-delays:2,4} - \end{subfigure} - \caption{ - Total (\textit{upper}) and signal chain (\textit{lower}) time delays between \subref{fig:channel-delays:1,2} channels 1 and 2, and \subref{fig:channel-delays:2,4} 2 and 4. - The dark grey vertical lines in the upper panes indicate the maximum measurable time delays at each frequency. - Due to systematic effects in the measurements and a low number of samples at certain frequencies, the signal chain time delays depicted here must be taken as indicative. - See text for discussion. - } - \label{fig:channel-delays} -\end{figure}% >>>> -% >>> -\end{document} diff --git a/documents/thesis/chapters/introduction.tex b/documents/thesis/chapters/introduction.tex index f1827f7..f4d8d80 100644 --- a/documents/thesis/chapters/introduction.tex +++ b/documents/thesis/chapters/introduction.tex @@ -1,4 +1,3 @@ -% vim: fdm=marker fmr=<<<,>>> \documentclass[../thesis.tex]{subfiles} \graphicspath{ @@ -8,181 +7,90 @@ } \begin{document} -\chapter{An Introduction to Cosmic Rays and Extensive Air Showers} +\chapter{Introduction} \label{sec:introduction} -%\section{Cosmic Particles}%<<<<<< -%<<< -% Energy and flux -The Earth is bombarded with a variety of energetic, extra-terrestrial particles. -The energies of these particles extend over many orders of magnitude (see Figure~\ref{fig:cr_flux}). -The flux of these particles decreases exponentially with increasing energy. -For very high energies, above $10^{6}\GeV$, the flux approaches one particle per~square~meter per~year, further decreasing to a single particle per~square~kilometer per~year for Ultra High Energies (UHE) at $10^{10}\GeV$. + + +\section{Cosmic Rays} +\label{sec:crs} + +\subsection{Airshowers} +\label{sec:airshowers} + +\subsection{Detectors} +\label{sec:detectors} +Standalone devices, +\gls*{PA}, +\gls*{GRAND} + +\section{Time Synchronisation} +\label{sec:timesynchro} +The main method of synchronising multiple stations is by employing a \gls{GNSS}. +This system should deliver timing with an accuracy in the order of $10\ns$ \cite{} (see Section~\ref{sec:grand:gnss}). \\ -\begin{figure}%<<< fig:cr_flux +Need reference system with better accuracy to constrain current mechanism (Figure~\ref{fig:reference-clock}). + +\begin{figure} \centering - \includegraphics[width=0.9\textwidth]{astroparticle/The_CR_spectrum_2023.pdf} + \includegraphics[width=0.5\textwidth]{clocks/reference-clock.pdf} \caption{ - From \protect \cite{The_CR_spectrum}. - The diffuse cosmic ray spectrum (upper line) as measured by various experiments. - The intensity and fluxes can generally be described by rapidly decreasing power laws. - The grey shading indicates the order of magnitude of the particle flux, such that from the ankle onwards ($E>10^9\GeV$) the flux reaches $1$~particle per~square~kilometer per~year. + Using a reference clock to compare two other clocks. } - \label{fig:cr_flux} -\end{figure}%>>> - -% CR: magnetic field -At these high energies, the incoming particles are primarily cosmic rays\footnote{These are therefore known as \glspl{UHECR}.}, atomic nuclei typically ranging from protons ($Z=1$) up to iron ($Z=26$). -Because these are charged, the various magnetic fields they pass through will deflect and randomise their trajectories. -Of course, this effect is dependent on the strength and size of the magnetic field and the speed of the particle. -It is therefore only at the very highest energies that the direction of an initial particle might be used to (conservatively) infer the direction of its origin. -\\ - -% CR: galaxy / extra-galactic -The same argument (but in reverse) can be used to explain the steeper slope from the ``knee'' ($10^{6}\GeV$) onwards in Figure~\ref{fig:cr_flux}. -The acceleration of cosmic rays equally requires strong and sizeable magnetic fields. -Size constraints on the Milky~Way lead to a maximum energy for which a cosmic ray can still be contained in our galaxy. -It is thus at these energies that we can distinguish between galactic and extra-galactic origins. -\\ - -% Photons and Neutrinos -Other particles at these energies include photons and neutrinos, which are not charged. -Therefore, these particle types do not suffer from magnetic deflections and have the potential to reveal their source regions. -Unfortunately, aside from both being much less frequent, photons can be absorbed and created by multiple mechanisms, while neutrinos are notoriously hard to detect due to their weak interaction. -%\Todo{ -% $\gamma + \nu$ production by CR, -% source / targets -%} -\\ - -%>>> -%\subsection{Air Showers}%<<< -When a cosmic ray with an energy above $10^{3}\GeV$ comes into contact with the atmosphere, secondary particles are generated, forming an \gls{EAS}. -This air shower consists of a cascade of interactions producing more particles that subsequently undergo further interactions. -Thus, the number of particles rapidly increases further down the air shower. -This happens until the mean energy per particle is sufficiently lowered from whereon these particles are absorbed in the atmosphere. -\\ - -Figure~\ref{fig:airshower:depth} shows the number of particles as a function of atmospheric depth where $0\;\mathrm{g/cm^2}$ corresponds with the top of the atmosphere. -The atmospheric depth at which this number of particles reaches its maximum is called $\Xmax$. -\pagebreak - -In Figure~\ref{fig:airshower:depth}, $\Xmax$ is different for the air showers generated by a photon, a proton or an iron nucleus. -Typically, heavy nuclei have their first interaction higher up in the atmosphere than protons, with photons penetrating the atmosphere even further. -Therefore, accurate measurements of $\Xmax$ allow to statistically discriminate between photons, protons and iron nuclei. -\\ - -\begin{figure}%<<< airshower:depth - \centering - \vspace*{-10mm} - \includegraphics[width=0.5\textwidth]{airshower/shower_development_depth_iron_proton_photon.pdf} - \caption{ - From H. Schoorlemmer. - Shower development as a function of atmospheric depth for an energy of $10^{19}\eV$. - Typically, iron- and proton-induced air showers have a difference in $\langle \Xmax \rangle$ of $100\;\mathrm{g/cm^2}$~\cite{Deligny:2023yms}. - For air showers from photons this is even further down the atmosphere. - They are, however, much more rare than cosmic rays. + \label{fig:reference-clock} + \todo{ + redo figure with less margins, + remove spines, + rotate labels } - \label{fig:airshower:depth} - \vspace*{-5mm} -\end{figure}%>>> +\end{figure} -The initial particle type also influences the particle content of an air shower. -Depending on the available interaction channels, we distinguish three components in air showers: the hadronic, electromagnetic and muonic components. -Each component shows particular development and can be related to different observables of the air shower. -\\ -For example, detecting a large hadronic component means the initial particle has access to hadronic interactions (creating hadrons such as pions, kaons, etc.) which is a typical sign of a cosmic ray. -In contrast, for an initial photon, which cannot interact hadronicly, the energy will be dumped into the electromagnetic part of the air shower, mainly producing electrons, positrons and photons. + +\section{Interferometry} +\label{sec:interferometry} +Rough outline of Interferometry? \\ -Finally, any charged pions created in the air shower will decay into muons while still in the atmosphere, thus comprising the muonic component. -The lifetime, and ease of penetration of relativistic muons allow them to propagate to the Earth's surface, even if other particles have decayed or have been absorbed in the atmosphere. -These are therefore prime candidates for air shower detectors on the Earth's surface. -\\ +Requires $\sigma_t \lesssim 1\ns$ \cite{Schoorlemmer:2020low} -% Radio measurements -Processes in an air showers also generate radiation that can be picked up as coherent radio signals. -%% Geo Synchro -Due to the magnetic field of the Earth, the electrons in the air shower generate radiation. -Termed geomagnetic emission in Figure~\ref{fig:airshower:polarisation}, this has a polarisation that is dependent on the magnetic field vector ($\vec{B}$) and the air shower velocity ($\vec{v}$). -\\ -%% Askaryan / Charge excess -An additional mechanism emitting radiation was theorised by Askaryan\cite{Askaryan:1961pfb}. -Due to the large inertia of the positively charged ions with respect to their light, negatively charged electrons, a negative charge excess is created. -In turn, this generates radiation that is polarised radially towards the shower axis (see Figure~\ref{fig:airshower:polarisation}). -\\ +\begin{figure} + \includegraphics[width=0.5\textwidth]{radio_interferometry/Schematic_RIT_extracted.png} + \caption{From H. Schoorlemmer} +\end{figure} -%% Cherenkov ring -Due to charged particles moving relativistically through the refractive atmosphere, the produced radiation is concentrated on a cone-like structure. -On the surface, this creates a ring called the Cherenkov-ring. -On this ring, a peculiar inversion happens in the time-domain of the air shower signals. -Outside the ring, radiation from the top of the air shower arrives earlier than radiation from the end of the air shower, whereas this is reversed inside the ring. -Consequently, the radiation received at the Cherenkov-ring is maximally coherent, being concentrated in a small time-window. -It is therefore crucial for radio detection to obtain measurements in this region. -\\ -\begin{figure}%<<< airshower:polarisation - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_geomagnetic.png}% - \caption{ - Geomagnetic emission - } - \label{fig:airshower:polarisation:geomagnetic} +\begin{equation} + \label{eq:propagation_delay} + \Delta_i = \frac{ \left|{ \vec{x} - \vec{a_i} }\right| }{c} n_{eff} +\end{equation} + + +\begin{equation} + \label{eq:interferometric_sum} + S(\vec{x}, t) = \sum_i S_i(t + \Delta_i(\vec{x})) +\end{equation} + +\begin{equation} + \label{eq:coherence_condition} + \Delta t \leq \frac{1}{f} +\end{equation} + +\begin{figure} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap_bad.png} + \label{fig:trace_overlap:bad} \end{subfigure} \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_askaryan.png}% - \caption{ - Askaryan or charge-excess emission - } - \label{fig:airshower:polarisation:askaryan} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap_medium.png} + \label{fig:trace_overlap:medium} \end{subfigure} - \caption{ - From \protect \cite{Schoorlemmer:2012xpa, Huege:2017bqv} - The Radio Emission mechanisms and the resulting polarisations of the radio signal: \subref{fig:airshower:polarisation:geomagnetic} geomagnetic and \subref{fig:airshower:polarisation:askaryan} charge-excess. - See text for explanation. - } - \label{fig:airshower:polarisation} - \vspace{-2mm} -\end{figure}%>>>>>> -%>>>>>> - -%\subsection{Experiments}%<<< -As mentioned, the flux at the very highest energy is in the order of one particle per square kilometer per century (see Figure~\ref{fig:cr_flux}). -Observatories therefore have to span huge areas to gather decent statistics at these highest energies on a practical timescale. -In recent and upcoming experiments, such as the~\gls{Auger}\cite{Deligny:2023yms} and the~\gls{GRAND}\cite{GRAND:2018iaj}, the approach is typically to instrument a large area with a (sparse) grid of detectors to detect the generated air shower. -With distances up to $1.5\;\mathrm{km}$ (\gls{Auger}), the detectors therefore have to operate in a self-sufficient manner with only wireless communication channels and timing provided by \gls{GNSS}. -\\ - -In the last two decades, with the advent of advanced electronics, the detection using radio antennas has received significant attention. -Analysing air showers using radio interferometry requires a time synchronisation of the detectors to an accuracy in the order of $1\ns$\cite{Schoorlemmer:2020low} (see Chapter~\ref{sec:interferometry} for further details). -Unfortunately, this timing accuracy is not continuously achieved by \glspl{GNSS}, if at all. -For example, in the~\gls{AERA}, this was found to range up to multiple tens of nanoseconds over the course of a single day\cite{PierreAuger:2015aqe}. -\\ - -\pagebreak[1] - -% Structure summary -This thesis investigates a relatively straightforward method (and its limits) to improve the timing accuracy of air shower radio detectors -by using an additional radio signal called a beacon. -It is organised as follows. -\\ - -First, an introduction to radio interferometry is given in Chapter~\ref{sec:interferometry}. -This will be used later on and gives an insight into the timing accuracy requirements. -\\ -Chapter~\ref{sec:waveform} reviews some typical techniques to analyse waveforms and to obtain timing information from them. -\\ - -In Chapter~\ref{sec:disciplining}, the concept of a beacon transmitter is introduced to synchronise an array of radio antennas. -It demonstrates the achievable timing accuracy for a sine and pulse beacon using the techniques described in the preceding chapter. -\\ - - -A degeneracy in the synchronisation is encountered when the timing accuracy of the \gls{GNSS} is in the order of the periodicity of a continuous beacon. -Chapter~\ref{sec:single_sine_sync} establishes a method using a single sine wave beacon while using the radio interferometric approach to observe an air shower and correct for this effect. -\\ - -Finally, Chapter~\ref{sec:gnss_accuracy} investigates some possible limitations of the current hardware of \gls{GRAND} and its ability to record and reconstruct a beacon signal. + \hfill + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap_best.png} + \label{fig:trace_overlap:best} + \end{subfigure} + \caption{Trace overlap due to wrong positions} + \label{fig:trace_overlap} +\end{figure} \end{document} diff --git a/documents/thesis/chapters/introduction.tex.bak b/documents/thesis/chapters/introduction.tex.bak deleted file mode 100644 index 4dc412f..0000000 --- a/documents/thesis/chapters/introduction.tex.bak +++ /dev/null @@ -1,188 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{An Introduction to Cosmic Rays and Extensive Air Showers} -\label{sec:introduction} -%\section{Cosmic Particles}%<<<<<< -%<<< -% Energy and flux -The Earth is bombarded with a variety of energetic, extra-terrestrial particles. -The energies of these particles extend over many orders of magnitude (see Figure~\ref{fig:cr_flux}). -The flux of these particles decreases exponentially with increasing energy. -For very high energies, above $10^{6}\GeV$, the flux approaches one particle per~square~meter per~year, further decreasing to a single particle per~square~kilometer per~year for Ultra High Energies (UHE) at $10^{10}\GeV$. -\\ - -\begin{figure}%<<< fig:cr_flux - \centering - \includegraphics[width=0.9\textwidth]{astroparticle/The_CR_spectrum_2023.pdf} - \caption{ - From \protect \cite{The_CR_spectrum}. - The diffuse cosmic ray spectrum (upper line) as measured by various experiments. - The intensity and fluxes can generally be described by rapidly decreasing power laws. - The grey shading indicates the order of magnitude of the particle flux, such that from the ankle on wards ($E>10^9\GeV$) the flux reaches $1$~particle per~square~kilometer per~year. - } - \label{fig:cr_flux} -\end{figure}%>>> - -% CR: magnetic field -At these high energies, the incoming particles are primarily cosmic rays\footnote{These are therefore known as \glspl{UHECR}.}, atomic nuclei typically ranging from protons ($Z=1$) up to iron ($Z=26$). -Because these are charged, the various magnetic fields they pass through will deflect and randomise their trajectories. -Of course, this effect is dependent on the strength and size of the magnetic field and the speed of the particle. -It is therefore only at the very highest energies that the direction of an initial particle might be used to (conservatively) infer the direction of its origin. -\\ - -% CR: galaxy / extra-galactic -The same argument (but in reverse) can be used to explain the steeper slope from the ``knee'' ($10^{6}\GeV$) onwards in Figure~\ref{fig:cr_flux}. -The acceleration of cosmic rays equally requires strong and sizable magnetic fields. -Size constraints on the Milky~Way lead to a maximum energy for which a cosmic ray can still be contained in our galaxy. -It is thus at these energies that we can distinguish between galactic and extra-galactic origins. -\\ - -% Photons and Neutrinos -Other particles at these energies include photons and neutrinos, which are not charged. -Therefore, these particle types do not suffer from magnetic deflections and have the potential to reveal their source regions. -Unfortunately, aside from both being much less frequent, photons can be absorbed and created by multiple mechanisms, while neutrinos are notoriously hard to detect due to their weak interaction. -%\Todo{ -% $\gamma + \nu$ production by CR, -% source / targets -%} -\\ - -%>>> -%\subsection{Air Showers}%<<< -When a cosmic ray with an energy above $10^{3}\GeV$ comes into contact with the atmosphere, secondary particles are generated, forming an \gls{EAS}. -This air shower consists of a cascade of interactions producing more particles that subsequently undergo further interactions. -Thus, the number of particles rapidly increases further down the air shower. -This happens until the mean energy per particle is sufficiently lowered from whereon these particles are absorbed in the atmosphere. -\\ - -Figure~\ref{fig:airshower:depth} shows the number of particles as a function of atmospheric depth where $0\;\mathrm{g/cm^2}$ corresponds with the top of the atmosphere. -The atmospheric depth at which this number of particles reaches its maximum is called $\Xmax$. -\pagebreak - -In Figure~\ref{fig:airshower:depth}, $\Xmax$ is different for the airshowers generated by a photon, a proton or an iron nucleus. -Typically, heavy nuclei have their first interaction higher up in the atmosphere than protons, with photons penetrating the atmosphere even further. -Therefore, accurate measurements of $\Xmax$ allow to statistically discriminate between photons, protons and iron nuclei. -\\ - -\begin{figure}%<<< airshower:depth - \centering - \vspace*{-10mm} - \includegraphics[width=0.5\textwidth]{airshower/shower_development_depth_iron_proton_photon.pdf} - \caption{ - From H. Schoorlemmer. - Shower development as a function of atmospheric depth for an energy of $10^{19}\eV$. - Typically, iron- and proton-induced air showers have a difference in $\langle \Xmax \rangle$ of $100\;\mathrm{g/cm^2}$~\cite{Deligny:2023yms}. - For air showers from photons this is even further down the atmosphere. - They are, however, much more rare than cosmic rays. - } - \label{fig:airshower:depth} - \vspace*{-5mm} -\end{figure}%>>> - -The initial particle type also influences the particle content of an air shower. -Depending on the available interaction channels, we distinguish three components in air showers: the hadronic, electromagnetic and muonic components. -Each component shows particular development and can be related to different observables of the air shower. -\\ -For example, detecting a large hadronic component means the initial particle has access to hadronic interactions (creating hadrons such as pions, kaons, etc.) which is a typical sign of a cosmic ray. -In contrast, for an initial photon, which cannot interact hadronicly, the energy will be dumped into the electromagnetic part of the air shower, mainly producing electrons, positrons and photons. -\\ - -Finally, any charged pions created in the air shower will decay into muons while still in the atmosphere, thus comprising the muonic component. -The lifetime, and ease of penetration of relativistic muons allow them to propagate to the Earth's surface, even if other particles have decayed or have been absorbed in the atmosphere. -These are therefore prime candidates for air shower detectors on the Earth's surface. -\\ - -% Radio measurements -Processes in an air showers also generate radiation that can be picked up as coherent radio signals. -%% Geo Synchro -Due to the magnetic field of the Earth, the electrons in the air shower generate radiation. -Termed geomagnetic emission in Figure~\ref{fig:airshower:polarisation}, this has a polarisation that is dependent on the magnetic field vector ($\vec{B}$) and the air shower velocity ($\vec{v}$). -\\ -%% Askaryan / Charge excess -An additional mechanism emitting radiation was theorised by Askaryan\cite{Askaryan:1961pfb}. -Due to the large inertia of the positively charged ions with respect to their light, negatively charged electrons, a negative charge excess is created. -In turn, this generates radiation that is polarised radially towards the shower axis (see Figure~\ref{fig:airshower:polarisation}). -\\ - -%% Cherenkov ring -Due to charged particles moving relativistically through the refractive atmosphere, the produced radiation is concentrated on a cone-like structure. -On the surface, this creates a ring called the Cherenkov-ring. -On this ring, a peculiar inversion happens in the time-domain of the air shower signals. -Outside the ring, radiation from the top of the air shower arrives earlier than radiation from the end of the air shower, whereas this is reversed inside the ring. -Consequently, the radiation received at the Cherenkov-ring is maximally coherent, being concentrated in a small time-window. -It is therefore crucial for radio detection to obtain measurements in this region. -\\ - -\begin{figure}%<<< airshower:polarisation - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_geomagnetic.png}% - \caption{ - Geomagnetic emission - } - \label{fig:airshower:polarisation:geomagnetic} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_askaryan.png}% - \caption{ - Askaryan or charge-excess emission - } - \label{fig:airshower:polarisation:askaryan} - \end{subfigure} - \caption{ - From \protect \cite{Schoorlemmer:2012xpa, Huege:2017bqv} - The Radio Emission mechanisms and the resulting polarisations of the radio signal: \subref{fig:airshower:polarisation:geomagnetic} geomagnetic and \subref{fig:airshower:polarisation:askaryan} charge-excess. - See text for explanation. - } - \label{fig:airshower:polarisation} - \vspace{-2mm} -\end{figure}%>>>>>> -%>>>>>> - -%\subsection{Experiments}%<<< -As mentioned, the flux at the very highest energy is in the order of one particle per square kilometer per century (see Figure~\ref{fig:cr_flux}). -Observatories therefore have to span huge areas to gather decent statistics at these highest energies on a practical timescale. -In recent and upcoming experiments, such as the~\gls{Auger}\cite{Deligny:2023yms} and the~\gls{GRAND}\cite{GRAND:2018iaj}, the approach is typically to instrument a large area with a (sparse) grid of detectors to detect the generated air shower. -With distances up to $1.5\;\mathrm{km}$ (\gls{Auger}), the detectors therefore have to operate in a self-sufficient manner with only wireless communication channels and timing provided by \gls{GNSS}. -\\ - -In the last two decades, with the advent of advanced electronics, the detection using radio antennas has received significant attention. -Analysing air showers using radio interferometry requires a time synchronisation of the detectors to an accuracy in the order of $1\ns$\cite{Schoorlemmer:2020low} (see Chapter~\ref{sec:interferometry} for further details). -Unfortunately, this timing accuracy is not continuously achieved by \glspl{GNSS}, if at all. -For example, in the~\gls{AERA}, this was found to range up to multiple tens of nanoseconds over the course of a single day\cite{PierreAuger:2015aqe}. -\\ - -\pagebreak[1] - -% Structure summary -This thesis investigates a relatively straightforward method (and its limits) to improve the timing accuracy of air shower radio detectors -by using an additional radio signal called a beacon. -It is organised as follows. -\\ - -First, an introduction to radio interferometry is given in Chapter~\ref{sec:interferometry}. -This will be used later on and gives an insight into the timing accuracy requirements. -\\ -Chapter~\ref{sec:waveform} reviews some typical techniques to analyse waveforms and to obtain timing information from them. -\\ - -In Chapter~\ref{sec:disciplining}, the concept of a beacon transmitter is introduced to synchronise an array of radio antennas. -It demonstrates the achievable timing accuracy for a sine and pulse beacon using the techniques described in the preceding chapter. -\\ - - -A degeneracy in the synchronisation is encountered when the timing accuracy of the \gls{GNSS} is in the order of the periodicity of a continuous beacon. -Chapter~\ref{sec:single_sine_sync} establishes a method using a single sine wave beacon while using the radio interferometric approach to observe an air shower and correct for this effect. -\\ - -Finally, Chapter~\ref{sec:gnss_accuracy} investigates some possible limitations of the current hardware of \gls{GRAND} and its ability to record and reconstruct a beacon signal. -\end{document} diff --git a/documents/thesis/chapters/radio_interferometry.tex b/documents/thesis/chapters/radio_interferometry.tex deleted file mode 100644 index 575fe68..0000000 --- a/documents/thesis/chapters/radio_interferometry.tex +++ /dev/null @@ -1,167 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - - -%%%%% -%%%%% -%%%%% - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{Air Shower Radio Interferometry} -\label{sec:interferometry} -The radio signals emitted by an \gls{EAS} (see Chapter~\ref{sec:introduction}) can be recorded by radio antennas. -For suitable frequencies, an array of radio antennas can be used as an interferometer. -Therefore, air showers can be analysed using radio interferometry. -Note that since the radio waves are mainly caused by processes involving electrons, any derived properties are tied to the electromagnetic component of the air shower. -\\ - -In Reference~\cite{Schoorlemmer:2020low}, a technique was developed to obtain properties of an air shower using radio interferometry.% -\footnote{ - Available as a python package at \url{https://gitlab.com/harmscho/asira}. -} -It exploits the coherent emissions in the air shower by mapping the power. -Such a power mapping (of a simulated air shower) is shown in Figure~\ref{fig:radio_air_shower}. -It reveals the air shower in one vertical and three horizontal slices. -Analysing the power mapping, we can then infer properties of the air shower such as the shower axis and $\Xmax$. -\\ - -The accuracy of the technique is primarily dependent on the timing accuracy of the detectors. -In Figure~\ref{fig:xmax_synchronise}, the estimated atmospheric depth resolution as a function of detector synchronisation is shown as simulated for different inclinations of the air shower. -For detector synchronisations under $2\ns$, the atmospheric depth resolution is competitive with techniques from fluorescence detectors ($\sigma(\Xmax) ~ 25\,\mathrm{g/cm^2}$ at \gls{Auger} \cite{Deligny:2023yms}). -With a difference in $\langle \Xmax \rangle$ of $\sim 100\,\mathrm{g/cm^2}$ between iron and proton initiated air showers, this depth of shower maximum resolution allows to study the mass composition of cosmic rays. -However, for worse synchronisations, the $\Xmax$ resolution for interferometry degrades linearly. -\\ - -An advantage of radio antennas with respect to fluorescence detectors is the increased duty-cycle. -Fluorescence detectors require clear, moonless nights, resulting in a duty-cycle of about $10\%$ whereas radio detectors have a near permanent duty-cycle. -\\ - -\begin{figure} - \centering - \begin{minipage}[t]{0.47\textwidth} - \centering - \includegraphics[width=\textwidth]{2006.10348/fig01.no_title}% - \captionof{figure}{ - From \protect \cite{Schoorlemmer:2020low}. - Radio interferometric power analysis of a simulated air shower. - \textit{a)} shows the normalised power of $S(\vec{x})$ mapped onto a vertical planer, - while \textit{b)}, \textit{c)} and \textit{d)} show the horizontal slices on different heights. - On \textit{b)}, \textit{c)} and \textit{d)}, the orange and blue dot indicate the true shower axis and the maximum power respectively. - } - \label{fig:radio_air_shower} - \end{minipage} - \hfill - \begin{minipage}[t]{0.47\textwidth} - \centering - \includegraphics[width=\textwidth]{2006.10348/fig03_b}% - \captionof{figure}{ - From \protect \cite{Schoorlemmer:2020low}. - $\Xmax$ resolution as a function of detector-to-detector synchronisation. - Note that this figure shows a first-order effect with values particular to the antenna density of the simulated array. - } - \label{fig:xmax_synchronise} - \end{minipage} -\end{figure} - -\section{Radio Interferometry} -% interference: (de)coherence -Radio interferometry exploits the coherence of wave phenomena. -\\ -In a radio array, each radio antenna records its ambient electric field. -A simple interferometer can be achieved by summing the recorded waveforms $S_i$ with appropriate time delays $\Delta_i(\vec{x})$ to compute the coherency of a waveform at $\vec{x}$, -\begin{equation}\label{eq:interferometric_sum}%<<< - \phantom{.} - S(\vec{x}, t) = \sum_i S_i(t + \Delta_i(\vec{x})) - . -\end{equation}%>>> - -% time delays: general -The time delays $\Delta_i(\vec{x})$ are dependent on the finite speed of the radio waves. -Being an electromagnetic wave, the instantaneous velocity $v$ depends solely on the refractive~index~$n$ of the medium as $v = \frac{c}{n}$. -In general, the refractive index of air is dependent on factors such as the pressure and temperature of the air the signal is passing through, and the frequencies of the signal. -\\ -The time delay due to propagation can be written as -\begin{equation}\label{eq:propagation_delay}%<<< - \phantom{,} - \Delta_i(\vec{x}) = \frac{ \left|{ \vec{x} - \vec{a_i} }\right| }{c} n_\mathrm{eff} - , -\end{equation}%>>> -where $n_\mathrm{eff}$ is the effective refractive index over the trajectory of the signal. -\\ -% time delays: particular per antenna -Note that unlike in astronomical interferometry, the source cannot be assumed at infinity, instead it is close-by (see Figure~\ref{fig:rit_schematic}). -Therefore the time delays for each test location $\vec{x}$ have to be computed separately. -\\ - -% Features in S -Features in the summed waveform $S(\vec{x})$ are enhanced according to the coherence of that feature in the recorded waveforms with respect to the time delays. -\\ -Figures~\ref{fig:trace_overlap:best} and~\ref{fig:trace_overlap:bad} show examples of this effect for the same recorded waveforms. -At the true source location, the recorded waveforms align and sum coherently to result in a summed waveform with enhanced features and amplitudes. -Meanwhile, at a far away location, the waveforms sum incoherently resulting in a summed waveform with low amplitudes and without clear features. -\\ -% Noise suppression -An additional effect of interferometry is the suppression of noise particular to individual antennas as this adds up incoherently. -The signal in the summed waveform grows linearly with the number of detectors, while the incoherent noise in that same waveform scales with the square root of the number of detectors. -\\ - -\begin{figure}% fig:trace_overlap %<<< - \centering - \begin{minipage}[b][9cm][t]{0.47\textwidth} - \begin{subfigure}{\textwidth} - \includegraphics[height=8cm, width=\textwidth]{radio_interferometry/rit_schematic_far.pdf}% - \caption{} - \label{fig:rit_schematic} - \end{subfigure} - \end{minipage}\hfill% - \begin{minipage}[b][9cm][t]{.47\textwidth} - \vskip 1cm - \begin{subfigure}{\textwidth} - \includegraphics[height=2.5cm, width=\textwidth]{radio_interferometry/trace_overlap_best.png} - \vskip 0.3cm - \caption{} - \label{fig:trace_overlap:best} - \end{subfigure} - \vskip 0.7cm - \begin{subfigure}{\textwidth} - \includegraphics[height=2.5cm, width=\textwidth]{radio_interferometry/trace_overlap_bad.png} - \vskip 0.3cm - \caption{} - \label{fig:trace_overlap:bad} - \end{subfigure} - \end{minipage} - \caption{ - Schematic of radio interferometry \subref{fig:rit_schematic} - and the overlap between the recorded waveforms at the source location~$S_0$~\subref{fig:trace_overlap:best} and a far away location~\subref{fig:trace_overlap:bad}. - $\Delta_i$ corresponds to the time delay per antenna from \eqref{eq:propagation_delay}. - } - %\hfill - %\begin{subfigure}[t]{0.3\textwidth} - % \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap_medium.png} - % \label{fig:trace_overlap:medium} - %\end{subfigure} - %\hfill - %\begin{subfigure}[t]{0.3\textwidth} - % \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap_best.png} - % \label{fig:trace_overlap:best} - %\end{subfigure} - %\label{fig:trace_overlap} -\end{figure}% >>> - - -% Spatial mapping of power -In the technique from \cite{Schoorlemmer:2020low}, the summed waveform $S(\vec{x})$ is computed for multiple locations. -For each location, the power in $S(\vec{x})$ is determined to create a power distribution. -%\\ -An example of this power distribution of $S(\vec{x})$ is shown in Figure~\ref{fig:radio_air_shower}. -\\ -The region of high power identifies strong coherent signals related to the air shower. -By mapping this region, the shower axis and shower core can be resolved. -Later, with the shower axis identified, the power along the axis is used to compute \Xmax. -\end{document} diff --git a/documents/thesis/chapters/radio_measurement.tex b/documents/thesis/chapters/radio_measurement.tex deleted file mode 100644 index cd06dad..0000000 --- a/documents/thesis/chapters/radio_measurement.tex +++ /dev/null @@ -1,275 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{Waveform Analysis Techniques} -\label{sec:waveform} -%Electric fields, -%Antenna Polarizations, -%Frequency Bandwidth, - -Radio antennas are sensitive to changes in their surrounding electric fields. -The polarisation of the electric field that a single antenna can record is dependent on the geometry of this antenna. -Therefore, in experiments such as \gls{Auger} or \gls{GRAND}, multiple antennas are incorporated into a single unit to obtain complementary polarisation recordings. -Additionally, the shape and size of antennas affect how well the antenna responds to certain frequency ranges, resulting in different designs meeting different criteria. -\\ - -%Waveform time series data -%Sampling, -%Waveform + Time vector, -In each radio detector, the antenna presents its signals to an \gls{ADC} as fluctuating voltages. -In turn, the \gls{ADC} records the analog signals with a specified samplerate $f_s$ resulting in a sequence of digitised voltages or waveform. -The $n$-th sample in this waveform is then associated with a time $t[n] = t[0] + n/f_s = t[0] + n\cdot\Delta t$ after the initial sample at $t[0]$. -%In reality, the sampling rate will vary by very small amounts resulting in timestamp inaccuracies called jitter. -\\ - -% Filtering before ADC -The sampling is limited by the \gls{ADC}'s Nyquist frequency at half its sampling rate. -In addition, various frequency-dependent backgrounds can be reduced by applying a band-pass filter before digitisation. -For example, in \gls{AERA} and in AugerPrime's radio detector \cite{Huege:2023pfb}, the filter attenuates all of the signal except for the frequency interval between $30 \text{--} 80\MHz$. -\\ -In addition to a band-pass filter, more complex filter setups are used to remove unwanted components or introduce attenuation at specific frequencies. -For example, in \gls{GRAND} \cite{GRAND:2018iaj}, the total frequency band ranges from $20\MHz$ to $200\MHz$. -such that the FM broadcasting band ($87.5\MHz \text{--} 108\MHz$) falls within this range. -Therefore, notch filters have been introduced to suppress signals in this band. -\\ - -% Filter and Antenna response -From the above it is clear that the digitised waveform is a measurement of the electric field that is sequentially convolved with the antenna's and filter's response. -Thus to reconstruct properties of the electric field signal from the waveform, both responses must be known. -\\ - -% Analysis, properties, frequencies, pulse detection, shape matching, -Different methods are available for the analysis of the waveform, and the antenna and filter responses. -A key aspect is determining the frequency-dependent amplitudes (and phases) in the measurements to characterise the responses and, more importantly, select signals from background. -With \glspl{FT}, these frequency spectra can be produced. -This technique is especially important for the sine wave beacon of Section~\ref{sec:beacon:sine}, as it forms the basis of the phase measurement. -\\ -The detection and identification of more complex time-domain signals can be achieved using the cross correlation, -which is the basis for the pulsed beacon method of Section~\ref{sec:beacon:pulse}. -\\ - -\section{Fourier Transforms}% <<<< -\label{sec:fourier} -\glspl{FT} allow for a frequency-domain representation of a time-domain signal. -In the case of radio antennas, it converts a time-ordered sequence of voltages into a set of complex amplitudes that depend on frequency. -By evaluating the \gls{FT} at appropriate frequencies, the frequency spectrum of a waveform is calculated. -This method then allows to modify a signal by operating on its frequency components, i.e.~removing a narrow frequency band contamination within the signal. -\\ - -% DTFT from CTFT -The continuous \acrlong{FT} takes the form -\begin{equation} - \label{eq:fourier} - \phantom{.} - X(f) = \int_\infty^\infty \dif{t}\, x(t)\, e^{-i 2 \pi f t} - . -\end{equation} -It decomposes the signal $x(t) \in \mathcal{R}$ into plane waves with complex-valued amplitude $X(f)$ at frequency $f$. -\\ -From the complex amplitude $X(f)$, the phase $\pTrue(f)$ and amplitude $A(f)$ are calculated as -\begin{equation*} - \begin{aligned} - \phantom{.} - \pTrue(f) = \arg\left( X(f) \right), && \text{and} && A(f) = 2 \left| X(f) \right| - . - \end{aligned} -\end{equation*} -Note the factor $2$ in this definition of the amplitude. -It is introduced to compensate for expecting a real valued input signal $x(t) \in \mathcal{R}$ and mapping negative frequencies to their positive equivalents. -\\ - -When $x(t)$ is sampled at discrete times, the integral of \eqref{eq:fourier} is discretized in time to result in the \gls{DTFT}: -\begin{equation} - %\tag{DTFT} - \label{eq:fourier:dtft} - X(f) = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f t[n]} -\end{equation} -where $x(t)$ is sampled a finite number of times $N$ at times $t[n]$. -Note that the amplitude $A(f)$ will now scale with the number of samples~$N$, and thus should be normalised to $A(f) = 2 \left| X(f) \right| / N$. -\\ - -Considering a finite sampling size $N$ and periodicity of the signal, the bounds of the integral in \eqref{eq:fourier} have collapsed to $t[0]$ up to $t_{N-1}$. -It follows that the lowest resolvable frequency is $f_\mathrm{lower} = 1/T = 1/(t_{N-1} - t[0])$. -\\ -Additionally, when the sampling of $x(t)$ is equally spaced, the $t[n]$ terms can be written as a sequence, $t[n] - t[0] = n \Delta t = n/f_s$, with $f_s$ the sampling frequency. -Here the highest resolvable frequency is limited by the Nyquist~frequency. -\\ - -% DFT sampling of DTFT / efficient multifrequency FFT -Implementing the above decomposition of $t[n]$, \eqref{eq:fourier:dtft} can be rewritten in terms of multiples of the sampling frequency $f = k f_s/N$, becoming the \gls{DFT} -\begin{equation*} - \label{eq:fourier:dft} - \phantom{.} - X(k) - % = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f (t[0] + n/f_s)} - % = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f t[0]}\, e^{ -i 2 \pi f n/f_s} - % = e^{ -i 2 \pi f t[0]}\, \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi k n} - = e^{ -i 2 \pi f t[0]} \sum_{n=0}^{N-1} x(t[n])\, \cdot e^{ -i 2 \pi \frac{k n}{N} } - . -\end{equation*} - -The direct computation of this transform takes $2N$ complex multiplications and $2(N-1)$ complex additions for a single frequency $k$. -When computing this transform for all integer $0 \leq k < N$, this amounts to $\mathcal{O}(N^2)$ complex computations. -\acrlong{FFT}s (\acrshort{FFT}s) are efficient algorithms that derive all $X( 0 \leq k < N)$ in $\mathcal{O}( N \log N)$ calculations. - -\begin{figure} - \begin{subfigure}{0.49\textwidth} - \includegraphics[width=\textwidth]{methods/fourier/waveforms.pdf}% - %\caption{} - \end{subfigure} - \hfill - \begin{subfigure}{0.49\textwidth} - \includegraphics[width=\textwidth]{methods/fourier/spectrum.pdf}% - \label{fig:fourier:dtft_dft} - %\caption{} - \end{subfigure} - \caption{ - \textit{Left:} A waveform sampling a sine wave with white noise. - \textit{Right:} - The frequency spectrum of the waveform. - Comparison of the \gls{DTFT} and \gls{DFT} of the same waveform. - The \gls{DFT} can be interpreted as sampling the \gls{DTFT} at integer multiple of the waveform's sampling rate $f_s$. - } - \label{fig:fourier} -\end{figure} - - -% Linearity fourier for real/imag -In the previous equations, the resultant quantity $X(f)$ is a complex amplitude. -Since a complex plane wave can be linearly decomposed as -\begin{equation*} - \phantom{,} - \label{eq:complex_wave_decomposition} - \begin{aligned} - e^{-i x} - & - = \cos(x) + i\sin(-x) - %\\ & - = \Re\left(e^{-i x}\right) + i \Im\left( e^{-i x} \right) - , - \end{aligned} -\end{equation*} -the above transforms can be decomposed into explicit real and imaginary parts as well, -i.e.,~\eqref{eq:fourier:dtft} becomes -\begin{equation} - \phantom{.} - \label{eq:fourier:dtft_decomposed} - \begin{aligned} - X(f) - & - = X_R(f) + i X_I(f) - %\\ & - \equiv \Re(X(f)) + i \Im(X(f)) - \\ & - = \sum_{n=0}^{N-1} \, x(t[n]) \, \cos( 2\pi f t[n] ) - - i \sum_{n=0}^{N-1} \, x(t[n]) \, \sin( 2\pi f t[n] ) - . - \end{aligned} -\end{equation} - -% FT term to phase and magnitude -The normalised amplitude at a given frequency $A(f)$ is calculated from \eqref{eq:fourier:dtft} as -\begin{equation} - \label{eq:complex_magnitude} - \phantom{.} - A(f) - \equiv \frac{2 \left| X(f) \right| }{N} - = \frac{ 2 \sqrt{ X_R(f)^2 + X_I(f)^2 } }{N} - . -\end{equation} -Likewise, the complex phase at a given frequency $\pTrue(f)$ is obtained by -\begin{equation} - \label{eq:complex_phase} - \phantom{.} - \pTrue(f) - \equiv \arg( X(f) ) - = \arctantwo\left( X_I(f), X_R(f) \right) - . -\end{equation} - -% Recover A\cos(2\pi t[n] f + \phi) using above definitions -Applying \eqref{eq:fourier:dtft_decomposed} to a signal $x(t) = A\cos(2\pi t f + \pTrue)$ with the above definitions obtains -an amplitude $A$ and phase $\pTrue$ at frequency $f$. -When the minus sign in the exponent of \eqref{eq:fourier} is not taken into account, the calculated phase in \eqref{eq:complex_phase} will have an extra minus sign. -\\ - -Figure~\ref{fig:fourier} shows the frequency spectrum of a simulated waveform that is obtained using either a \gls{DFT} or a \gls{DTFT}. -It shows that the \gls{DFT} evaluates the \gls{DTFT} only at certain frequencies. -By missing the correct frequency bin for the sine wave, it estimates both a too low amplitude and the wrong phase for the input function. -\\ - - -% % Static sin/cos terms if f_s, f and N static .. -When calculating the \gls{DTFT} for multiple inputs which share both an equal number of samples $N$ and equal sampling frequencies $f_s$, the $\sin$ and $\cos$ terms in \eqref{eq:fourier:dtft_decomposed} are the same for a single frequency $f$ up to an overall phase which is dependent on $t[0]$. -Therefore, at the cost of an increased memory allocation, these terms can be precomputed, reducing the number of real multiplications to $2N+1$. - -% .. relevance to hardware if static frequency -Thus, for static frequencies in a continuous beacon, the coefficients for evaluating the \gls{DTFT} can be put into the hardware of the detectors, -opening the way to efficiently measuring the amplitude and phase in realtime. - - -% >>>> - -\section{Cross-Correlation}% <<<< -\label{sec:correlation} -The cross-correlation is a measure of how similar two waveforms $u(t)$ and $v(t)$ are. -By introducing a time delay $\tau$ in one of the waveforms it turns into a function of this time delay, -\begin{equation} - \label{eq:correlation_cont} - \phantom{,} - \Corr(\tau; u, v) = \int_{-\infty}^{\infty} \dif t \, u(t)\, v^*(t-\tau) - , -\end{equation} -where the integral reduces to a sum for a finite amount of samples in either $u(t)$ or $v(t)$. -Still, $\tau$ remains a continuous variable. -% Figure example of correlation and argmax -Figure~\ref{fig:correlation} illustrates how the best time delay $\tau$ between two waveforms can thus be found by finding the maximum cross-correlation. -\\ - -% Discrete \tau because of sampling -In reality, both waveforms have a finite size, also reducing the time delay $\tau$ resolution to the highest sampling rate of the two waveforms. -When the sampling rates are equal, the time delay variable is effectively shifting one waveform by a number of samples. -\\ -% Upsampling? No -Techniques such as upsampling or interpolation can be used to effectively change the sampling rate of a waveform up to a certain degree. -\\ - -% Approaching analog \tau; or zero-stuffing -Since zero-valued samples do not contribute to the integral of \eqref{eq:correlation_cont}, they can be freely added (or ignored) to a waveform when performing the calculations. -This means two waveforms of different sampling rates can be correlated when the sampling rates are integer multiples of each other, simply by zero-stuffing the slowly sampled waveform. -This allows to approximate an analog time delay between two waveforms when one waveform is sampled at a very high rate as compared to the other. - -\begin{figure} - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{methods/correlation/waveforms.pdf} - %\caption{ - % Two waveforms. - %}% - \label{subfig:correlation:waveforms} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{methods/correlation/correlation.pdf} - %\caption{ - % The correlation of two Waveforms as a function of time. - %}% - \label{subfig:correlation} - \end{subfigure}% - \caption{ - \textit{Left:} Two waveforms to be correlated with the second waveform delayed by $5$. - \textit{Right:} The correlation of both waveforms as a function of the time delay $\tau$. - Here the best time delay (red dashed line) is found at $5$, which would align the maximum amplitudes of both waveforms in the left pane. - } - \label{fig:correlation} -\end{figure} - -% >>> -\end{document} diff --git a/documents/thesis/chapters/radio_measurement.tex.bak b/documents/thesis/chapters/radio_measurement.tex.bak deleted file mode 100644 index 703f7c5..0000000 --- a/documents/thesis/chapters/radio_measurement.tex.bak +++ /dev/null @@ -1,275 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter{Waveform Analysis Techniques} -\label{sec:waveform} -%Electric fields, -%Antenna Polarizations, -%Frequency Bandwidth, - -Radio antennas are sensitive to changes in their surrounding electric fields. -The polarisation of the electric field that a single antenna can record is dependent on the geometry of this antenna. -Therefore, in experiments such as \gls{Auger} or \gls{GRAND}, multiple antennas are incorporated into a single unit to obtain complementary polarisation recordings. -Additionally, the shape and size of antennas affect how well the antenna responds to certain frequency ranges, resulting in different designs meeting different criteria. -\\ - -%Waveform time series data -%Sampling, -%Waveform + Time vector, -In each radio detector, the antenna presents its signals to an \gls{ADC} as fluctuating voltages. -In turn, the \gls{ADC} records the analog signals with a specified samplerate $f_s$ resulting in a sequence of digitised voltages or waveform. -The $n$-th sample in this waveform is then associated with a time $t[n] = t[0] + n/f_s = t[0] + n\cdot\Delta t$ after the initial sample at $t[0]$. -%In reality, the sampling rate will vary by very small amounts resulting in timestamp inaccuracies called jitter. -\\ - -% Filtering before ADC -The sampling is limited by the \gls{ADC}'s Nyquist frequency at half its sampling rate. -In addition, various frequency-dependent backgrounds can be reduced by applying a bandpass filter before digitisation. -For example, in \gls{AERA} and in AugerPrime's radio detector \cite{Huege:2023pfb}, the filter attenuates all of the signal except for the frequency interval between $30 \text{--} 80\MHz$. -\\ -In addition to a bandpass filter, more complex filter setups are used to remove unwanted components or introduce attenuation at specific frequencies. -For example, in \gls{GRAND} \cite{GRAND:2018iaj}, the total frequency band ranges from $20\MHz$ to $200\MHz$. -such that the FM broadcasting band ($87.5\MHz \text{--} 108\MHz$) falls within this range. -Therefore, notch filters have been introduced to suppress signals in this band. -\\ - -% Filter and Antenna response -From the above it is clear that the digitised waveform is a measurement of the electric field that is sequentially convolved with the antenna's and filter's response. -Thus to reconstruct properties of the electric field signal from the waveform, both responses must be known. -\\ - -% Analysis, properties, frequencies, pulse detection, shape matching, -Different methods are available for the analysis of the waveform, and the antenna and filter responses. -A key aspect is determining the frequency-dependent amplitudes (and phases) in the measurements to characterise the responses and, more importantly, select signals from background. -With \glspl{FT}, these frequency spectra can be produced. -This technique is especially important for the sinewave beacon of Section~\ref{sec:beacon:sine}, as it forms the basis of the phase measurement. -\\ -The detection and identification of more complex time-domain signals can be achieved using the cross correlation, -which is the basis for the pulsed beacon method of Section~\ref{sec:beacon:pulse}. -\\ - -\section{Fourier Transforms}% <<<< -\label{sec:fourier} -\glspl{FT} allow for a frequency-domain representation of a time-domain signal. -In the case of radio antennas, it converts a time-ordered sequence of voltages into a set of complex amplitudes that depend on frequency. -By evaluating the \gls{FT} at appropriate frequencies, the frequency spectrum of a waveform is calculated. -This method then allows to modify a signal by operating on its frequency components, i.e.~removing a narrow frequency band contamination within the signal. -\\ - -% DTFT from CTFT -The continuous \acrlong{FT} takes the form -\begin{equation} - \label{eq:fourier} - \phantom{.} - X(f) = \int_\infty^\infty \dif{t}\, x(t)\, e^{-i 2 \pi f t} - . -\end{equation} -It decomposes the signal $x(t) \in \mathcal{R}$ into plane waves with complex-valued amplitude $X(f)$ at frequency $f$. -\\ -From the complex amplitude $X(f)$, the phase $\pTrue(f)$ and amplitude $A(f)$ are calculated as -\begin{equation*} - \begin{aligned} - \phantom{.} - \pTrue(f) = \arg\left( X(f) \right), && \text{and} && A(f) = 2 \left| X(f) \right| - . - \end{aligned} -\end{equation*} -Note the factor $2$ in this definition of the amplitude. -It is introduced to compensate for expecting a real valued input signal $x(t) \in \mathcal{R}$ and mapping negative frequencies to their positive equivalents. -\\ - -When $x(t)$ is sampled at discrete times, the integral of \eqref{eq:fourier} is discretized in time to result in the \gls{DTFT}: -\begin{equation} - %\tag{DTFT} - \label{eq:fourier:dtft} - X(f) = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f t[n]} -\end{equation} -where $x(t)$ is sampled a finite number of times $N$ at times $t[n]$. -Note that the amplitude $A(f)$ will now scale with the number of samples~$N$, and thus should be normalised to $A(f) = 2 \left| X(f) \right| / N$. -\\ - -Considering a finite sampling size $N$ and periodicity of the signal, the bounds of the integral in \eqref{eq:fourier} have collapsed to $t[0]$ up to $t_{N-1}$. -It follows that the lowest resolvable frequency is $f_\mathrm{lower} = 1/T = 1/(t_{N-1} - t[0])$. -\\ -Additionally, when the sampling of $x(t)$ is equally spaced, the $t[n]$ terms can be written as a sequence, $t[n] - t[0] = n \Delta t = n/f_s$, with $f_s$ the sampling frequency. -Here the highest resolvable frequency is limited by the Nyquist~frequency. -\\ - -% DFT sampling of DTFT / efficient multifrequency FFT -Implementing the above decomposition of $t[n]$, \eqref{eq:fourier:dtft} can be rewritten in terms of multiples of the sampling frequency $f = k f_s/N$, becoming the \gls{DFT} -\begin{equation*} - \label{eq:fourier:dft} - \phantom{.} - X(k) - % = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f (t[0] + n/f_s)} - % = \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi f t[0]}\, e^{ -i 2 \pi f n/f_s} - % = e^{ -i 2 \pi f t[0]}\, \sum_{n=0}^{N-1} x(t[n])\, e^{ -i 2 \pi k n} - = e^{ -i 2 \pi f t[0]} \sum_{n=0}^{N-1} x(t[n])\, \cdot e^{ -i 2 \pi \frac{k n}{N} } - . -\end{equation*} - -The direct computation of this transform takes $2N$ complex multiplications and $2(N-1)$ complex additions for a single frequency $k$. -When computing this transform for all integer $0 \leq k < N$, this amounts to $\mathcal{O}(N^2)$ complex computations. -\acrlong{FFT}s (\acrshort{FFT}s) are efficient algorithms that derive all $X( 0 \leq k < N)$ in $\mathcal{O}( N \log N)$ calculations. - -\begin{figure} - \begin{subfigure}{0.49\textwidth} - \includegraphics[width=\textwidth]{methods/fourier/waveforms.pdf}% - %\caption{} - \end{subfigure} - \hfill - \begin{subfigure}{0.49\textwidth} - \includegraphics[width=\textwidth]{methods/fourier/spectrum.pdf}% - \label{fig:fourier:dtft_dft} - %\caption{} - \end{subfigure} - \caption{ - \textit{Left:} A waveform sampling a sine wave with white noise. - \textit{Right:} - The frequency spectrum of the waveform. - Comparison of the \gls{DTFT} and \gls{DFT} of the same waveform. - The \gls{DFT} can be interpreted as sampling the \gls{DTFT} at integer multiple of the waveform's sampling rate $f_s$. - } - \label{fig:fourier} -\end{figure} - - -% Linearity fourier for real/imag -In the previous equations, the resultant quantity $X(f)$ is a complex amplitude. -Since a complex plane wave can be linearly decomposed as -\begin{equation*} - \phantom{,} - \label{eq:complex_wave_decomposition} - \begin{aligned} - e^{-i x} - & - = \cos(x) + i\sin(-x) - %\\ & - = \Re\left(e^{-i x}\right) + i \Im\left( e^{-i x} \right) - , - \end{aligned} -\end{equation*} -the above transforms can be decomposed into explicit real and imaginary parts aswell, -i.e.,~\eqref{eq:fourier:dtft} becomes -\begin{equation} - \phantom{.} - \label{eq:fourier:dtft_decomposed} - \begin{aligned} - X(f) - & - = X_R(f) + i X_I(f) - %\\ & - \equiv \Re(X(f)) + i \Im(X(f)) - \\ & - = \sum_{n=0}^{N-1} \, x(t[n]) \, \cos( 2\pi f t[n] ) - - i \sum_{n=0}^{N-1} \, x(t[n]) \, \sin( 2\pi f t[n] ) - . - \end{aligned} -\end{equation} - -% FT term to phase and magnitude -The normalised amplitude at a given frequency $A(f)$ is calculated from \eqref{eq:fourier:dtft} as -\begin{equation} - \label{eq:complex_magnitude} - \phantom{.} - A(f) - \equiv \frac{2 \left| X(f) \right| }{N} - = \frac{ 2 \sqrt{ X_R(f)^2 + X_I(f)^2 } }{N} - . -\end{equation} -Likewise, the complex phase at a given frequency $\pTrue(f)$ is obtained by -\begin{equation} - \label{eq:complex_phase} - \phantom{.} - \pTrue(f) - \equiv \arg( X(f) ) - = \arctantwo\left( X_I(f), X_R(f) \right) - . -\end{equation} - -% Recover A\cos(2\pi t[n] f + \phi) using above definitions -Applying \eqref{eq:fourier:dtft_decomposed} to a signal $x(t) = A\cos(2\pi t f + \pTrue)$ with the above definitions obtains -an amplitude $A$ and phase $\pTrue$ at frequency $f$. -When the minus sign in the exponent of \eqref{eq:fourier} is not taken into account, the calculated phase in \eqref{eq:complex_phase} will have an extra minus sign. -\\ - -Figure~\ref{fig:fourier} shows the frequency spectrum of a simulated waveform that is obtained using either a \gls{DFT} or a \gls{DTFT}. -It shows that the \gls{DFT} evaluates the \gls{DTFT} only at certain frequencies. -By missing the correct frequency bin for the sine wave, it estimates both a too low amplitude and the wrong phase for the input function. -\\ - - -% % Static sin/cos terms if f_s, f and N static .. -When calculating the \gls{DTFT} for multiple inputs which share both an equal number of samples $N$ and equal sampling frequencies $f_s$, the $\sin$ and $\cos$ terms in \eqref{eq:fourier:dtft_decomposed} are the same for a single frequency $f$ upto an overall phase which is dependent on $t[0]$. -Therefore, at the cost of an increased memory allocation, these terms can be precomputed, reducing the number of real multiplications to $2N+1$. - -% .. relevance to hardware if static frequency -Thus, for static frequencies in a continuous beacon, the coefficients for evaluating the \gls{DTFT} can be put into the hardware of the detectors, -opening the way to efficiently measuring the amplitude and phase in realtime. - - -% >>>> - -\section{Cross-Correlation}% <<<< -\label{sec:correlation} -The cross-correlation is a measure of how similar two waveforms $u(t)$ and $v(t)$ are. -By introducing a time delay $\tau$ in one of the waveforms it turns into a function of this time delay, -\begin{equation} - \label{eq:correlation_cont} - \phantom{,} - \Corr(\tau; u, v) = \int_{-\infty}^{\infty} \dif t \, u(t)\, v^*(t-\tau) - , -\end{equation} -where the integral reduces to a sum for a finite amount of samples in either $u(t)$ or $v(t)$. -Still, $\tau$ remains a continuous variable. -% Figure example of correlation and argmax -Figure~\ref{fig:correlation} illustrates how the best time delay $\tau$ between two waveforms can thus be found by finding the maximum cross-correlation. -\\ - -% Discrete \tau because of sampling -In reality, both waveforms have a finite size, also reducing the time delay $\tau$ resolution to the highest sampling rate of the two waveforms. -When the sampling rates are equal, the time delay variable is effectively shifting one waveform by a number of samples. -\\ -% Upsampling? No -Techniques such as upsampling or interpolation can be used to effectively change the sampling rate of a waveform up to a certain degree. -\\ - -% Approaching analog \tau; or zero-stuffing -Since zero-valued samples do not contribute to the integral of \eqref{eq:correlation_cont}, they can be freely added (or ignored) to a waveform when performing the calculations. -This means two waveforms of different sampling rates can be correlated when the sampling rates are integer multiples of each other, simply by zero-stuffing the slowly sampled waveform. -This allows to approximate an analog time delay between two waveforms when one waveform is sampled at a very high rate as compared to the other. - -\begin{figure} - \centering - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{methods/correlation/waveforms.pdf} - %\caption{ - % Two waveforms. - %}% - \label{subfig:correlation:waveforms} - \end{subfigure} - \hfill - \begin{subfigure}{0.48\textwidth} - \includegraphics[width=\textwidth]{methods/correlation/correlation.pdf} - %\caption{ - % The correlation of two Waveforms as a function of time. - %}% - \label{subfig:correlation} - \end{subfigure}% - \caption{ - \textit{Left:} Two waveforms to be correlated with the second waveform delayed by $5$. - \textit{Right:} The correlation of both waveforms as a function of the time delay $\tau$. - Here the best time delay (red dashed line) is found at $5$, which would align the maximum amplitudes of both waveforms in the left pane. - } - \label{fig:correlation} -\end{figure} - -% >>> -\end{document} diff --git a/documents/thesis/chapters/single_sine_interferometry.tex b/documents/thesis/chapters/single_sine_interferometry.tex deleted file mode 100644 index bc712c0..0000000 --- a/documents/thesis/chapters/single_sine_interferometry.tex +++ /dev/null @@ -1,513 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter[Single Sine Synchronisation]{Single Sine Beacon Synchronisation and Radio Interferometry} -\label{sec:single_sine_sync} - -% <<< -As shown in Chapter~\ref{sec:disciplining}, both impulsive and sine beacon signals can synchronise air shower radio detectors to enable the interferometric reconstruction of extensive air showers. -This chapter will focus on using a single sine beacon to synchronise an array due to the simple setup and analysis required for such a beacon. -Additionally, at \gls{Auger}, a public TV-transmitter is broadcasting at $67.25\MHz$. -This poses an opportunity to use a ``free'' beacon to synchronise the radio antennas of \gls{AERA} and \gls{AugerPrime}. -\\ - -Due to the periodicity of sine beacons, the ability to synchronise an array is limited up to the beacon period $T$. -As previously mentioned, the correct periods can be ascertained by choosing a beacon period much longer than the estimated accuracy of another timing mechanism.\footnote{For reference, \gls{GNSS} timing is expected to be below $30\ns$} -Likewise, this can be achieved using the beating of multiple frequencies such as the four frequency setup in \gls{AERA}, amounting to a total period of $>1\us$. -\\ - -In this chapter, a different method of resolving these period mismatches is investigated by recording an impulsive signal in combination with the sine beacon. -Figure~\ref{fig:beacon_sync:sine} shows the steps of synchronisation using this combination. -The extra signal declares a shared time $\tTrueEmit$ that is common to the stations, after which the periods can be counted. -Note that the period mismatch term $\Delta k_{ij}$ in \eqref{eq:synchro_mismatch_clocks_periodic} will be referenced throughout this Chapter as $k$ since we can take station $i$ as reference ($k_i =0$). -\\ - -\begin{figure}%<<< - \centering - \begin{subfigure}[t]{0.47\textwidth} - \includegraphics[width=\textwidth]{beacon/beacon_sync.pdf} - \caption{ - Phase alignment - } - \label{fig:beacon_sync:syntonised} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.47\textwidth} - \includegraphics[width=\textwidth]{beacon/beacon_sync_period.pdf} - \caption{ - Period alignment - } - \label{fig:beacon_sync:period_alignment} - \end{subfigure} - \caption{ - Synchronisation scheme for two antennas using a single sine wave beacon (orange) and an impulsive signal (blue). - Vertical dashed lines indicate periods of the sine wave. - \subref{fig:beacon_sync:syntonised} A small time delay $t_\varphi$ is derived from the phase difference of the beacon as measured by the antennas. - \subref{fig:beacon_sync:period_alignment} The period mismatch $k$ is determined from the overlap between the impulsive signals. - %Expecting the impulsive signals to come from the same source, the overlap between the impulsive signals is used to determine the period mismatch $k$. - Note that the impulsive signals do not coincide perfectly due to different propagation delays from the source to the antennas. - } - \label{fig:beacon_sync:sine} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_timing_outline.pdf} -% \caption{ -% Measure two waveforms at different antennas at approximately the same local time (clocks are not synchronised). -% } -% \label{fig:beacon_sync:timing_outline} -% \end{subfigure} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_outline.pdf} -% \caption{ -% The beacon signal is used to remove time differences smaller than the beacon's period. -% The detector clocks are now an unknown amount of periods out of sync. -% } -% \label{fig:beacon_sync:syntonised} -% \end{subfigure} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_period_alignment.pdf} -% \caption{ -% Lifting period degeneracy ($k=n-m=7$ periods) using the optimal overlap between impulsive signals. -% } -% \label{fig:beacon_sync:period_alignment} -% \end{subfigure} -% \caption{ -% Synchronisation scheme for two antennas using a continuous beacon and an impulsive signal, each emitted from a separate transmitter. -% Vertical dashed lines indicate periods of the beacon (orange), -% solid lines indicate the time of the impulsive signal (blue). -% \\ -% \subref{fig:beacon_sync:syntonised}: The beacon allows to resolve a small timing delay ($\Delta \tClockPhase$). -% \\ -% \subref{fig:beacon_sync:period_alignment}: Expecting the impulsive signals to come from the same source, the overlap between the two impulsive signals is used to lift the period degeneracy ($k=n-m$). -% } -% \label{fig:beacon_sync:sine} -\end{figure}%>>> - -% Same transmitter / Static setup -When the beacon transmitter is also used to emit the signal defining $\tTrueEmit$, the number of periods $k$ can be obtained directly from the signal. -However, if this calibration signal is sent from a different location, its time delays differ from the beacon's time delays. -\\ -% Dynamic setup -For static setups, these time delays can be resolved by measuring the involved distances or by taking measurements of the time delays over time. -In dynamic setups, such as for transient signals, the time delays change per event and the distances are not known a priori. -The time delays must therefore be resolved from the information of a single event. -\\ - -% Beacon + Impulsive -> discrete -As shown in Chapter~\ref{sec:beacon:array}, an impulsive signal allows to reconstruct the direction of origin in a single event depending on the timing resolution of the array. -Synchronising the array with a sine beacon, any clock mismatch is discretized into a number of periods $k$. -This allows to improve the reconstruction by iterating the discrete clock mismatches during reconstruction. -\\ -Of course, a limit on the number of periods is required to prevent over-optimisation. -In general, they can be constrained using estimates of the accuracy of other timing mechanisms (see below). -\\ -With a restricted set of allowed period shifts, we can alternate optimising the calibration signal's origin and optimising the set of period time delays of the array. -\\ -% >>> - -%\section{Lifting the Period Degeneracy with an Air Shower}% <<< -% <<<< -% Airshower gives t0 -In the case of radio detection of air showers, the very signal of the air shower itself can be used as the calibration signal. -This falls into the dynamic setup previously mentioned. -The best period defects must thus be recovered from a single event. -\\ -When doing the interferometric analysis for a sine beacon synchronised array, waveforms can only be delayed by an integer amount of periods, thereby giving discrete solutions to maximising the interferometric signal. - -\clearpage -\section{Air Shower simulation} -% simulation of proton E15 on 10x10 antenna -To test the idea of combining a single sine beacon with an air shower, we simulated a set of recordings of a single air shower that also contains a beacon signal. -\footnote{ -\url{https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction/-/tree/main/airshower_beacon_simulation} -or -\url{https://etdeboone.nl/masters-thesis/airshower_beacon_simulation} -} -\\ -The air shower signal was simulated by \acrlong{ZHAireS}\cite{Alvarez-Muniz:2010hbb} on a grid of 10x10 antennas with a spacing of $50\,\mathrm{meters}$. -Each antenna recorded a waveform of $500$ samples with a samplerate of $1\GHz$ for each of the X,Y and Z polarisations. -The air shower itself was generated by a $10^{16}\eV$ proton coming in under an angle of $20^\circ$ from zenith. -%Figure~\ref{fig:single:proton_waveform} shows the earliest and latest waveforms recorded by the array with their true time. -\\ -Figure~\ref{fig:single:proton_grid} shows the maximum electric field measured at each of the antennas. -The ring of antennas with maximum electric fields in the order of $25\uVperm$ at the center of the array is the Cherenkov-ring. -The Cherenkov-ring forms due to the forward beaming of the radio emissions of the air shower. -Outside this ring, the maximum electric field quickly falls with increasing distance to the array core. -As expected for a vertical shower, the projection of the Cherenkov-ring on the ground is roughly circular. -\\ - -%% add beacon -A sine beacon ($\fbeacon = 51.53\MHz$) was introduced at a distance of approximately $75\,\mathrm{km}$ northwest of the array, primarily received in the X polarisation. -The distance between the antenna and the transmitter results in a phase offset with which the beacon is received at each antenna.% -\footnote{%<<< - The beacon's amplitude is also dependent on the distance. Although simulated, this effect has not been incorporated in the analysis as it is negligible for the considered grid and distance to the transmitter. -} %>>> -The beacon signal was recorded over a longer time ($10240\,\mathrm{samples}$), to be able to distinguish the beacon and air shower later in the analysis. -\\ -The final waveform of an antenna (see Figure~\ref{fig:single:proton}) was then constructed by adding its beacon and air shower waveforms and band-passing with relevant frequencies (here $30$ and $80\MHz$ are taken by default). -Of course, a gaussian white noise component is introduced to the waveform as a simple noise model (see Figure~\ref{fig:sine:snr_time_resolution} for a treatise on the timing accuracy of a sine beacon). -\\ - -\begin{figure}% <<< - \centering - \includegraphics[width=0.5\textwidth]{ZH_simulation/array_geometry_shower_amplitude.pdf} - \caption{ - The 10x10 antenna grid used for recording the air shower. - Colours indicate the maximum electric field recorded at the antenna. - The Cherenkov-ring is clearly visible as a circle of radius $100\metre$ centered at $(0,0)$. - } - \label{fig:single:proton_grid} -\end{figure}% >>> -\begin{figure}% <<< - \begin{subfigure}[t]{0.49\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.no_mask.zoomed.pdf} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.49\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.fourier.pdf} - \end{subfigure} - \caption{ - \textit{Left:} - %\textit{Right:} - %Example of the earliest and latest recorded air shower waveforms in the array as simulated by ZHAireS - Excerpt of a fully simulated waveform ($N=10240\,\mathrm{samples}$) (blue) containing the air shower (a $10^{16}\eV$~proton), the beacon (green, $\fbeacon = 51.53\MHz$) and noise. - The part of the waveform between the vertical dashed lines is considered air shower signal and masked before measuring the beacon parameters. - \textit{Right:} - Fourier spectra of the waveforms. - The green dashed lines indicate the measured beacon parameters. - The amplitude spectrum clearly shows a strong component at roughly $50\MHz$. - The phase spectrum of the original waveform shows the typical behaviour for a short pulse. - } - \label{fig:single:proton} -\end{figure}% >>> - -% randomise clocks -After the creation of the antenna waveforms, the clocks are randomised by sampling a gaussian distribution with a standard deviation of $30\ns$. % (see Figure~\ref{fig:simu:sine:periods:repair_none}). -At a beacon period of $\sim 20\ns$, this ensures that multiple antennas have clock defects of at least one beacon period. -This in turn allows for synchronisation mismatches of more than one beacon period. -Moreover, it falls in the order of magnitude of clock defects that were found in \gls{AERA}\cite{PierreAuger:2015aqe}. -\\ - -% separate air shower from beacon -To correctly recover the beacon from the waveform, it must be separated from the air shower. -Typically, a trigger sets the location of the air shower signal in the waveform. -In our case, the air shower signal is located at $t=500\ns$ (see Figure~\ref{fig:single:proton}). -Since the beacon can be recorded for much longer than the air shower signal, we mask a window of $500$ samples around the maximum of the trace as the air shower's signal. -% measure beacon phase, remove distance phase -The remaining waveform is fed into a \gls{DTFT} \eqref{eq:fourier:dtft} to measure the beacon's phase $\pMeas$ and amplitude. -Note that due to explicitly including a time axis in a \gls{DTFT}, a number of samples can be omitted without introducing artefacts. -\\ -With the obtained beacon parameters, the air shower signal is in turn reconstructed by subtracting the beacon from the full waveform in the time domain. -\\ -The small clock defect $\tClockPhase$ is then finally calculated from the beacon's phase $\pMeas$ by subtracting the phase introduced by the propagation from the beacon transmitter. -\\ - -% introduce air shower -From the above, we now have a set of reconstructed air shower waveforms with corresponding clock defects smaller than one beacon period $T$. -Shifting the waveforms to remove these small clocks defects, we are left with resolving the correct number of periods $k$ per waveform (see Figure~\ref{fig:grid_power:repair_phases}). -\\ -% >>>> -\section{\textit{k}-finding} % <<< - -% unknown origin of air shower signal -Up until now, the shower axis and thus the origin of the air shower signal have not been resolved. -This means that the unknown propagation time delays for the air shower ($\tProp$) affect the alignment of the signals in Figure~\ref{fig:beacon_sync:period_alignment} in addition to the unknown clock period defects ($k T$). -As such, both this origin and the clock defects have to be determined simultaneously. -\\ -% radio interferometry -If the antennas had been fully synchronised, radio interferometry as introduced in Chapter~\ref{sec:interferometry} can be applied to find the origin of the air shower signal, thus resolving the shower axis. -Still, a (rough) first estimate of the shower axis might be made using this technique or by employing other detection techniques such as those using surface or fluorescence detectors. -% (see Figure~\ref{fig:dynamic-resolve}). -\\ - -On the true shower axis, the waveforms would sum most coherently when the correct $k$'s are used. -Therefore, around the estimated shower axis, we define a grid search to both optimise this sum and the location of the maximum power. -In this process each waveform of the array is allowed to shift by a restricted amount of periods with respect to a reference waveform (taken to be the waveform with the highest maximum). -\\ - -Note that these grids are defined here in shower plane coordinates with $\vec{v}$ the true shower axis and $\vec{B}$ the local magnetic field. -Searching a grid that is slightly misaligned with the true shower axis is expected to give comparable results. -\\ - -The below $k$-finding algorithm is an iterative process where the grid around the shower axis is redefined on each iteration. -Discussion is found in the next Chapter. -\begin{enumerate}[start=1, label={Step \arabic*.}, ref=\arabic*, topsep=6pt, widest={Step 1.}] - \label{algo:kfinding} - \item \label{algo:kfinding:grid} - Define a grid around the estimated shower axis, zooming in on each iteration. - - \item \label{algo:kfinding:optimisation} - $k$-optimisation: per grid point, optimise the $k$'s to maximise the sum of the waveforms (see Figure~\ref{fig:single:k-correlation}). - - \item \label{algo:kfinding:kfinding} - $k$-finding: find the grid point with the maximum overall sum (see Figure~\ref{fig:findks:maxima}) and select its set of $k$'s. - - \item \label{algo:kfinding:break} - Stop when the set of $k$'s is equal to the set of the previous iteration, otherwise continue. - - \item \label{algo:kfinding:powermapping} - Finally, make a power mapping with the obtained $k$'s to re-estimate the shower axis (location with maximum power) (see Figure~\ref{fig:findks:reconstruction}), and return to Step~\ref{algo:kfinding:grid} for another iteration. -\end{enumerate} -\vspace*{2pt} - -Here, Step~\ref{algo:kfinding:optimisation} has been implemented by summing each waveform to the reference waveform (see above) with different time delays $kT$ and selecting the $k$ that maximises the amplitude of a waveform combination.\footnote{%<<< - Note that one could use a correlation method instead of a maximum to select the best time delay. - However, for simplicity and ease of computation, this has not been implemented. - Other improvements are discussed in the next Section. -} %>>> -As shown in Figure~\ref{fig:single:k-correlation}, the maximum possible period shift has been limited to $\pm 3\,\mathrm{periods}$. -This corresponds to the maximum expected time delay between two antennas with a clock randomisation up to $30\ns$ for the considered beacon frequency.% -\footnote{ - Figure~\ref{fig:simu:error:periods} shows this is not completely true. - However, overall, it still applies. -} - -\begin{figure}%<<< - \centering - \includegraphics[width=0.8\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.pdf} - \caption{ - Finding the maximum correlation for integer period shifts (best $k=-1$) between two waveforms recording the same (simulated) air shower. - Randomising the antenna clocks up to $30\ns$ and $\fbeacon = 51.53\MHz$ corresponds to at most $3$ periods of time difference between two waveforms. - } - \label{fig:single:k-correlation} -\end{figure}%>>> - - -\begin{figure}%<<< findks - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf} - \caption{ - $k$-finding: optimise the $k$'s by shifting waveforms to find the maximum amplitude obtainable at each point. - } - \label{fig:findks:maxima} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf} - \caption{ - Power measurement with the $k$'s belonging to the overall maximum of the tested amplitudes. - } - \label{fig:findks:reconstruction} - \end{subfigure} - \\ - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf} - \caption{ - $2^\mathrm{nd}$ $k$-finding iteration: - Zoom in on the location in \subref{fig:findks:reconstruction} with the highest amplitude and repeat algorithm. - } - \label{fig:findks:maxima:zoomed} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf} - \caption{ - Power measurement of the new grid. - } - \label{fig:findks:reconstruction:zoomed} - \end{subfigure} - \\ - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf} - \caption{ - $3^\mathrm{rd}$ $k$-finding iteration: - The same set of $k$'s has been found and we stop the algorithm. - } - \label{fig:findks:maxima:zoomed2} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf} - \caption{ - Final power measurement. - } - \label{fig:findks:reconstruction:zoomed2} - \end{subfigure} - \caption{ - Iterative $k$-finding algorithm (see page~\pageref{algo:kfinding} for explanation): - First \subref{fig:findks:maxima}, find the set of period shifts $k$ per point on a grid that returns the highest maximum amplitude (blue cross). - The grid starts as a $8^\circ$ wide shower plane slice at $X=400\,\mathrm{g/cm^2}$, centred at the true shower axis (red cross). - Second \subref{fig:findks:reconstruction}, perform the interferometric reconstruction with this set of period shifts. - Zooming on the maximum power \subref{fig:findks:maxima:zoomed},\subref{fig:findks:reconstruction:zoomed} repeat the steps until the $k$'s are equal between the zoomed grids \subref{fig:findks:maxima:zoomed2},\subref{fig:findks:reconstruction:zoomed2}. - } - \label{fig:findks} -\end{figure}%>>> -% >>> - -\clearpage -%\phantomsection -\section{Strategy / Result} %<<< - -Figure~\ref{fig:grid_power_time_fixes} shows the effect of the various synchronisation stages on both the alignment of the air shower waveforms, and the interferometric power measurement near the true shower axis. -Phase synchronising the antennas gives a small increase in observed power, while further aligning the periods after the optimisation process significantly enhances this power. -\\ - -The initial grid plays an important role here in finding the correct axis. -Due to selecting the highest maximum amplitude, and the process above zooming in aggressively, wrong candidate axes are selected when there is no grid-location sufficiently close to the true axis. -% premature optimisation / degeneracy -Such locations are subject to differences in propagation delays that are in the order of a few beacon periods. -The restriction of the possible delays is therefore important to limit the number of potential axis locations. -\\ -% fall in local extremum, maximum -In this analysis, the initial grid is defined as a very wide $8^\circ$ around the true axis. -As the number of computations scales linearly with the number of grid points ($N = N_x N_y$), it is favourable to minimise the number of grid locations. -Unfortunately, the above process has been observed to fall into local maxima when a too coarse and wide initial grid ($N_x < 13$ at $X=400\,\mathrm{g/cm^2}$) was used while restricting the time delays to $\left| k \right| \leq 3$. -\\ - -% Missing power / wrong k -As visible in the right side of Figure~\ref{fig:grid_power:repair_full}, not all waveforms are in sync after the optimisation. -In this case, the period defects have been resolved incorrectly for two waveforms (see Figure~\ref{fig:simu:error:periods}) due to too stringent limits on the allowable $k$'s. -Looking at Figure~\ref{fig:grid_power:repair_phases}, this was to be predicted since there are two waveforms peaking at $k=4$ from the reference waveform's peak (dashed line). -As a result, the obtained power for the resolved clock defects is slightly less than the obtained power for the true clocks. -\\ - -% directional reconstruction -This does not impede resolving the shower axis. -Figure~\ref{fig:grid_power:axis} shows the power mapping at four different atmospheric depths for the resolved clock defects. -Except for the low power case at $X=800\,\mathrm{g/cm^2}$, the shower axis is found to be $<0.1^\circ$ of the true shower axis. -\\ - -\begin{figure}% fig:simu:error - \centering - %\includegraphics[width=\textwidth]{ZH_simulation/cb_report_measured_antenna_offsets.py.time-amplitudes-missing-k.residuals.pdf} - \includegraphics[width=0.5\textwidth]{ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.residuals.pdf} - \caption{ - Errors in the resolved period defects with respect to the true period defects. - } - \label{fig:simu:error:periods} -\end{figure} - -\begin{figure}%<<< grid power time fixes - %\vspace{-2cm} - \vspace*{-5mm} - \centering - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.zoomed.repair_none.pdf} - \vspace*{-7mm} - \caption{ - Randomised clocks - } - \label{fig:grid_power:repair_none} - \end{subfigure} - %\hfill - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.zoomed.repair_phases.pdf} - \vspace*{-7mm} - \caption{ - Phase synchronisation - } - \label{fig:grid_power:repair_phases} - \end{subfigure} - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.zoomed.repair_full.pdf} - \vspace*{-7mm} - \caption{ - Resolved clocks - } - \label{fig:grid_power:repair_full} - \end{subfigure} - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.zoomed.no_offset.pdf} - \vspace*{-7mm} - \caption{ - True clocks - } - \label{fig:grid_power:no_offset} - \end{subfigure} - \vspace*{-7mm} - \caption{ - Different stages of array synchronisation (unsynchronised, beacon synchronised, $k$-resolved and true clocks) - and - their effect on (\textit{right}) the alignment of the waveforms at the true axis - and (\textit{left}) the interferometric power near the simulation axis (red plus). - The maximum power is indicated by the blue cross. - In the right panes the vertical dashed line indicates the maximum of the reference waveform. - } - \label{fig:grid_power_time_fixes} -\end{figure}%>>> - -\pagebreak -% Future: at multiple depths -Of course, this algorithm must be evaluated at relevant atmospheric depths where the interferometric technique can resolve the air shower. -In this case, after manual inspection, the air shower was found to have \Xmax\ at roughly $400\,\mathrm{g/cm^2}$. -The algorithm is expected to perform as long as a region of strong coherent power is resolved. -This means that with the power in both Figure~\ref{fig:grid_power:axis:X200} and Figure~\ref{fig:grid_power:axis:X600}, the clock defects and air shower should be identified to the same degree. -\\ - -Additionally, since the true period shifts are static per event, evaluating the $k$-finding algorithm at multiple atmospheric depths allows to compare the obtained sets thereof to further minimise any incorrectly resolved period defect. -\\ - -Further improvements to the algorithm are foreseen in both the definition of the initial grid (Step~\ref{algo:kfinding:grid}) and the optimisation of the $k$'s (Step~\ref{algo:kfinding:optimisation}). -For example, the $k$-optimisation step currently sums the full waveform for each $k$ to find the maximum amplitude for each sum. -Instead, the timestamp of the amplitude maxima of each waveform can be compared, directly allowing to compute $k$ from the difference. -\\ - -Finally, from the overlapping traces in Figure~\ref{fig:grid_power:repair_full}, it is easily recognisable that some period defects have been determined incorrectly. -Inspecting Figure~\ref{fig:grid_power:repair_phases}, this was to be expected as there are two waveforms with the peak at $\left|k\right| = 4$ from the reference waveform. -Therefore, either the $k$-optimisation should have been run with a higher limit on the allowable $k$'s, or, preferably, these waveforms must be optimised after the algorithm is finished with a higher maximum $k$. - -\begin{figure}%<<< grid_power:axis:X600 - \vspace*{-5mm} - \centering - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=200\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X200} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=400\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X400} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=600\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X600} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=800\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X800} - \end{subfigure} - \vspace*{-6mm} - \caption{ - Interferometric power for the resolved clocks (from Figure~\ref{fig:grid_power:repair_full}) at four atmospheric depths for an opening angle of $2^\circ$(\textit{left}) and $0.2^\circ$(\textit{right}). - The simulation axis is indicated by the red plus, the maximum power is indicated by the blue cross. - Except for \subref{fig:grid_power:axis:X800} where there is no power, the shower axis is resolved within $0.1^\circ$ of the true shower axis. - } - \label{fig:grid_power:axis} -\end{figure} -% >>> -\end{document} diff --git a/documents/thesis/chapters/single_sine_interferometry.tex.bak b/documents/thesis/chapters/single_sine_interferometry.tex.bak deleted file mode 100644 index 279f6bf..0000000 --- a/documents/thesis/chapters/single_sine_interferometry.tex.bak +++ /dev/null @@ -1,509 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -\documentclass[../thesis.tex]{subfiles} - -\graphicspath{ - {.} - {../../figures/} - {../../../figures/} -} - -\begin{document} -\chapter[Single Sine Synchronisation]{Single Sine Beacon Synchronisation and Radio Interferometry} -\label{sec:single_sine_sync} - -% <<< -As shown in Chapter~\ref{sec:disciplining}, both impulsive and sine beacon signals can synchronise air shower radio detectors to enable the interferometric reconstruction of extensive air showers. -This chapter will focus on using a single sine beacon to synchronise an array due to the simple setup and analysis required for such a beacon. -Additionally, at \gls{Auger}, a public TV-transmitter is broadcasting at $67.25\MHz$. -This poses an opportunity to use a ``free'' beacon to synchronise the radio antennas of \gls{AERA} and \gls{AugerPrime}. -\\ - -Due to the periodicity of sine beacons, the ability to synchronise an array is limited up to the beacon period $T$. -As previously mentioned, the correct periods can be ascertained by choosing a beacon period much longer than the estimated accuracy of another timing mechanism.\footnote{For reference, \gls{GNSS} timing is expected to be below $30\ns$} -Likewise, this can be achieved using the beating of multiple frequencies such as the four frequency setup in \gls{AERA}, amounting to a total period of $>1\us$. -\\ - -In this chapter, a different method of resolving these period mismatches is investigated by recording an impulsive signal in combination with the sine beacon. -Figure~\ref{fig:beacon_sync:sine} shows the steps of synchronisation using this combination. -The extra signal declares a shared time $\tTrueEmit$ that is common to the stations, after which the periods can be counted. -Note that the period mismatch term $\Delta k_{ij}$ in \eqref{eq:synchro_mismatch_clocks_periodic} will be referenced throughout this Chapter as $k$ since we can take station $i$ as reference ($k_i =0$). -\\ - -\begin{figure}%<<< - \centering - \begin{subfigure}[t]{0.47\textwidth} - \includegraphics[width=\textwidth]{beacon/beacon_sync.pdf} - \caption{ - Phase alignment - } - \label{fig:beacon_sync:syntonised} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.47\textwidth} - \includegraphics[width=\textwidth]{beacon/beacon_sync_period.pdf} - \caption{ - Period alignment - } - \label{fig:beacon_sync:period_alignment} - \end{subfigure} - \caption{ - Synchronisation scheme for two antennas using a single sine wave beacon (orange) and an impulsive signal (blue). - Vertical dashed lines indicate periods of the sine wave. - \subref{fig:beacon_sync:syntonised} A small time delay $t_\varphi$ is derived from the phase difference of the beacon as measured by the antennas. - \subref{fig:beacon_sync:period_alignment} The period mismatch $k$ is determined from the overlap between the impulsive signals. - %Expecting the impulsive signals to come from the same source, the overlap between the impulsive signals is used to determine the period mismatch $k$. - Note that the impulsive signals do not coincide perfectly due to different propagation delays from the source to the antennas. - } - \label{fig:beacon_sync:sine} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_timing_outline.pdf} -% \caption{ -% Measure two waveforms at different antennas at approximately the same local time (clocks are not synchronised). -% } -% \label{fig:beacon_sync:timing_outline} -% \end{subfigure} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_outline.pdf} -% \caption{ -% The beacon signal is used to remove time differences smaller than the beacon's period. -% The detector clocks are now an unknown amount of periods out of sync. -% } -% \label{fig:beacon_sync:syntonised} -% \end{subfigure} -% \begin{subfigure}{\textwidth} -% \centering -% \includegraphics[width=\textwidth]{beacon/08_beacon_sync_synchronised_period_alignment.pdf} -% \caption{ -% Lifting period degeneracy ($k=n-m=7$ periods) using the optimal overlap between impulsive signals. -% } -% \label{fig:beacon_sync:period_alignment} -% \end{subfigure} -% \caption{ -% Synchronisation scheme for two antennas using a continuous beacon and an impulsive signal, each emitted from a separate transmitter. -% Vertical dashed lines indicate periods of the beacon (orange), -% solid lines indicate the time of the impulsive signal (blue). -% \\ -% \subref{fig:beacon_sync:syntonised}: The beacon allows to resolve a small timing delay ($\Delta \tClockPhase$). -% \\ -% \subref{fig:beacon_sync:period_alignment}: Expecting the impulsive signals to come from the same source, the overlap between the two impulsive signals is used to lift the period degeneracy ($k=n-m$). -% } -% \label{fig:beacon_sync:sine} -\end{figure}%>>> - -% Same transmitter / Static setup -When the beacon transmitter is also used to emit the signal defining $\tTrueEmit$, the number of periods $k$ can be obtained directly from the signal. -However, if this calibration signal is sent from a different location, its time delays differ from the beacon's time delays. -\\ -% Dynamic setup -For static setups, these time delays can be resolved by measuring the involved distances or by taking measurements of the time delays over time. -In dynamic setups, such as for transient signals, the time delays change per event and the distances are not known a priori. -The time delays must therefore be resolved from the information of a single event. -\\ - -% Beacon + Impulsive -> discrete -As shown in Chapter~\ref{sec:beacon:array}, an impulsive signal allows to reconstruct the direction of origin in a single event depending on the timing resolution of the array. -Synchronising the array with a sine beacon, any clock mismatch is discretized into a number of periods $k$. -This allows to improve the reconstruction by iterating the discrete clock mismatches during reconstruction. -\\ -Of course, a limit on the number of periods is required to prevent over-optimisation. -In general, they can be constrained using estimates of the accuracy of other timing mechanisms (see below). -\\ -With a restricted set of allowed period shifts, we can alternate optimising the calibration signal's origin and optimising the set of period time delays of the array. -\\ -% >>> - -%\section{Lifting the Period Degeneracy with an Air Shower}% <<< -% <<<< -% Airshower gives t0 -In the case of radio detection of air showers, the very signal of the air shower itself can be used as the calibration signal. -This falls into the dynamic setup previously mentioned. -The best period defects must thus be recovered from a single event. -\\ -When doing the interferometric analysis for a sine beacon synchronised array, waveforms can only be delayed by an integer amount of periods, thereby giving discrete solutions to maximising the interferometric signal. - -\clearpage -\section{Air Shower simulation} -% simulation of proton E15 on 10x10 antenna -To test the idea of combining a single sine beacon with an air shower, we simulated a set of recordings of a single air shower that also contains a beacon signal. -\footnote{\url{https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction/-/tree/main/airshower_beacon_simulation}} -\\ -The air shower signal was simulated by \acrlong{ZHAireS}\cite{Alvarez-Muniz:2010hbb} on a grid of 10x10 antennas with a spacing of $50\,\mathrm{meters}$. -Each antenna recorded a waveform of $500$ samples with a samplerate of $1\GHz$ for each of the X,Y and Z polarisations. -The air shower itself was generated by a $10^{16}\eV$ proton coming in under an angle of $20^\circ$ from zenith. -%Figure~\ref{fig:single:proton_waveform} shows the earliest and latest waveforms recorded by the array with their true time. -\\ -Figure~\ref{fig:single:proton_grid} shows the maximum electric field measured at each of the antennas. -The ring of antennas with maximum electric fields in the order of $25\uVperm$ at the center of the array is the Cherenkov-ring. -The Cherenkov-ring forms due to the forward beaming of the radio emissions of the airshower. -Outside this ring, the maximum electric field quickly falls with increasing distance to the array core. -As expected for a vertical shower, the projection of the Cherenkov-ring on the ground is roughly circular. -\\ - -%% add beacon -A sine beacon ($\fbeacon = 51.53\MHz$) was introduced at a distance of approximately $75\,\mathrm{km}$ northwest of the array, primarily received in the X polarisation. -The distance between the antenna and the transmitter results in a phase offset with which the beacon is received at each antenna.% -\footnote{%<<< - The beacon's amplitude is also dependent on the distance. Although simulated, this effect has not been incorporated in the analysis as it is negligible for the considered grid and distance to the transmitter. -} %>>> -The beacon signal was recorded over a longer time ($10240\,\mathrm{samples}$), to be able to distinguish the beacon and air shower later in the analysis. -\\ -The final waveform of an antenna (see Figure~\ref{fig:single:proton}) was then constructed by adding its beacon and air shower waveforms and band-passing with relevant frequencies (here $30$ and $80\MHz$ are taken by default). -Of course, a gaussian white noise component is introduced to the waveform as a simple noise model (see Figure~\ref{fig:sine:snr_time_resolution} for a treatise on the timing accuracy of a sine beacon). -\\ - -\begin{figure}% <<< - \centering - \includegraphics[width=0.5\textwidth]{ZH_simulation/array_geometry_shower_amplitude.pdf} - \caption{ - The 10x10 antenna grid used for recording the air shower. - Colours indicate the maximum electric field recorded at the antenna. - The Cherenkov-ring is clearly visible as a circle of radius $100\metre$ centered at $(0,0)$. - } - \label{fig:single:proton_grid} -\end{figure}% >>> -\begin{figure}% <<< - \begin{subfigure}[t]{0.49\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.no_mask.zoomed.pdf} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.49\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.fourier.pdf} - \end{subfigure} - \caption{ - \textit{Left:} - %\textit{Right:} - %Example of the earliest and latest recorded air shower waveforms in the array as simulated by ZHAireS - Excerpt of a fully simulated waveform ($N=10240\,\mathrm{samples}$) (blue) containing the air shower (a $10^{16}\eV$~proton), the beacon (green, $\fbeacon = 51.53\MHz$) and noise. - The part of the waveform between the vertical dashed lines is considered airshower signal and masked before measuring the beacon parameters. - \textit{Right:} - Fourier spectra of the waveforms. - The green dashed lines indicate the measured beacon parameters. - The amplitude spectrum clearly shows a strong component at roughly $50\MHz$. - The phase spectrum of the original waveform shows the typical behaviour for a short pulse. - } - \label{fig:single:proton} -\end{figure}% >>> - -% randomise clocks -After the creation of the antenna waveforms, the clocks are randomised by sampling a gaussian distribution with a standard deviation of $30\ns$. % (see Figure~\ref{fig:simu:sine:periods:repair_none}). -At a beacon period of $\sim 20\ns$, this ensures that multiple antennas have clock defects of at least one beacon period. -This in turn allows for synchronisation mismatches of more than one beacon period. -Moreover, it falls in the order of magnitude of clock defects that were found in \gls{AERA}\cite{PierreAuger:2015aqe}. -\\ - -% separate air shower from beacon -To correctly recover the beacon from the waveform, it must be separated from the air shower. -Typically, a trigger sets the location of the airshower signal in the waveform. -In our case, the airshower signal is located at $t=500\ns$ (see Figure~\ref{fig:single:proton}). -Since the beacon can be recorded for much longer than the air shower signal, we mask a window of $500$ samples around the maximum of the trace as the air shower's signal. -% measure beacon phase, remove distance phase -The remaining waveform is fed into a \gls{DTFT} \eqref{eq:fourier:dtft} to measure the beacon's phase $\pMeas$ and amplitude. -Note that due to explicitly including a time axis in a \gls{DTFT}, a number of samples can be omitted without introducing artifacts. -\\ -With the obtained beacon parameters, the air shower signal is in turn reconstructed by subtracting the beacon from the full waveform in the time domain. -\\ -The small clock defect $\tClockPhase$ is then finally calculated from the beacon's phase $\pMeas$ by subtracting the phase introduced by the propagation from the beacon transmitter. -\\ - -% introduce air shower -From the above, we now have a set of reconstructed air shower waveforms with corresponding clock defects smaller than one beacon period $T$. -Shifting the waveforms to remove these small clocks defects, we are left with resolving the correct number of periods $k$ per waveform (see Figure~\ref{fig:grid_power:repair_phases}). -\\ -% >>>> -\section{\textit{k}-finding} % <<< - -% unknown origin of air shower signal -Up until now, the shower axis and thus the origin of the air shower signal have not been resolved. -This means that the unknown propagation time delays for the air shower ($\tProp$) affect the alignment of the signals in Figure~\ref{fig:beacon_sync:period_alignment} in addition to the unknown clock period defects ($k T$). -As such, both this origin and the clock defects have to be determined simultaneously. -\\ -% radio interferometry -If the antennas had been fully synchronised, radio interferometry as introduced in Chapter~\ref{sec:interferometry} can be applied to find the origin of the air shower signal, thus resolving the shower axis. -Still, a (rough) first estimate of the shower axis might be made using this technique or by employing other detection techniques such as those using surface or fluorescence detectors. -% (see Figure~\ref{fig:dynamic-resolve}). -\\ - -On the true shower axis, the waveforms would sum most coherently when the correct $k$'s are used. -Therefore, around the estimated shower axis, we define a grid search to both optimise this sum and the location of the maximum power. -In this process each waveform of the array is allowed to shift by a restricted amount of periods with respect to a reference waveform (taken to be the waveform with the highest maximum). -\\ - -Note that these grids are defined here in shower plane coordinates with $\vec{v}$ the true shower axis and $\vec{B}$ the local magnetic field. -Searching a grid that is slightly misaligned with the true shower axis is expected to give comparable results. -\\ - -The below $k$-finding algorithm is an iterative process where the grid around the shower axis is redefined on each iteration. -Discussion is found in the next Chapter. -\begin{enumerate}[start=1, label={Step \arabic*.}, ref=\arabic*, topsep=6pt, widest={Step 1.}] - \label{algo:kfinding} - \item \label{algo:kfinding:grid} - Define a grid around the estimated shower axis, zooming in on each iteration. - - \item \label{algo:kfinding:optimisation} - $k$-optimisation: per grid point, optimise the $k$'s to maximise the sum of the waveforms (see Figure~\ref{fig:single:k-correlation}). - - \item \label{algo:kfinding:kfinding} - $k$-finding: find the grid point with the maximum overall sum (see Figure~\ref{fig:findks:maxima}) and select its set of $k$'s. - - \item \label{algo:kfinding:break} - Stop when the set of $k$'s is equal to the set of the previous iteration, otherwise continue. - - \item \label{algo:kfinding:powermapping} - Finally, make a power mapping with the obtained $k$'s to re-estimate the shower axis (location with maximum power) (see Figure~\ref{fig:findks:reconstruction}), and return to Step~\ref{algo:kfinding:grid} for another iteration. -\end{enumerate} -\vspace*{2pt} - -Here, Step~\ref{algo:kfinding:optimisation} has been implemented by summing each waveform to the reference waveform (see above) with different time delays $kT$ and selecting the $k$ that maximises the amplitude of a waveform combination.\footnote{%<<< - Note that one could use a correlation method instead of a maximum to select the best time delay. - However, for simplicity and ease of computation, this has not been implemented. - Other improvements are discussed in the next Section. -} %>>> -As shown in Figure~\ref{fig:single:k-correlation}, the maximum possible period shift has been limited to $\pm 3\,\mathrm{periods}$. -This corresponds to the maximum expected time delay between two antennas with a clock randomisation up to $30\ns$ for the considered beacon frequency.% -\footnote{ - Figure~\ref{fig:simu:error:periods} shows this is not completely true. - However, overall, it still applies. -} - -\begin{figure}%<<< - \centering - \includegraphics[width=0.8\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.pdf} - \caption{ - Finding the maximum correlation for integer period shifts (best $k=-1$) between two waveforms recording the same (simulated) air shower. - Randomising the antenna clocks up to $30\ns$ and $\fbeacon = 51.53\MHz$ corresponds to at most $3$ periods of time difference between two waveforms. - } - \label{fig:single:k-correlation} -\end{figure}%>>> - - -\begin{figure}%<<< findks - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf} - \caption{ - $k$-finding: optimise the $k$'s by shifting waveforms to find the maximum amplitude obtainable at each point. - } - \label{fig:findks:maxima} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf} - \caption{ - Power measurement with the $k$'s belonging to the overall maximum of the tested amplitudes. - } - \label{fig:findks:reconstruction} - \end{subfigure} - \\ - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf} - \caption{ - $2^\mathrm{nd}$ $k$-finding iteration: - Zoom in on the location in \subref{fig:findks:reconstruction} with the highest amplitude and repeat algorithm. - } - \label{fig:findks:maxima:zoomed} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf} - \caption{ - Power measurement of the new grid. - } - \label{fig:findks:reconstruction:zoomed} - \end{subfigure} - \\ - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf} - \caption{ - $3^\mathrm{rd}$ $k$-finding iteration: - The same set of $k$'s has been found and we stop the algorithm. - } - \label{fig:findks:maxima:zoomed2} - \end{subfigure} - \hfill - \begin{subfigure}[t]{0.45\textwidth} - \includegraphics[width=\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf} - \caption{ - Final power measurement. - } - \label{fig:findks:reconstruction:zoomed2} - \end{subfigure} - \caption{ - Iterative $k$-finding algorithm (see page~\pageref{algo:kfinding} for explanation): - First \subref{fig:findks:maxima}, find the set of period shifts $k$ per point on a grid that returns the highest maximum amplitude (blue cross). - The grid starts as a $8^\circ$ wide shower plane slice at $X=400\,\mathrm{g/cm^2}$, centred at the true shower axis (red cross). - Second \subref{fig:findks:reconstruction}, perform the interferometric reconstruction with this set of period shifts. - Zooming on the maximum power \subref{fig:findks:maxima:zoomed},\subref{fig:findks:reconstruction:zoomed} repeat the steps until the $k$'s are equal between the zoomed grids \subref{fig:findks:maxima:zoomed2},\subref{fig:findks:reconstruction:zoomed2}. - } - \label{fig:findks} -\end{figure}%>>> -% >>> - -\clearpage -%\phantomsection -\section{Strategy / Result} %<<< - -Figure~\ref{fig:grid_power_time_fixes} shows the effect of the various synchronisation stages on both the alignment of the air shower waveforms, and the interferometric power measurement near the true shower axis. -Phase synchronising the antennas gives a small increase in observed power, while further aligning the periods after the optimisation process significantly enhances this power. -\\ - -The initial grid plays an important role here in finding the correct axis. -Due to selecting the highest maximum amplitude, and the process above zooming in aggressively, wrong candidate axes are selected when there is no grid-location sufficiently close to the true axis. -% premature optimisation / degeneracy -Such locations are subject to differences in propagation delays that are in the order of a few beacon periods. -The restriction of the possible delays is therefore important to limit the number of potential axis locations. -\\ -% fall in local extremum, maximum -In this analysis, the initial grid is defined as a very wide $8^\circ$ around the true axis. -As the number of computations scales linearly with the number of grid points ($N = N_x N_y$), it is favourable to minimise the number of grid locations. -Unfortunately, the above process has been observed to fall into local maxima when a too coarse and wide initial grid ($N_x < 13$ at $X=400\,\mathrm{g/cm^2}$) was used while restricting the time delays to $\left| k \right| \leq 3$. -\\ - -% Missing power / wrong k -As visible in the right side of Figure~\ref{fig:grid_power:repair_full}, not all waveforms are in sync after the optimisation. -In this case, the period defects have been resolved incorrectly for two waveforms (see Figure~\ref{fig:simu:error:periods}) due to too stringent limits on the allowable $k$'s. -Looking at Figure~\ref{fig:grid_power:repair_phases}, this was to be predicted since there are two waveforms peaking at $k=4$ from the reference waveform's peak (dashed line). -As a result, the obtained power for the resolved clock defects is slightly less than the obtained power for the true clocks. -\\ - -% directional reconstruction -This does not impede resolving the shower axis. -Figure~\ref{fig:grid_power:axis} shows the power mapping at four different atmospheric depths for the resolved clock defects. -Except for the low power case at $X=800\,\mathrm{g/cm^2}$, the shower axis is found to be $<0.1^\circ$ of the true shower axis. -\\ - -\begin{figure}% fig:simu:error - \centering - %\includegraphics[width=\textwidth]{ZH_simulation/cb_report_measured_antenna_offsets.py.time-amplitudes-missing-k.residuals.pdf} - \includegraphics[width=0.5\textwidth]{ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.residuals.pdf} - \caption{ - Errors in the resolved period defects with respect to the true period defects. - } - \label{fig:simu:error:periods} -\end{figure} - -\begin{figure}%<<< grid power time fixes - %\vspace{-2cm} - \vspace*{-5mm} - \centering - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.zoomed.repair_none.pdf} - \vspace*{-7mm} - \caption{ - Randomised clocks - } - \label{fig:grid_power:repair_none} - \end{subfigure} - %\hfill - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.zoomed.repair_phases.pdf} - \vspace*{-7mm} - \caption{ - Phase synchronisation - } - \label{fig:grid_power:repair_phases} - \end{subfigure} - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.zoomed.repair_full.pdf} - \vspace*{-7mm} - \caption{ - Resolved clocks - } - \label{fig:grid_power:repair_full} - \end{subfigure} - \\ - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.zoomed.no_offset.pdf} - \vspace*{-7mm} - \caption{ - True clocks - } - \label{fig:grid_power:no_offset} - \end{subfigure} - \vspace*{-7mm} - \caption{ - Different stages of array synchronisation (unsynchronised, beacon synchronised, $k$-resolved and true clocks) - and - their effect on (\textit{right}) the alignment of the waveforms at the true axis - and (\textit{left}) the interferometric power near the simulation axis (red plus). - The maximum power is indicated by the blue cross. - In the right panes the vertical dashed line indicates the maximum of the reference waveform. - } - \label{fig:grid_power_time_fixes} -\end{figure}%>>> - -\pagebreak -% Future: at multiple depths -Of course, this algorithm must be evaluated at relevant atmospheric depths where the interferometric technique can resolve the air shower. -In this case, after manual inspection, the air shower was found to have \Xmax\ at roughly $400\,\mathrm{g/cm^2}$. -The algorithm is expected to perform as long as a region of strong coherent power is resolved. -This means that with the power in both Figure~\ref{fig:grid_power:axis:X200} and Figure~\ref{fig:grid_power:axis:X600}, the clock defects and air shower should be identified to the same degree. -\\ - -Additionally, since the true period shifts are static per event, evaluating the $k$-finding algorithm at multiple atmospheric depths allows to compare the obtained sets thereof to further minimise any incorrectly resolved period defect. -\\ - -Further improvements to the algorithm are foreseen in both the definition of the initial grid (Step~\ref{algo:kfinding:grid}) and the optimisation of the $k$'s (Step~\ref{algo:kfinding:optimisation}). -For example, the $k$-optimisation step currently sums the full waveform for each $k$ to find the maximum amplitude for each sum. -Instead, the timestamp of the amplitude maxima of each waveform can be compared, directly allowing to compute $k$ from the difference. -\\ - -Finally, from the overlapping traces in Figure~\ref{fig:grid_power:repair_full}, it is easily recognisable that some period defects have been determined incorrectly. -Inspecting Figure~\ref{fig:grid_power:repair_phases}, this was to be expected as there are two waveforms with the peak at $\left|k\right| = 4$ from the reference waveform. -Therefore, either the $k$-optimisation should have been run with a higher limit on the allowable $k$'s, or, preferably, these waveforms must be optimised after the algorithm is finished with a higher maximum $k$. - -\begin{figure}%<<< grid_power:axis:X600 - \vspace*{-5mm} - \centering - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=200\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X200} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=400\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X400} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=600\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X600} - \end{subfigure} - \begin{subfigure}[t]{1\textwidth} - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale2d.pdf} - \hfill - \includegraphics[width=0.47\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale02d.pdf} - \vspace*{-7mm} - \caption{$X=800\,\mathrm{g/cm^2}$} - \label{fig:grid_power:axis:X800} - \end{subfigure} - \vspace*{-6mm} - \caption{ - Interferometric power for the resolved clocks (from Figure~\ref{fig:grid_power:repair_full}) at four atmospheric depths for an opening angle of $2^\circ$(\textit{left}) and $0.2^\circ$(\textit{right}). - The simulation axis is indicated by the red plus, the maximum power is indicated by the blue cross. - Except for \subref{fig:grid_power:axis:X800} where there is no power, the shower axis is resolved within $0.1^\circ$ of the true shower axis. - } - \label{fig:grid_power:axis} -\end{figure} -% >>> -\end{document} diff --git a/documents/thesis/chapters/titlepage.tex b/documents/thesis/chapters/titlepage.tex index 769401c..cc5e536 100644 --- a/documents/thesis/chapters/titlepage.tex +++ b/documents/thesis/chapters/titlepage.tex @@ -6,18 +6,19 @@ {../../../figures/} } - -%\newcommand{\email}[1]{\href{mailto:#1}{#1}} -%\def\thesisauthoremailraw{} -%\def\thesissupervisoremailraw{} -%\def\thesissecondreaderemailraw{} +% Thesis titling +\def\thesistitle{Enhancing Timing Accuracy \\[0.3cm] in Air Shower Radio Detectors} +\def\thesissubtitle{} +\def\thesisauthorfirst{E.T.} +\def\thesisauthorsecond{de Boone} +\def\thesissupervisorfirst{dr. Harm} +\def\thesissupervisorsecond{Schoorlemmer} +\def\thesissecondreaderfirst{dr. Katherine} +\def\thesissecondreadersecond{Mulrey} +\def\thesisdate{2022-11} +\definecolor{radboud}{RGB}{227, 0, 11} \begin{document} -\definecolor{radboud}{RGB}{227, 0, 11} -\newcommand{\titlingemail}[1]{} -\def\thesisauthoremail{\titlingemail{\thesisauthoremailraw}} -\def\thesissupervisoremail{\titlingemail{\thesissupervisoremailraw}} -\def\thesissecondreaderemail{\titlingemail{\thesissecondreaderemailraw}} \begin{titlepage} \thispagestyle{empty} \newcommand{\HRule}{\rule{\linewidth}{0.5mm}} @@ -29,41 +30,26 @@ \HRule \\[0.4cm] { \huge \bfseries \thesistitle}\\[0.1cm] \textsc{\thesissubtitle}\\ - \HRule \\[0.4cm] + \HRule \\[.5cm] \textsc{\large Master's thesis Physics and Astronomy}\\[.5cm] - \begin{minipage}[t]{0.4\textwidth} + \begin{minipage}{0.4\textwidth} \begin{flushleft} \large \emph{Author:}\\ - \thesisauthorfirst\space \textsc{\thesisauthorsecond}% - \thesisauthoremail + \thesisauthorfirst\space \textsc{\thesisauthorsecond} \end{flushleft} \end{minipage} ~ - \begin{minipage}[t]{0.4\textwidth} + \begin{minipage}{0.4\textwidth} \begin{flushright} \large \emph{Supervisor:} \\ - \thesissupervisorfirst\space \textsc{\thesissupervisorsecond}% - \thesissupervisoremail% - \\[0.4cm] + \thesissupervisorfirst\space \textsc{\thesissupervisorsecond} \\[1em] \emph{Second Reader:} \\ - \thesissecondreaderfirst\space \textsc{\thesissecondreadersecond}% - \thesissecondreaderemail% + \thesissecondreaderfirst\space \textsc{\thesissecondreadersecond} \end{flushright} - \end{minipage}\\[0.4cm] - %\hrule - { - \vfill - %\hrule% - \includegraphics[keepaspectratio, height=65mm, width=\textwidth]{beacon/array_setup_gps_transmitter_cows.png}% - %\hrule% - \vfill - } + \end{minipage}\\[4cm] \vfill - \vspace*{1cm} - %\hrule - {\large \color[gray]{0.3} \thesisdate} - %\hrule + {\large \thesisdate} \clearpage \end{titlepage} \end{document} diff --git a/documents/thesis/preamble.tex b/documents/thesis/preamble.tex index 55846af..c49cf6b 100644 --- a/documents/thesis/preamble.tex +++ b/documents/thesis/preamble.tex @@ -1,10 +1,11 @@ -% vim: fdm=marker fmr=<<<,>>> %% %% Thesis Preamble %% -%% <<< Packages -%% + +%%% +%%% Packages +%%% % For Bibliography \usepackage[sorting=none,natbib=true,citestyle=numeric-comp,backend=bibtex]{biblatex} @@ -23,9 +24,6 @@ \usepackage{caption} \usepackage{subcaption} -\captionsetup{subrefformat=parens} -\usepackage{enumitem} - \usepackage[colorlinks=true]{hyperref} \usepackage{cleveref} \usepackage{grffile} @@ -38,46 +36,39 @@ %\usepackage{listings} \usepackage{csquotes} -\usepackage[defaultlines=3,all]{nowidow} \usepackage[margin=1.0in]{geometry} -\usepackage[nobottomtitles*]{titlesec} +\usepackage[nobottomtitles]{titlesec} \usepackage{subfiles} -%% >>> -\newcommand{\email}[1]{\href{mailto:#1}{#1}} -%% <<< Layout -%% +%%% +%%% Settings +%%% -\titleformat{\chapter}[block] % shape -{\normalfont\bfseries\LARGE\filcenter} % format -{\chaptertitlename\ \thechapter.\\} % label +\titleformat{\chapter}[hang] % shape +{\normalfont\bfseries\huge} % format +{\thechapter.} % label {0.5ex} % sep -{\huge +{ } % before-code -[\vspace{0.5ex}% -{\titlerule[2pt]} +[ ] % after-code -\titlespacing{\chapter}{0pt}{*3}{*3} - \setlength{\parindent}{0cm} -%\DeclareRobustCommand{\thefootnote}{\alph{footnote}} % alphabetic footnote markers - %% Automatic float barriers for section and subsection \let\Oldsection\section \renewcommand{\section}{\FloatBarrier\Oldsection} -%\let\Oldsubsection\subsection -%\renewcommand{\subsection}{\FloatBarrier\Oldsubsection} +\let\Oldsubsection\subsection +\renewcommand{\subsection}{\FloatBarrier\Oldsubsection} %\let\Oldsubsubsection\subsubsection %\renewcommand{\subsubsection}{\FloatBarrier\Oldsubsubsection} -%% >>> -%% <<< Shortcuts -%% +%%% +%%% Shortcuts +%%% \newcommand*{\captionsource}[2]{% \caption[{#1}]{% @@ -87,116 +78,42 @@ }% } -% <<<< Math +% Math \newcommand{\dif}[1]{\mathop{}\!\mathrm{d} #1} \newcommand{\pdif}[1]{\mathop{}\!\mathrm{\partial} #1} \newcommand{\dbyd}[2]{\ensuremath{\mathrm{d}{#1}/\mathrm{d}{#2}}} -\DeclareMathOperator{\Corr}{Corr} -%\DeclareMathOperator{\erf}{erf} -\DeclareMathOperator{\argmax}{argmax} +\newcommand{\Corr}{\operatorname{Corr}} +%\newcommand{\erf}{\operatorname{erf}} \DeclareMathOperator{\arctantwo}{arctan2} -\DeclareRobustCommand{\eexp}[1]{\ensuremath{e^{#1}}} -\DeclareRobustCommand{\expOf}[1]{\ensuremath{\exp{\!\left(#1\right)}}} -\DeclareRobustCommand{\ofOrder}[1]{\ensuremath{\mathcal{O}\left(#1\right)}} -% >>>> -% <<<< Units -\newcommand{\eV}{\text{\,e\kern-0.15exV}} -\newcommand{\MeV}{\text{\,M\!\eV}} -\newcommand{\GeV}{\text{\,G\!\eV}} -\newcommand{\TeV}{\text{\,T\!\kern-0.1ex\eV}} +% Units +\newcommand{\eV}{\text{e\kern-0.15exV}} +\newcommand{\MeV}{\text{M\eV}} +\newcommand{\GeV}{\text{G\eV}} +\newcommand{\TeV}{\text{T\kern-0.1ex\eV}} -\newcommand{\metre}{\text{\,m}} +\newcommand{\ns}{\text{ns}} +\newcommand{\us}{\text{\textmu s}} -\newcommand{\mV}{\text{\,m\kern-0.1exV}} -\newcommand{\uV}{\text{\,\textmu\kern-0.1exV}} - -\newcommand{\uVperm}{\text{\uV\kern-0.2ex/\kern-0.1ex\!\metre}} - -\newcommand{\ns}{\text{\,ns}} -\newcommand{\us}{\text{\,\textmu s}} - -\newcommand{\kHz}{\text{\,kHz}} -\newcommand{\MHz}{\text{\,MHz}} -\newcommand{\GHz}{\text{\,GHz}} -% >>>> -% <<<< Quantities -% Notes: -% \tau is a measured/apparent quantity -% t is true time -% priming is required for moving with the signal / different reference frame +\newcommand{\MHz}{\text{MHz}} +% Quantities \newcommand{\beaconfreq}{\ensuremath{f_\mathrm{beacon}}} -\newcommand{\fbeacon}{\ensuremath{f_\mathrm{beacon}}} +\newcommand{\phase}{\ensuremath{\varphi}} -\newcommand{\Xmax}{\ensuremath{X_\mathrm{max}}} -\newcommand{\phase}{\varphi} % deprecated -\newcommand{\tTime}{t} % deprecated - -%% time variables -\newcommand{\tTrue}{t} -\newcommand{\tMeas}{\tau} -\newcommand{\tRes}{\tTrue_\mathrm{res}} -\newcommand{\tResidual}{\tRes} -\newcommand{\tTrueTrue}{\tTrue_\mathrm{true}} - -\newcommand{\tTrueEmit}{\tTrue_0} -\newcommand{\tTrueArriv}{\tTrueEmit'} -\newcommand{\tMeasArriv}{\tMeas_0} -\newcommand{\tProp}{\tTrue_d} -\newcommand{\tClock}{\tTrue_c} -\newcommand{\tClockPhase}{\ensuremath{\tTrue_\phase}} -\newcommand{\tClockPeriod}{\ensuremath{k T}} - -%% phase variables -\newcommand{\pTrue}{\phi} -\newcommand{\PTrue}{\Phi} -\newcommand{\pMeas}{\varphi} -\newcommand{\pRes}{\pTrue_\mathrm{res}} -\newcommand{\pResidual}{\pRes} -\newcommand{\pTrueTrue}{\pTrue_\mathrm{true}} - -\newcommand{\pTrueEmit}{\pTrue_0} -\newcommand{\pTrueArriv}{\pTrueArriv'} -\newcommand{\pMeasArriv}{\pMeas_0} -\newcommand{\pProp}{\pTrue_d} -\newcommand{\pClock}{\pTrue_c} - -%% >>>> -%% >>> -%% <<< Acronyms -%% +% Names +% Acronyms \newacronym{GNSS}{GNSS}{Global Navigation Satellite System} -\newacronym{EAS}{EAS}{Extensive Air Shower} -\newacronym{UHE}{UHE}{Ultra High Energy} -\newacronym{UHECR}{UHECR}{\acrlong{UHE} Cosmic Ray} -\newacronym{DU}{DU}{Detector Unit} -\newacronym{PPS}{PPS}{Pulse Per Second} - -%% <<<< Names \newacronym{GRAND}{GRAND}{Giant Radio Array for Neutrino Detection} \newacronym{BEACON}{BEACON}{Beamforming Elevated Array for COsmic Neutrinos} -\newacronym{LOFAR}{LOFAR}{Low-Frequency Array} \newacronym{PA}{PA}{Pierre~Auger} \newacronym{PAObs}{PAO}{Pierre~Auger Observatory} -\newacronym{Auger}{Auger}{\acrlong{PAObs}} -\newacronym{AugerPrime}{AugerPrime}{AugerPrime} -\newacronym{AERA}{\textsc{AERA}}{Auger Engineering Radio~Array} +\newacronym{AERA}{AERA}{Auger Engineering Radio Array} -\newacronym{ADC}{\textsc{ADC}}{Analog-to-Digital~Converter} -\newacronym{ZHAireS}{ZHAireS}{ZHAireS} -%% >>>> -%% <<<< Math -\newacronym{DTFT}{\textsc{DTFT}}{Discrete Time Fourier Transform} -\newacronym{DFT}{\textsc{DFT}}{Discrete Fourier Transform} -\newacronym{FFT}{\textsc{FFT}}{Fast Fourier Transform} -\newacronym{FT}{\textsc{FT}}{Fourier Transform} - -\newacronym{RMS}{\textsc{RMS}}{root-mean-square} -\newacronym{SNR}{\textsc{SNR}}{signal-to-noise ratio} - -%% >>>> -%% >>> +\newacronym{DTFT}{DTFT}{Discrete Time Fourier Transform} +\newacronym{DFT}{DFT}{Discrete Fourier Transform} +\newacronym{FFT}{FFT}{Fast Fourier Transform} +\newacronym{FT}{FT}{Fourier Transform} diff --git a/documents/thesis/thesis-final.pdf b/documents/thesis/thesis-final.pdf deleted file mode 100644 index 9c7de1b..0000000 Binary files a/documents/thesis/thesis-final.pdf and /dev/null differ diff --git a/documents/thesis/thesis.tex b/documents/thesis/thesis.tex index 77cd9cb..a40646e 100644 --- a/documents/thesis/thesis.tex +++ b/documents/thesis/thesis.tex @@ -1,31 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%% Document %%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\documentclass[notitlepage,a4paper,12pt]{book} +\documentclass[notitlepage,oneside]{book} \input{preamble.tex} -%% <<<< Thesis titling -%% -\def\thesistitle{Synchronisation Methods for\texorpdfstring{\\[0.3cm]}{ }Air Shower Radio Detectors} -\def\thesissubtitle{} -\def\thesisauthorfirst{Eric Teunis} -\def\thesisauthorsecond{de Boone} -\def\thesisauthoremailraw{ericteunis@deboone.nl} -\def\thesissupervisorfirst{dr. Harm} -\def\thesissupervisorsecond{Schoorlemmer} -\def\thesissupervisoremailraw{}%h.schoorlemmer@science.ru.nl} -\def\thesissecondreaderfirst{dr. Katharine} -\def\thesissecondreadersecond{Mulrey} -\def\thesissecondreaderemailraw{}%k.mulrey@science.ru.nl} -\def\thesisdate{November 2023} -%% >>>> - -\hypersetup{ - pdftitle={\begingroup \def\\{\space}{\thesistitle}\endgroup}, - pdfauthor={\begingroup \def\\{\space}{\thesisauthorfirst\space\thesisauthorsecond<\thesisauthoremailraw>}\endgroup}, - pdfsubject={\begingroup \def\\{\space}{\thesisauthorfirst\space\thesisauthorsecond's Master's thesis}\endgroup}, -} - %% %% Attach resources %% @@ -44,8 +22,6 @@ %% Titlepage \subfile{chapters/titlepage.tex} -\subfile{chapters/colophon.tex} - %% Table of Contents \tableofcontents @@ -55,18 +31,9 @@ %% Introduction \subfile{chapters/introduction.tex} -%% Radio Interferometry -\subfile{chapters/radio_interferometry.tex} - -%% Electric field from airshower to waveform analysis -\subfile{chapters/radio_measurement.tex} - %% Disciplining by Beacon (Simulation) \subfile{chapters/beacon_discipline.tex} -%% Single Sine Synchronisation and Radio Interferometry -\subfile{chapters/single_sine_interferometry.tex} - %% Comparing GNSS system (GRAND experiments) \subfile{chapters/grand_characterisation.tex} @@ -74,14 +41,11 @@ \subfile{chapters/conclusion.tex} % Appendix and Bibliography -\appendix -\subfile{chapters/appendix-supplementary-figures.tex} -\subfile{chapters/appendix-random-phasor.tex} +%\pagebreak[3] +%\phantomsection +%\subfile{appendix.tex} %%% Print Bibliography - -\titlespacing{\chapter}{0pt}{*1}{*2} - \backmatter \phantomsection \addcontentsline{toc}{chapter}{Bibliography} diff --git a/figures/ZH_simulation/array_geometry_shower_amplitude.pdf b/figures/ZH_simulation/array_geometry_shower_amplitude.pdf deleted file mode 100644 index b8ffc65..0000000 Binary files a/figures/ZH_simulation/array_geometry_shower_amplitude.pdf and /dev/null differ diff --git a/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.comparison.pdf b/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.comparison.pdf deleted file mode 100644 index eee07f0..0000000 Binary files a/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.comparison.pdf and /dev/null differ diff --git a/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.residuals.pdf b/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.residuals.pdf deleted file mode 100644 index 1b7a908..0000000 Binary files a/figures/ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-periods.residuals.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf index 20e888d..b087603 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.wrong_maxima.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.wrong_maxima.pdf deleted file mode 100644 index 30609ac..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.wrong_maxima.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf index e47b573..daf4333 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf deleted file mode 100644 index c4d118a..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf index 02bdff3..57b42f1 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf index 61986f6..76c61c5 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf index 98c67fb..b5ab257 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf index 5ab0e29..6e7c01d 100644 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf and b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf deleted file mode 100644 index 3843cc1..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf deleted file mode 100644 index f010a99..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.pdf deleted file mode 100644 index 25b6e05..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.zoomed.peak.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.zoomed.peak.pdf deleted file mode 100644 index 07ad4b0..0000000 Binary files a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i1.kfind.zoomed.peak.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.pdf new file mode 100644 index 0000000..57df860 Binary files /dev/null and b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.zoomed.peak.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.zoomed.peak.pdf new file mode 100644 index 0000000..3dd4c3b Binary files /dev/null and b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i5.loc8.0-2795.4-7816.0.zoomed.peak.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.pdf new file mode 100644 index 0000000..d2ae4fa Binary files /dev/null and b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.pdf differ diff --git a/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.zoomed.peak.pdf b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.zoomed.peak.pdf new file mode 100644 index 0000000..bda1517 Binary files /dev/null and b/figures/ZH_simulation/findks/ca_period_from_shower.py.run0.i99.loc8.0-2795.4-7816.0.zoomed.peak.pdf differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run0.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run0.pdf deleted file mode 100644 index 9990b89..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run0.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run1.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run1.pdf deleted file mode 100644 index 86df500..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run1.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run2.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run2.pdf deleted file mode 100644 index efa3a31..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.maxima.run2.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf deleted file mode 100644 index b303328..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.max_amp.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.power.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.power.pdf deleted file mode 100644 index e83cb3b..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run0.power.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf deleted file mode 100644 index ba95574..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.max_amp.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.power.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.power.pdf deleted file mode 100644 index 82ef2df..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run1.power.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf deleted file mode 100644 index d7b7e0c..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.max_amp.pdf and /dev/null differ diff --git a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.power.pdf b/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.power.pdf deleted file mode 100644 index 728c43c..0000000 Binary files a/figures/ZH_simulation/findks/k=6/ca_period_from_shower.py.reconstruction.run2.power.pdf and /dev/null differ diff --git a/figures/ZH_simulation/first_and_last_simulated_traces.pdf b/figures/ZH_simulation/first_and_last_simulated_traces.pdf deleted file mode 100644 index 8242185..0000000 Binary files a/figures/ZH_simulation/first_and_last_simulated_traces.pdf and /dev/null differ diff --git a/figures/ZH_simulation/signal_to_noise_definition.pdf b/figures/ZH_simulation/signal_to_noise_definition.pdf new file mode 100644 index 0000000..c634435 Binary files /dev/null and b/figures/ZH_simulation/signal_to_noise_definition.pdf differ diff --git a/figures/astroparticle/The_CR_Spectrum_2023.pdf b/figures/astroparticle/The_CR_Spectrum_2023.pdf deleted file mode 100644 index 2a7b33e..0000000 Binary files a/figures/astroparticle/The_CR_Spectrum_2023.pdf and /dev/null differ diff --git a/figures/astroparticle/The_CR_Spectrum_2023.pdf.txt b/figures/astroparticle/The_CR_Spectrum_2023.pdf.txt deleted file mode 100644 index 0e979fe..0000000 --- a/figures/astroparticle/The_CR_Spectrum_2023.pdf.txt +++ /dev/null @@ -1,11 +0,0 @@ -From https://github.com/carmeloevoli/The_CR_Spectrum - -@misc{The_CR_spectrum, - author = {Evoli, Carmelo}, - title = {The Cosmic-Ray Energy Spectrum}, - month = dec, - year = 2020, - publisher = {Zenodo}, - doi = {10.5281/zenodo.4396125}, - url = {https://doi.org/10.5281/zenodo.4396125} -} diff --git a/figures/astroparticle/bk978-0-7503-2344-4ch1f2_hr.jpg.txt b/figures/astroparticle/bk978-0-7503-2344-4ch1f2_hr.jpg.txt index d127050..579ebff 100644 --- a/figures/astroparticle/bk978-0-7503-2344-4ch1f2_hr.jpg.txt +++ b/figures/astroparticle/bk978-0-7503-2344-4ch1f2_hr.jpg.txt @@ -1,8 +1,3 @@ -Also found at https://icecube.wisc.edu/news/research/2016/10/neutrinos-and-gamma-rays-partnership-to-explore-extreme-universe/ - -Image: Juan Antonio Aguilar and Jamie Yang. IceCube/WIPAC - - Figure 1.2 from @incollection{Filipovi2021, doi = {10.1088/2514-3433/ac2256ch1}, diff --git a/figures/astroparticle/cr_flux_PDG_2023.pdf b/figures/astroparticle/cr_flux_PDG_2023.pdf deleted file mode 100644 index 04522a8..0000000 Binary files a/figures/astroparticle/cr_flux_PDG_2023.pdf and /dev/null differ diff --git a/figures/astroparticle/cr_flux_PDG_2023.pdf.txt b/figures/astroparticle/cr_flux_PDG_2023.pdf.txt deleted file mode 100644 index 43d2964..0000000 --- a/figures/astroparticle/cr_flux_PDG_2023.pdf.txt +++ /dev/null @@ -1,19 +0,0 @@ -Figure 30.9: The all-particle spectrum as a function of E (energy-per-nucleus) from air shower [200~measurements [106–119] - -Downloaded from: https://pdg.lbl.gov/2023/web/viewer.html?file=../figures/cosmicray/figures/cr_fig8_AllParticle_21.pdf - -@article{PDG2022, - author = {Particle Data Group and Workman, R L and Burkert, V D and Crede, V and Klempt, E and Thoma, U and Tiator, L and Agashe, K and Aielli, G and Allanach, B C and Amsler, C and Antonelli, M and Aschenauer, E C and Asner, D M and Baer, H and Banerjee, Sw and Barnett, R M and Baudis, L and Bauer, C W and Beatty\, J J and Belousov, V I and Beringer, J and Bettini, A and Biebel, O and Black, K M and Blucher, E and Bonventre, R and Bryzgalov, V V and Buchmuller, O and Bychkov, M A and Cahn, R N and Carena, M and Ceccucci, A and Cerri, A and Chivukula, R Sekhar and Cowan, G and Cranmer, K and Cremonesi, O and D'Ambrosio, G and \Damour, T and de Florian, D and de Gouvêa, A and DeGrand, T and de Jong, P and Demers, S and Dobrescu, B A and D'Onofrio, M and Doser, M and Dreiner, H K and Eerola, P and Egede, U and Eidelman, S and El-Khadra, A X and Ellis, J and Eno, S C and Erler, J and Ezhela, V V and Fetscher, W and Fields, B D and Freitas, A \and Gallagher, H and Gershtein, Y and Gherghetta, T and Gonzalez-Garcia, M C and Goodman, M and Grab, C and Gritsan, A V and Grojean, C and Groom, D E and Grünewald, M and Gurtu, A and Gutsche, T and Haber, H E and Hamel, Matthieu and Hanhart, C and Hashimoto, S and Hayato, Y and Hebecker, A and Heinemeyer, S and Her\nández-Rey, J J and Hikasa, K and Hisano, J and Höcker, A and Holder, J and Hsu, L and Huston, J and Hyodo, T and Ianni, Al and Kado, M and Karliner, M and Katz, U F and Kenzie, M and Khoze, V A and Klein, S R and Krauss, F and Kreps, M and Križan, P and Krusche, B and Kwon, Y and Lahav, O and Laiho, J and Lellouch, \L P and Lesgourgues, J and Liddle, A R and Ligeti, Z and Lin, C-J and Lippmann, C and Liss, T M and Littenberg, L and Lourenço, C and Lugovsky, K S and Lugovsky, S B and Lusiani, A and Makida, Y and Maltoni, F and Mannel, T and Manohar, A V and Marciano, W J and Masoni, A and Matthews, J and Meißner, U-G and Melzer-P\ellmann, I-A and Mikhasenko, M and Miller, D J and Milstead, D and Mitchell, R E and Mönig, K and Molaro, P and Moortgat, F and Moskovic, M and Nakamura, K and Narain, M and Nason, P and Navas, S and Nelles, A and Neubert, M and Nevski, P and Nir, Y and Olive, K A and Patrignani, C and Peacock, J A and Petrov, V A an\d Pianori, E and Pich, A and Piepke, A and Pietropaolo, F and Pomarol, A and Pordes, S and Profumo, S and Quadt, A and Rabbertz, K and Rademacker, J and Raffelt, G and Ramsey-Musolf, M and Ratcliff, B N and Richardson, P and Ringwald, A and Robinson, D J and Roesler, S and Rolli, S and Romaniouk, A and Rosenberg, L J\ and Rosner, J L and Rybka, G and Ryskin, M G and Ryutin, R A and Sakai, Y and Sarkar, S and Sauli, F and Schneider, O and Schönert, S and Scholberg, K and Schwartz, A J and Schwiening, J and Scott, D and Sefkow, F and Seljak, U and Sharma, V and Sharpe, S R and Shiltsev, V and Signorelli, G and Silari, M and Simon, \F and Sjöstrand, T and Skands, P and Skwarnicki, T and Smoot, G F and Soffer, A and Sozzi, M S and Spanier, S and Spiering, C and Stahl, A and Stone, S L and Sumino, Y and Syphers, M J and Takahashi, F and Tanabashi, M and Tanaka, J and Taševský, M and Terao, K and Terashi, K and Terning, J and Thorne, R S and Titov,\ M and Tkachenko, N P and Tovey, D R and Trabelsi, K and Urquijo, P and Valencia, G and Van de Water, R and Varelas, N and Venanzoni, G and Verde, L and Vivarelli, I and Vogel, P and Vogelsang, W and Vorobyev, V and Wakely, S P and Walkowiak, W and Walter, C W and Wands, D and Weinberg, D H and Weinberg, E J and Werm\es, N and White, M and Wiencke, L R and Willocq, S and Wohl, C G and Woody, C L and Yao, W-M and Yokoyama, M and Yoshida, R and Zanderighi, G and Zeller, G P and Zenin, O V and Zhu, R-Y and Zhu, Shi-Lin and Zimmermann, F and Zyla, P A}, - title = "{Review of Particle Physics}", - journal = {Progress of Theoretical and Experimental Physics}, - volume = {2022}, - number = {8}, - year = {2022}, - month = {08}, - abstract = "{The Review summarizes much of particle physics and cosmology. Using data from previous editions, plus 2,143 new measurements from 709 papers, we list, evaluate, and average measured properties of gauge bosons and the recently discovered Higgs boson, leptons, quarks, mesons, and baryons. We summarize s\earches for hypothetical particles such as supersymmetric particles, heavy bosons, axions, dark photons, etc. Particle properties and search limits are listed in Summary Tables. We give numerous tables, figures, formulae, and reviews of topics such as Higgs Boson Physics, Supersymmetry, Grand Unified Theories, Neutri\no Mixing, Dark Energy, Dark Matter, Cosmology, Particle Detectors, Colliders, Probability and Statistics. Among the 120 reviews are many that are new or heavily revised, including a new review on Machine Learning, and one on Spectroscopy of Light Meson Resonances.The Review is divided into two volumes. Volume 1 incl\udes the Summary Tables and 97 review articles. Volume 2 consists of the Particle Listings and contains also 23 reviews that address specific aspects of the data presented in the Listings.The complete Review (both volumes) is published online on the website of the Particle Data Group (pdg.lbl.gov) and in a journal. V\olume 1 is available in print as the PDG Book. A Particle Physics Booklet with the Summary Tables and essential tables, figures, and equations from selected review articles is available in print, as a web version optimized for use on phones, and as an Android app.}", - issn = {2050-3911}, - doi = {10.1093/ptep/ptac097}, - url = {https://doi.org/10.1093/ptep/ptac097}, - note = {083C01}, - eprint = {https://academic.oup.com/ptep/article-pdf/2022/8/083C01/49175539/ptac097.pdf}, -} diff --git a/figures/beacon/Makefile b/figures/beacon/Makefile index e03f109..6d44a4f 100644 --- a/figures/beacon/Makefile +++ b/figures/beacon/Makefile @@ -20,12 +20,6 @@ dist-clean: beacon_spatial_time_difference_setup.pdf: src/beacon_spatial_time_difference_setup.py $< $@ -beacon_sync: \ - src/beacon_sync.py - #beacon_sync.pdf beacon_sync.png \ - # beacon_sync_period.pdf beacon_sync_period.png - $< . - single_beacon: \ sine_beacon.pdf sine_beacon.png \ ttl_beacon.pdf ttl_beacon.png diff --git a/figures/beacon/field/Makefile b/figures/beacon/field/Makefile index bc61312..2401a3c 100644 --- a/figures/beacon/field/Makefile +++ b/figures/beacon/field/Makefile @@ -47,31 +47,20 @@ field_single_center_time_nomax.%: src/beacon_field.py $< --time $@ single-center --max-rms 0 field_three: \ - field_three_left \ - field_three_center \ - # -field_three_left: \ field_three_left_time.pdf field_three_left_time.png \ field_three_left_phase.pdf field_three_left_phase.png \ - field_three_left_time_nomax.pdf field_three_left_time_nomax.png \ - field_three_left_phase_nomax.pdf field_three_left_phase_nomax.png \ - # -field_three_center: \ field_three_center_time.pdf field_three_center_time.png \ field_three_center_phase.pdf field_three_center_phase.png \ + field_three_left_time_nomax.pdf field_three_left_time_nomax.png \ field_three_center_time_nomax.pdf field_three_center_time_nomax.png \ - field_three_center_phase_nomax.pdf field_three_center_phase_nomax.png \ # - field_three_left_time.%: src/beacon_field.py $< --time $@ three-left -field_three_left_time_nomax.%: src/beacon_field.py - $< --time $@ three-left --max-rms 0 field_three_left_phase.%: src/beacon_field.py $< --phase $@ three-left -field_three_left_phase_nomax.%: src/beacon_field.py - $< --phase $@ three-left --max-rms 0 +field_three_left_time_nomax.%: src/beacon_field.py + $< --time $@ three-left --max-rms 0 field_three_center_time.%: src/beacon_field.py $< --time $@ three-center @@ -79,8 +68,8 @@ field_three_center_time_nomax.%: src/beacon_field.py $< --time $@ three-center --max-rms 0 field_three_center_phase.%: src/beacon_field.py $< --phase $@ three-center -field_three_center_phase_nomax.%: src/beacon_field.py - $< --phase $@ three-center --max-rms 0 +field_three_center_time_nomax.%: src/beacon_field.py + $< --time $@ three-center --max-rms 0 field_square: \ diff --git a/figures/beacon/field/src/beacon_field.py b/figures/beacon/field/src/beacon_field.py index 0211d6a..6d33656 100755 --- a/figures/beacon/field/src/beacon_field.py +++ b/figures/beacon/field/src/beacon_field.py @@ -255,20 +255,6 @@ if __name__ == "__main__": args = parser.parse_args() - if False: #specific formatting - from matplotlib import rcParams - #rcParams["text.usetex"] = True - rcParams["font.family"] = "serif" - rcParams["font.size"] = "12" - if True:# small - figsize = (6, 4) - rcParams["font.size"] = "14" # 15 at 6,4 looks fine - elif True: # large - figsize = (9, 6) - rcParams["grid.linestyle"] = 'dotted' - rcParams["figure.figsize"] = figsize - - if args.fname == 'none': args.fname = None @@ -361,10 +347,9 @@ if __name__ == "__main__": kwargs = {} mask = None if plot_phase: - color_label='$\\sqrt{ \\sum_{(i,j)} \\left(\\Delta\\varphi_{ij}(x) - \\Delta \\varphi_{ij}\\right)^2}$ [rad]' - if args.max_rms: - min_val = abs(min(min(val), args.max_rms)) - mask = abs(val) > np.pi + min_val + color_label='$\\sqrt{ \\sum_{(i,j)} \\left(\\Delta\\varphi_{ij}(x) - \\Delta \\varphi_{ij}\\right)^2}$' + min_val = min(val) + mask = abs(val) > np.pi + min_val else: color_label='$\\sqrt{ \\sum_{(i,j)} \\left(\Delta t_{ij}(x) - \\Delta t_{ij}\\right)^2}$ [ns]' val *= 1e9 @@ -392,9 +377,6 @@ if __name__ == "__main__": if isinstance(args.fname, str): args.fname = [args.fname] - fig = plt.gcf() - fig.tight_layout() - for fname in args.fname: plt.savefig(fname) else: diff --git a/figures/beacon/phasor_sum/amplitude_mean.pdf b/figures/beacon/phasor_sum/amplitude_mean.pdf deleted file mode 100644 index a8756e0..0000000 Binary files a/figures/beacon/phasor_sum/amplitude_mean.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/amplitude_sigma.pdf b/figures/beacon/phasor_sum/amplitude_sigma.pdf deleted file mode 100644 index c8b269d..0000000 Binary files a/figures/beacon/phasor_sum/amplitude_sigma.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/expectation_variance.pdf b/figures/beacon/phasor_sum/expectation_variance.pdf deleted file mode 100644 index a85e68f..0000000 Binary files a/figures/beacon/phasor_sum/expectation_variance.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/pdfs-amplitudes.pdf b/figures/beacon/phasor_sum/pdfs-amplitudes.pdf deleted file mode 100644 index b561a2c..0000000 Binary files a/figures/beacon/phasor_sum/pdfs-amplitudes.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/pdfs-phases.pdf b/figures/beacon/phasor_sum/pdfs-phases.pdf deleted file mode 100644 index 9005dba..0000000 Binary files a/figures/beacon/phasor_sum/pdfs-phases.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/pdfs.pdf b/figures/beacon/phasor_sum/pdfs.pdf deleted file mode 100644 index c1b7eb2..0000000 Binary files a/figures/beacon/phasor_sum/pdfs.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/phase_mean.pdf b/figures/beacon/phasor_sum/phase_mean.pdf deleted file mode 100644 index 4136e53..0000000 Binary files a/figures/beacon/phasor_sum/phase_mean.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/phase_sigma.pdf b/figures/beacon/phasor_sum/phase_sigma.pdf deleted file mode 100644 index bd07485..0000000 Binary files a/figures/beacon/phasor_sum/phase_sigma.pdf and /dev/null differ diff --git a/figures/beacon/phasor_sum/timing_accuracy.pdf b/figures/beacon/phasor_sum/timing_accuracy.pdf deleted file mode 100644 index 9e00c1f..0000000 Binary files a/figures/beacon/phasor_sum/timing_accuracy.pdf and /dev/null differ diff --git a/figures/beacon/src/beacon_sync.py b/figures/beacon/src/beacon_sync.py deleted file mode 100755 index d170f2a..0000000 --- a/figures/beacon/src/beacon_sync.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env python3 -# vim: fdm=marker fmr=<<<,>>> - -__doc__ = \ -""" -Two figures showing synchronising on a sine beacon and a pulse. -""" - - -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.gridspec as gridspec -import scipy.fft as ft - -rng = np.random.default_rng() - -def _annotate_width( - ax, name, - x1, x2, y1=None, y2=None, - text_dx=(0,0), - text_kw={}, arrow_kw={} -): - """ - Annotate a width between two points, with both an arrow between - the points, and a text between them. - - Parameters: - ----------- - ax: Axes - the Axes to plot on - name: str - text to put on top of the arrow - x1: float or tuple - (horizontal) location of the first point - x2: float or tuple - (horizontal) location of the first point - y1: float - vertical location of the first point - y2: float - vertical location of the first point - - """ - if hasattr(x1, '__len__'): - if y1 is None: - y1 = x1[1] - x1 = x1[0] - - if hasattr(x2, '__len__'): - if y2 is None: - y2 = x2[1] - x2 = x2[0] - - y1 = 0 if y1 is None else y1 - y2 = y1 if y2 is None else y2 - - default_arrow_kw = dict( - xy = (x1, y1), - xytext = (x2,y2), - arrowprops = dict( - arrowstyle="<->", - shrinkA=False, - shrinkB=False, - ), - ) - - default_text_kw = dict( - va='bottom', - ha='center', - xy=((x1+x2)/2 + text_dx[0], (y1+y2)/2 + text_dx[1]) - ) - - an1 = ax.annotate("", **{**default_arrow_kw, **arrow_kw}) - an2 = ax.annotate(name, **{**default_text_kw, **text_kw}) - - return [an1, an2] - -def main( - f_sine = 0.05153, # GHz - timelength = 80, # ns - samplerate = 1, # GHz - phase_diff = 1.2*np.pi, # rad - t_beacon_offset = 4.4, # ns - ): - - t_sampled = np.arange(0, timelength, 1/samplerate) - t_impulse = np.arange(0, timelength, 1/4 * 1/samplerate) - - beacons = [0.1 * np.cos(2*np.pi*f_sine*(t_sampled - t_beacon_offset) + phase_diff*i) for i in range(2)] - - t_beacon_delay = phase_diff/(2*np.pi*f_sine) - beacon_ticks = np.array([ n/f_sine for n in range(1+int((t_sampled[-1] - t_sampled[0])*f_sine)) ]) - t_beacon_ticks = [ beacon_ticks + t_beacon_offset - i*t_beacon_delay for i in range(2) ] - - def gaussian(x, mu=0, sigma=1 ): - return 1/(sigma*np.sqrt(2*np.pi)) * np.exp(- (x-mu)**2 / sigma**2 ) - - impulse_time_diff = 2.1/f_sine + (1/f_sine - t_beacon_delay) - impulse_func = lambda x, mu=0: gaussian(x, mu, 2) - - impulse_timing = t_beacon_offset + .5/f_sine + np.array([0, impulse_time_diff]) - impulses = [ impulse_func(t_impulse, impulse_time) for impulse_time in impulse_timing ] - - figs = [] - fig_kwargs = {} - tick_kwargs = dict(color='k', alpha=0.2, ls=(0, (3,2))) - arrow_kwargs = dict(arrowprops=dict(arrowstyle="->" )) - arrow_text_kwargs = dict() - arrow_y = 0.12 - - if True: - fig, axes = plt.subplots(2, 1, **{**dict(sharex=True, gridspec_kw=dict(hspace=0)), **fig_kwargs}) - text_dx = (1, 0.005) - - if False: - for _ax in axes: - _ax.spines[:].set_visible(False) - - axes[-1].set_xlabel("Time") - axes[-1].set_xticks([], []) - - axes[0].set_ylabel("Reference") - axes[1].set_ylabel("Antenna") - - for i in range(0, 2): - axes[i].set_yticks([], []) - axes[i].plot(t_impulse, impulses[i]) - axes[i].plot(t_sampled, beacons[i], marker='.') - - # indicate timing of ticks - [axes[i].axvline(tick, **tick_kwargs) for tick in t_beacon_ticks[i] if tick > t_sampled[0] and tick < t_sampled[-1] ] - - # get the first ticks - first_ticks = [ min(ticks) for ticks in t_beacon_ticks ] - first_ticks = [ tick if tick > 0 else tick + 1/f_sine for tick in first_ticks ] - _annotate_width(axes[1], '$t_\\varphi$', first_ticks[0], first_ticks[1], text_dx=text_dx, y1=arrow_y, text_kw=arrow_text_kwargs, arrow_kw=arrow_kwargs) - - figs.append(fig) - - if True: - fig, axes = plt.subplots(2, 1, **{**dict(sharex=True, gridspec_kw=dict(hspace=0)), **fig_kwargs}) - text_dx = (0, 0.005) - - if False: - for _ax in axes: - _ax.spines[:].set_visible(False) - - axes[-1].set_xlabel("Time") - axes[-1].set_xticks([], []) - - if not True: - axes[0].set_ylabel("Reference") - axes[1].set_ylabel("Antenna") - - for i in range(0, 2): - t_delta = (i == 1) * ( t_beacon_delay - 1/f_sine ) - axes[i].set_yticks([], []) - axes[i].plot(t_impulse + t_delta , impulses[i]) - axes[i].plot(t_sampled + t_delta , beacons[i], marker='.') - - # indicate timing of ticks - t_delta = (i == 1) * ( t_beacon_delay - 1/f_sine ) - [axes[i].axvline(tick+t_delta, **tick_kwargs) for tick in t_beacon_ticks[i] if tick > t_sampled[0] and tick < t_sampled[-1] ] - - # get the tick before the impulse - _diffs = np.array([ impulse_timing[i] - t_beacon_ticks[i] for i in range(0,2) ]) - _diffs[_diffs < 0 ] = np.inf # only early ticks - impulse_ticks_idx = np.argmin(abs(_diffs), axis=1) - impulse_ticks = [ t_beacon_ticks[i][idx] + (i==1)*t_delta for i, idx in enumerate(impulse_ticks_idx) ] - - _annotate_width(axes[1], '$kT$', impulse_ticks[0], impulse_ticks[1], text_dx=text_dx, y1=arrow_y, text_kw=arrow_text_kwargs, arrow_kw=arrow_kwargs) - - - figs.append(fig) - - return figs - - -if __name__ == "__main__": - from argparse import ArgumentParser - import os.path as path - - import os - import sys - # Append parent directory to import path so pyfiglib can be found - sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) - import pyfiglib as pfl - - - parser = ArgumentParser(description=__doc__) - parser.add_argument("fname", metavar="path/to/figure[/]", nargs="*", help="Location for generated figure, will append __file__ if a directory. If not supplied, figure is shown.", default=None) - - args = parser.parse_args() - default_extensions = ['pdf', 'png'] - default_names = ['beacon_sync', 'beacon_sync_period'] - - if args.fname == 'none': - args.fname = None - - pfl.rcParams['font.size'] = 20 - pfl.rcParams['figure.figsize'] = (6,4) - pfl.rcParams['figure.constrained_layout.use'] = True - - ### - figs = main() - - ### Save or show figures - if not args.fname: - # empty list, False, None - plt.show() - else: - for i, f in enumerate(figs): - if len(args.fname) == 1 and len(figs) != 1: - for ext in default_extensions: - f.savefig(path.join(args.fname[0], default_names[i]) + "." + ext, transparent=True) - else: - f.savefig(args.fname[i], transparent=True) diff --git a/figures/beacon/time_res_vs_snr_large.pdf b/figures/beacon/time_res_vs_snr_large.pdf deleted file mode 100644 index 7cc0068..0000000 Binary files a/figures/beacon/time_res_vs_snr_large.pdf and /dev/null differ diff --git a/figures/beacon/time_res_vs_snr_small.pdf b/figures/beacon/time_res_vs_snr_small.pdf deleted file mode 100644 index ef77d3c..0000000 Binary files a/figures/beacon/time_res_vs_snr_small.pdf and /dev/null differ diff --git a/figures/fourier/analysed_waveform.pdf b/figures/fourier/analysed_waveform.pdf deleted file mode 100644 index fe496d6..0000000 Binary files a/figures/fourier/analysed_waveform.pdf and /dev/null differ diff --git a/figures/fourier/analysed_waveform.zoomed.pdf b/figures/fourier/analysed_waveform.zoomed.pdf deleted file mode 100644 index 0b00057..0000000 Binary files a/figures/fourier/analysed_waveform.zoomed.pdf and /dev/null differ diff --git a/figures/fourier/signal_to_noise_definition.pdf b/figures/fourier/signal_to_noise_definition.pdf deleted file mode 100644 index b2c828e..0000000 Binary files a/figures/fourier/signal_to_noise_definition.pdf and /dev/null differ diff --git a/figures/fourier/signal_to_noise_vs_timelength.pdf b/figures/fourier/signal_to_noise_vs_timelength.pdf deleted file mode 100644 index 4d4f9bf..0000000 Binary files a/figures/fourier/signal_to_noise_vs_timelength.pdf and /dev/null differ diff --git a/figures/fourier/signal_to_noise_vs_timelength.png b/figures/fourier/signal_to_noise_vs_timelength.png deleted file mode 100644 index e7d37db..0000000 Binary files a/figures/fourier/signal_to_noise_vs_timelength.png and /dev/null differ diff --git a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.large.pdf b/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.large.pdf deleted file mode 100644 index 3b35b0a..0000000 Binary files a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.large.pdf and /dev/null differ diff --git a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.small.pdf b/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.small.pdf deleted file mode 100644 index 03840ac..0000000 Binary files a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+0.small.pdf and /dev/null differ diff --git a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.large.pdf b/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.large.pdf deleted file mode 100644 index c4d8116..0000000 Binary files a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.large.pdf and /dev/null differ diff --git a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.small.pdf b/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.small.pdf deleted file mode 100644 index 59240c5..0000000 Binary files a/figures/fourier/time_residuals/time_residuals_hist_n7.0e+1.small.pdf and /dev/null differ diff --git a/figures/grand/DU/1697110934989.jpeg b/figures/grand/DU/1697110934989.jpeg deleted file mode 100644 index fc50242..0000000 Binary files a/figures/grand/DU/1697110934989.jpeg and /dev/null differ diff --git a/figures/grand/DU/1697110935003.jpeg b/figures/grand/DU/1697110935003.jpeg deleted file mode 100644 index 3aa34ce..0000000 Binary files a/figures/grand/DU/1697110935003.jpeg and /dev/null differ diff --git a/figures/grand/DU/1697110935017.jpeg b/figures/grand/DU/1697110935017.jpeg deleted file mode 100644 index 5ae6f1b..0000000 Binary files a/figures/grand/DU/1697110935017.jpeg and /dev/null differ diff --git a/figures/grand/DU/1697110935029.jpeg b/figures/grand/DU/1697110935029.jpeg deleted file mode 100644 index 8cb4ed0..0000000 Binary files a/figures/grand/DU/1697110935029.jpeg and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.pdf deleted file mode 100644 index 4cae504..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.png b/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.png deleted file mode 100644 index 823ac05..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig2-combi-time-delays.png and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.100.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.100.pdf deleted file mode 100644 index 482e1c6..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.125.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.125.pdf deleted file mode 100644 index e6e4a74..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.150.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.150.pdf deleted file mode 100644 index a1d21d2..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.175.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.175.pdf deleted file mode 100644 index 1d5be9d..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.200.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.200.pdf deleted file mode 100644 index 2d6717b..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.50.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.50.pdf deleted file mode 100644 index 3aa9aff..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.75.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.75.pdf deleted file mode 100644 index f83f801..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig8-histogram.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.100.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.100.pdf deleted file mode 100644 index 080bc3b..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.125.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.125.pdf deleted file mode 100644 index 29252eb..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.150.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.150.pdf deleted file mode 100644 index 6009638..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.175.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.175.pdf deleted file mode 100644 index 813f7a6..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.200.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.200.pdf deleted file mode 100644 index a3c0ae8..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.50.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.50.pdf deleted file mode 100644 index d4c6dd3..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.75.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.75.pdf deleted file mode 100644 index 254377a..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.backward.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.100.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.100.pdf deleted file mode 100644 index 526348a..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.125.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.125.pdf deleted file mode 100644 index 0428805..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.150.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.150.pdf deleted file mode 100644 index 6f0c74f..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.175.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.175.pdf deleted file mode 100644 index 904dd77..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.200.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.200.pdf deleted file mode 100644 index 7eba69a..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.50.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.50.pdf deleted file mode 100644 index f5094a3..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.75.pdf b/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.75.pdf deleted file mode 100644 index 0a31726..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch1ch2fig9-measurements.forward.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.pdf deleted file mode 100644 index db14b96..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.png b/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.png deleted file mode 100644 index 24015b1..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig2-combi-time-delays.png and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.100.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.100.pdf deleted file mode 100644 index 6ab3134..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.125.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.125.pdf deleted file mode 100644 index 2802e47..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.150.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.150.pdf deleted file mode 100644 index 7596199..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.175.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.175.pdf deleted file mode 100644 index 0547ce2..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.200.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.200.pdf deleted file mode 100644 index f5099f0..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf deleted file mode 100644 index 861b782..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.75.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.75.pdf deleted file mode 100644 index 64bb070..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig8-histogram.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.100.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.100.pdf deleted file mode 100644 index fee09dc..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.125.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.125.pdf deleted file mode 100644 index f0330b8..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.150.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.150.pdf deleted file mode 100644 index a31e90a..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.175.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.175.pdf deleted file mode 100644 index f2a0404..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.200.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.200.pdf deleted file mode 100644 index faf75d5..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf deleted file mode 100644 index 8c33a41..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.75.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.75.pdf deleted file mode 100644 index 3108622..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.backward.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.100.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.100.pdf deleted file mode 100644 index 677cda8..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.100.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.125.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.125.pdf deleted file mode 100644 index 548358b..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.125.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.150.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.150.pdf deleted file mode 100644 index 0ec103e..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.150.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.175.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.175.pdf deleted file mode 100644 index 64097cb..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.175.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.200.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.200.pdf deleted file mode 100644 index 9030047..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.200.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf deleted file mode 100644 index a0e19d7..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.50.pdf and /dev/null differ diff --git a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.75.pdf b/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.75.pdf deleted file mode 100644 index 64db495..0000000 Binary files a/figures/grand/split-cable/sine-sweep/ch2ch4fig9-measurements.forward.75.pdf and /dev/null differ diff --git a/figures/grand/split-cable/waveform_eid1_ch1ch2.pdf b/figures/grand/split-cable/waveform_eid1_ch1ch2.pdf deleted file mode 100644 index eaaf0b4..0000000 Binary files a/figures/grand/split-cable/waveform_eid1_ch1ch2.pdf and /dev/null differ diff --git a/figures/grand/split-cable/waveform_eid1_ch1ch2_spectrum.pdf b/figures/grand/split-cable/waveform_eid1_ch1ch2_spectrum.pdf deleted file mode 100644 index dc0809a..0000000 Binary files a/figures/grand/split-cable/waveform_eid1_ch1ch2_spectrum.pdf and /dev/null differ diff --git a/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png b/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png deleted file mode 100755 index 1e72d46..0000000 Binary files a/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png and /dev/null differ diff --git a/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png.txt b/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png.txt deleted file mode 100644 index 2bdbd83..0000000 --- a/figures/images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png.txt +++ /dev/null @@ -1,3 +0,0 @@ -https://www.researchgate.net/figure/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov_fig1_319524774 - -Hans O. Klages diff --git a/figures/images/IMG_20220712_164904_checking_gnss.jpg b/figures/images/IMG_20220712_164904_checking_gnss.jpg deleted file mode 100755 index e6654da..0000000 Binary files a/figures/images/IMG_20220712_164904_checking_gnss.jpg and /dev/null differ diff --git a/figures/images/IMG_20220712_164912_grand_DU.jpg b/figures/images/IMG_20220712_164912.jpg similarity index 100% rename from figures/images/IMG_20220712_164912_grand_DU.jpg rename to figures/images/IMG_20220712_164912.jpg diff --git a/figures/images/flir_20220812T114019.jpg b/figures/images/flir_20220812T114019.jpg deleted file mode 100755 index c2ae61a..0000000 Binary files a/figures/images/flir_20220812T114019.jpg and /dev/null differ diff --git a/figures/methods/Makefile b/figures/methods/Makefile deleted file mode 100644 index bc63dc6..0000000 --- a/figures/methods/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -SUBDIRS := $(subst Makefile,,$(wildcard */Makefile)) - -.PHONY: all dist dist-clean $(SUBDIRS) - -all: dist $(SUBDIRS) - -dist: \ - # - -$(SUBDIRS): - @$(MAKE) -C $@ diff --git a/figures/methods/correlation/Makefile b/figures/methods/correlation/Makefile deleted file mode 100644 index 6d4402e..0000000 --- a/figures/methods/correlation/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -.PHONY: all - -all: pdf png - -pdf png : src/correlation_figure.py - $< waveforms.$@ correlation.$@ - -waveforms.pdf correlation.pdf : src/correlation_figure.py - pdf - -waveforms.png correlation.png : src/correlation_figure.py - png diff --git a/figures/methods/correlation/src/correlation_figure.py b/figures/methods/correlation/src/correlation_figure.py deleted file mode 100755 index 0f462b5..0000000 --- a/figures/methods/correlation/src/correlation_figure.py +++ /dev/null @@ -1,233 +0,0 @@ -#!/usr/bin/env python3 -# vim: fdm=marker fmr=<<<,>>> - -__doc__ = \ -""" -Create one/two figures exemplifiying the correlation between waveforms. -""" - - -import numpy as np -import matplotlib.pyplot as plt - -## Correlating function -def my_correlation(in1, template, lags=None, normalise=True): - """ From 11_pulsed_timing """ - template_length = len(template) - in1_length = len(in1) - - if lags is None: - lags = np.arange(-template_length+1, in1_length + 1) - - # do the correlation jig - corrs = np.zeros_like(lags, dtype=float) - for i, l in enumerate(lags): - if l <= 0: # shorten template at the front - in1_start = 0 - template_end = template_length - - template_start = -template_length - l - in1_end = max(0, min(in1_length, -template_start)) # 0 =< l + template_length =< in1_lengt - - elif l > in1_length - template_length: - # shorten template from the back - in1_end = in1_length - template_start = 0 - - in1_start = min(l, in1_length) - template_end = max(0, in1_length - l) - - else: - in1_start = min(l, in1_length) - in1_end = min(in1_start + template_length, in1_length) - - # full template - template_start = 0 - template_end = template_length - - # Slice in1 and template - in1_slice = in1[in1_start:in1_end] - template_slice = template[template_start:template_end] - - corrs[i] = np.dot(in1_slice, template_slice) - - if normalise: - corrs /= np.amax(corrs) - - return corrs, (in1, template, lags) - -## Some Functions -def boxcar(x, x_low, x_high, x2=1): - return np.heaviside(x-x_low, x2) * (1-np.heaviside(x-x_high, x2)) - -def f1(x, x0=0, x1=1, x2=2, x3=3, h=1): - """ triangle with boxcar inbetween """ - if x0 == x1: - slant_up = 0 - else: - norm = (x1-x0) - slant_up = (x-x0)/norm*boxcar(x, x0, x1) - - if x2 == x3: - slant_down = 0 - else: - norm = (x3-x2) - slant_down = (x3-x)/norm * boxcar(x, x2, x3) - - y = h*(slant_up + slant_down + boxcar(x, x1, x2)) - - return y - -def triangle(x, x0=0, w=1, h=1): - x2 = x1 = x0 - x0 = x1 - w - x3 = x1 + 2 - return f1(x, x0, x1, x2, x3, h) - -def slanted_boxcar(x, x0=0, slant_width = 1, box_width=1, h=1): - x1 = x0 - box_width/2 - x2 = x0 + box_width/2 - x0 = x1 - slant_width/2 - x3 = x2 + slant_width/2 - - return f1(x, x0, x1, x2, x3, h) - -def sine(x, x0=0, x1=1, n_periods=0.5, phase=0): - L = x1-x0 - - return np.sin(2*np.pi* x * n_periods/L + phase)*boxcar(x, x0, x1) - -def f2(x, x0=0, x1=2, h=1): - """ logarithm """ - return h*np.log(1+x-x0)*boxcar(x, x0, x1) - -## Figures -def plot_waveform(y, x=None, ax=None, fig_kwargs={}, **line_kwargs): - if ax is None: - fig, ax = plt.subplots(**fig_kwargs) - if x is not None: - ax.set_xlabel("Time") - else: - ax.set_xlabel("Sample no.") - ax.set_ylabel("Amplitude") - - if x is not None: - y, x = x, y - else: - x = np.arange(0, len(y)) - - ax.plot(x, y, **line_kwargs) - - return ax - -def correlation_figure(y1, y2, lags=None, lag_dt=1, ax=None, fig_kwargs={}, **line_kwargs): - """ figure """ - if ax is None: - fig, ax = plt.subplots(**fig_kwargs) - - ax.set_xlabel("Delay [samples]") - ax.set_ylabel("Normalised Correlation") - - corrs, (_, __, lags) = my_correlation(y1, y2, lags=lags, normalise=True) - - ax.plot(lag_dt * lags, corrs, **line_kwargs) - - return ax, (corrs, lags) - - -def main(N_x = 1e4, x_delay=5, separate_figures=True, fig_kwargs={}): - - x = np.linspace(-2, 8, int(N_x)) - - y1 = slanted_boxcar(x, x0=0, slant_width=0, box_width=3) + 1/4*sine(x, x0=-3/2, x1=3/2, phase=np.pi/2) - y2 = slanted_boxcar(x, x0=0+x_delay, slant_width=1, box_width=0) - - - if not separate_figures: - fig, axs = plt.subplots(2,1, **fig_kwargs) - else: - axs = (None, None) - figs = [] - - if True: - line_kwargs = dict(alpha=0.7) - ax = plot_waveform(x, y1, ax=axs[0], label="Waveform 1", fig_kwargs=fig_kwargs) - plot_waveform(x, y2, ax=ax, label="Waveform 2") - - ax.set_xlabel("Time") - ax.set_ylabel("Amplitude") - - ax.grid() - - ax.get_figure().tight_layout() - - figs.append(ax.get_figure()) - - - if True: - lag_dt = x[1] - x[0] - - ax2, (corrs, lags) = correlation_figure(y2, y1, ax=axs[1], lag_dt=lag_dt, fig_kwargs=fig_kwargs) - ax2.grid() - - ax2.set_xlabel("Delay") - ax2.set_ylabel("Normalised Correlation") - - best_lag_idx = np.argmax(corrs) - best_lag_x = lags[best_lag_idx] * lag_dt - - if True: - wx = 4 - ax2.set_xlim(x_delay - wx, x_delay + wx) - - ax2.axvline(best_lag_x, ls='dashed', alpha=0.7, color='r') - ax2.get_figure().tight_layout() - figs.append(ax2.get_figure()) - - if not separate_figures: - return fig - else: - return figs - -if __name__ == "__main__": - from argparse import ArgumentParser - import os.path as path - - import os - import sys - # Append parent directory to import path so pyfiglib can be found - sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))) - import pyfiglib as pfl - - - parser = ArgumentParser(description=__doc__) - parser.add_argument("fname", metavar="path/to/figure[/]", nargs="*", help="Location for generated figure, will append __file__ if a directory. If not supplied, figure is shown.", default=os.getcwd()) - - args = parser.parse_args() - default_extensions = ['.pdf', '.png'] - default_names = ['waveforms', 'correlation'] - - if args.fname == 'none': - args.fname = None - - pfl.rcParams['font.size'] *= 1.5 - - ### - figs = main(separate_figures=True, fig_kwargs=dict(figsize=(6,4))) - - ### Save or show figures - if not args.fname: - # empty list, False, None - plt.show() - else: - - for i, f in enumerate(figs): - f.tight_layout() - - if len(args.fname) == 1 and len(figs) != 1: - for ext in default_extensions: - f.savefig(path.join(args.fname[0], default_names[i]) + "." + ext, transparent=True) - else: - f.savefig(args.fname[i], transparent=True) - - diff --git a/figures/methods/fourier/Makefile b/figures/methods/fourier/Makefile deleted file mode 100644 index 08b283f..0000000 --- a/figures/methods/fourier/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -.PHONY: all - -all: waveforms.pdf - -.PHONY: clean -clean: - @rm -v waveforms.* - @rm -v spectrum.* - -waveforms.% spectrum.% : src/fourier_figure.py - $< . diff --git a/figures/methods/fourier/spectrum.pdf b/figures/methods/fourier/spectrum.pdf deleted file mode 100644 index 0bce226..0000000 Binary files a/figures/methods/fourier/spectrum.pdf and /dev/null differ diff --git a/figures/methods/fourier/src/fourier_figure.py b/figures/methods/fourier/src/fourier_figure.py deleted file mode 100755 index 8ee9ab8..0000000 --- a/figures/methods/fourier/src/fourier_figure.py +++ /dev/null @@ -1,228 +0,0 @@ -#!/usr/bin/env python3 -# vim: fdm=marker fmr=<<<,>>> - -__doc__ = \ -""" -Create one/two figures exemplifiying the fourier transform of noisy sine wave. -""" - - -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.gridspec as gridspec -import scipy.fft as ft - -rng = np.random.default_rng() - -def fft_spectrum( signal, sample_rate, fft=None, freq=None): - N_samples = len(signal) - real_signal = np.isrealobj(signal) - - if fft is None: - if real_signal: - fft = ft.rfft - freq = ft.rfftfreq - else: - fft = ft.fft - freq = ft.fftfreq - - if freq is None: - freq = ft.fftfreq - - spectrum = fft(signal) / len(signal) - if real_signal: - spectrum *= 2 - freqs = freq(N_samples, 1/sample_rate) - - return spectrum, freqs - -def dtft_spectrum(signal, time, freqs): - freqtime = np.outer(freqs, time) - - # determine all coefficients in one go - c_k = 2*np.cos(2*np.pi*freqtime) / len(signal) - s_k = -2*np.sin(2*np.pi*freqtime) / len(signal) - - # dot product gives the dtft - result = np.dot(c_k, signal) + 1j*np.dot(s_k, signal) - - return result, freqs - -## From https: -def multiple_formatter(denominator=2, number=np.pi, latex='\pi'): - def gcd(a, b): - while b: - a, b = b, a%b - return a - - def _multiple_formatter(x, pos): - den = denominator - num = int(np.rint(den*x/number)) - com = gcd(num,den) - (num,den) = (int(num/com),int(den/com)) - if den==1: - if num==0: - return r'$0$' - if num==1: - return r'$%s$'%latex - elif num==-1: - return r'$-%s$'%latex - else: - return r'$%s%s$'%(num,latex) - else: - if num==1: - return r'$\frac{%s}{%s}$'%(latex,den) - elif num==-1: - return r'$\frac{-%s}{%s}$'%(latex,den) - else: - return r'$\frac{%s%s}{%s}$'%(num,latex,den) - return _multiple_formatter -# - -def phase_plot(ax, phase_on_xaxis=False, limits=(-1*np.pi, +1*np.pi), major_ticks_div=1, minor_ticks_div=4): - set_label = ax.set_ylabel - set_lims = ax.set_ylim - axis = ax.yaxis - if phase_on_xaxis: - set_label = ax.set_xlabel - set_lims = ax.set_ylim - axis = ax.xaxis - - set_label("Phase") - if limits is not None: - set_lims(*limits) - ax.margins(y=0.2) - - if major_ticks_div: - axis.set_major_locator(plt.MultipleLocator(np.pi / major_ticks_div)) - if minor_ticks_div: - axis.set_minor_locator(plt.MultipleLocator(np.pi / minor_ticks_div)) - axis.set_major_formatter(plt.FuncFormatter(multiple_formatter())) - - return ax - -def main( - f_sine=0.05153, # GHz - noise_sigma = 0.5, - sine_amplitude = 1, - phase=0.4, - ): - - t_fine = np.linspace(0, 200, 500) # ns - t_sampled = np.linspace(0, 200, 50) # ns - sine_fine = sine_amplitude * np.cos( 2*np.pi * f_sine * t_fine + phase) - - sine_sampled = sine_amplitude * np.cos( 2*np.pi * f_sine * t_sampled + phase) - combined = noise_sigma*rng.normal(size=len(sine_sampled)) + sine_sampled - - figs = [] - # time domain - if True: - fig, ax = plt.subplots() - ax.set_xlabel("Time [ns]") - ax.set_ylabel("Amplitude") - - ax.plot(t_fine, sine_fine, label="Clean Signal") - ax.plot(t_sampled, combined, label="+ Noise", marker='o') - - ax.legend() - ax.grid() - - figs.append(ax.get_figure()) - - # frequency domain - if True: - fft_spec, fft_freqs = fft_spectrum(combined, 1/(t_sampled[1] - t_sampled[0])) - - dtft_freqs = np.linspace(fft_freqs[0], fft_freqs[-1], 500) - - dtft_spec, dtft_freqs = dtft_spectrum(combined, t_sampled, dtft_freqs) - - fig2 = plt.figure() - gs = gridspec.GridSpec(2, 1, figure=fig2, height_ratios=[3,1], hspace=0) - - ax1 = fig2.add_subplot(gs[:-1, -1]) - ax2 = fig2.add_subplot(gs[-1, -1], sharex=ax1) - - axes = np.array([ax1, ax2]) - - ax2.set_xlabel("Frequency [GHz]") - if True: - dtft_freqs *= 1e3 - fft_freqs *= 1e3 - f_sine *= 1e3 - ax2.set_xlabel("Frequency [MHz]") - - ax1.xaxis.tick_top() - [label.set_visible(False) for label in ax1.get_xticklabels()] - - - # indicate f_sine - for ax in axes: - ax.axvline(f_sine, label="$f_\mathrm{sin}$", ls='dashed', color='red') - - # plot amplitudes - ax1.set_ylabel("Amplitude") - ax1.set_ylim(0, None) - ax1.yaxis.get_major_ticks()[0].set_visible(False)# suppress 0.0 - ax1.grid() - ax1.plot(fft_freqs, np.abs(fft_spec), marker='o', label='DFT') - ax1.plot(dtft_freqs, np.sqrt(np.abs(dtft_spec)**2), label='DTFT') - - ax1.legend() - - # plot phases - phase_plot(ax2, limits=[-1.1*np.pi, +1.1*np.pi]) - ax2.grid() - - ax2.plot(fft_freqs, np.angle(fft_spec), marker='o', label='DFT') - ax2.plot(dtft_freqs, np.angle(dtft_spec), label='DTFT') - - figs.append(fig2) - - return figs - -if __name__ == "__main__": - from argparse import ArgumentParser - import os.path as path - - import os - import sys - # Append parent directory to import path so pyfiglib can be found - sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))) - import pyfiglib as pfl - - - parser = ArgumentParser(description=__doc__) - parser.add_argument("fname", metavar="path/to/figure[/]", nargs="*", help="Location for generated figure, will append __file__ if a directory. If not supplied, figure is shown.", default=os.getcwd()) - - args = parser.parse_args() - default_extensions = ['pdf', 'png'] - default_names = ['waveforms', 'spectrum'] - - if args.fname == 'none': - args.fname = None - - pfl.rcParams['font.size'] = 20 - pfl.rcParams['figure.figsize'] = (8,6) - pfl.rcParams['figure.constrained_layout.use'] = True - - ### - figs = main() - - ### Save or show figures - if not args.fname: - # empty list, False, None - plt.show() - else: - - for i, f in enumerate(figs): - - if len(args.fname) == 1 and len(figs) != 1: - for ext in default_extensions: - f.savefig(path.join(args.fname[0], default_names[i]) + "." + ext, transparent=True) - else: - f.savefig(args.fname[i], transparent=True) - - - diff --git a/figures/methods/fourier/waveforms.pdf b/figures/methods/fourier/waveforms.pdf deleted file mode 100644 index c6b64f4..0000000 Binary files a/figures/methods/fourier/waveforms.pdf and /dev/null differ diff --git a/figures/pulse/11_hilbert_timing_interpolation_template.pdf b/figures/pulse/11_hilbert_timing_interpolation_template.pdf new file mode 100644 index 0000000..03b295a Binary files /dev/null and b/figures/pulse/11_hilbert_timing_interpolation_template.pdf differ diff --git a/figures/pulse/antenna_signal_to_noise_6.pdf b/figures/pulse/antenna_signal_to_noise_6.pdf new file mode 100644 index 0000000..bfe21d0 Binary files /dev/null and b/figures/pulse/antenna_signal_to_noise_6.pdf differ diff --git a/figures/pulse/antenna_signals_tdt0.2.pdf b/figures/pulse/antenna_signals_tdt0.2.pdf deleted file mode 100644 index 3c2d324..0000000 Binary files a/figures/pulse/antenna_signals_tdt0.2.pdf and /dev/null differ diff --git a/figures/pulse/antenna_signals_tdt0.2_zoom.pdf b/figures/pulse/antenna_signals_tdt0.2_zoom.pdf deleted file mode 100644 index e54df14..0000000 Binary files a/figures/pulse/antenna_signals_tdt0.2_zoom.pdf and /dev/null differ diff --git a/figures/pulse/correlation_tdt0.2.pdf b/figures/pulse/correlation_tdt0.2.pdf deleted file mode 100644 index 418391d..0000000 Binary files a/figures/pulse/correlation_tdt0.2.pdf and /dev/null differ diff --git a/figures/pulse/correlation_tdt0.2_zoom.pdf b/figures/pulse/correlation_tdt0.2_zoom.pdf index 0f5dc10..dbd0b58 100644 Binary files a/figures/pulse/correlation_tdt0.2_zoom.pdf and b/figures/pulse/correlation_tdt0.2_zoom.pdf differ diff --git a/figures/pulse/correlation_tdt02.pdf b/figures/pulse/correlation_tdt02.pdf new file mode 100644 index 0000000..1cd2b5c Binary files /dev/null and b/figures/pulse/correlation_tdt02.pdf differ diff --git a/figures/pulse/filter_response.pdf b/figures/pulse/filter_response.pdf index ab32e53..d62dff8 100644 Binary files a/figures/pulse/filter_response.pdf and b/figures/pulse/filter_response.pdf differ diff --git a/figures/pulse/hilbert_timing.pdf b/figures/pulse/hilbert_timing.pdf deleted file mode 100644 index 46c98ac..0000000 Binary files a/figures/pulse/hilbert_timing.pdf and /dev/null differ diff --git a/figures/pulse/hilbert_timing_interpolation_template.pdf b/figures/pulse/hilbert_timing_interpolation_template.pdf deleted file mode 100644 index 39684fe..0000000 Binary files a/figures/pulse/hilbert_timing_interpolation_template.pdf and /dev/null differ diff --git a/figures/pulse/hilbert_timing_zoom.pdf b/figures/pulse/hilbert_timing_zoom.pdf deleted file mode 100644 index 11cc700..0000000 Binary files a/figures/pulse/hilbert_timing_zoom.pdf and /dev/null differ diff --git a/figures/pulse/interpolation_deltapeak+antenna.pdf b/figures/pulse/interpolation_deltapeak+antenna.pdf deleted file mode 100644 index 86fbdab..0000000 Binary files a/figures/pulse/interpolation_deltapeak+antenna.pdf and /dev/null differ diff --git a/figures/pulse/time_res_vs_snr_multiple_dt.pdf b/figures/pulse/time_res_vs_snr_multiple_dt.pdf index 22bc20f..937b869 100644 Binary files a/figures/pulse/time_res_vs_snr_multiple_dt.pdf and b/figures/pulse/time_res_vs_snr_multiple_dt.pdf differ diff --git a/figures/pulse/time_res_vs_snr_multiple_dt_large.pdf b/figures/pulse/time_res_vs_snr_multiple_dt_large.pdf deleted file mode 100644 index 93e7fe9..0000000 Binary files a/figures/pulse/time_res_vs_snr_multiple_dt_large.pdf and /dev/null differ diff --git a/figures/pulse/time_res_vs_snr_multiple_dt_smaller.pdf b/figures/pulse/time_res_vs_snr_multiple_dt_smaller.pdf deleted file mode 100644 index 9eade28..0000000 Binary files a/figures/pulse/time_res_vs_snr_multiple_dt_smaller.pdf and /dev/null differ diff --git a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.large.pdf b/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.large.pdf deleted file mode 100644 index b01221b..0000000 Binary files a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.large.pdf and /dev/null differ diff --git a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.small.pdf b/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.small.pdf deleted file mode 100644 index 39a183a..0000000 Binary files a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+00.small.pdf and /dev/null differ diff --git a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.large.pdf b/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.large.pdf deleted file mode 100644 index 7d2c09a..0000000 Binary files a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.large.pdf and /dev/null differ diff --git a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.small.pdf b/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.small.pdf deleted file mode 100644 index 81b64d3..0000000 Binary files a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+01.small.pdf and /dev/null differ diff --git a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+02.small.pdf b/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+02.small.pdf deleted file mode 100644 index 04b4963..0000000 Binary files a/figures/pulse/time_residuals/time_residual_hist_tdt1.0e-02_n5.0e+02.small.pdf and /dev/null differ diff --git a/figures/pulse/upsampled_tdt0.2.pdf b/figures/pulse/upsampled_tdt0.2.pdf deleted file mode 100644 index ca0218d..0000000 Binary files a/figures/pulse/upsampled_tdt0.2.pdf and /dev/null differ diff --git a/figures/pulse/upsampled_tdt0.2_zoom.pdf b/figures/pulse/upsampled_tdt0.2_zoom.pdf deleted file mode 100644 index 3255ec6..0000000 Binary files a/figures/pulse/upsampled_tdt0.2_zoom.pdf and /dev/null differ diff --git a/figures/pyfiglib.py b/figures/pyfiglib.py deleted file mode 100644 index 9e824b7..0000000 --- a/figures/pyfiglib.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Various functions usable by multiple scripts -""" -from matplotlib import rcParams -import matplotlib.pyplot as plt -import os.path as path -import numpy as np - -rcParams["text.usetex"] = True -rcParams["font.family"] = "serif" -rcParams["font.size"] = "12" -rcParams["grid.linestyle"] = 'dotted' diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale02d.pdf deleted file mode 100644 index e162a3b..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale2d.pdf deleted file mode 100644 index 9849dec..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X100.repair_full.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale02d.pdf deleted file mode 100644 index b6fd920..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale2d.pdf deleted file mode 100644 index f7f9921..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X200.repair_full.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale02d.pdf deleted file mode 100644 index 2e536ee..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale2d.pdf deleted file mode 100644 index a040be7..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf index fa3392a..d35caf2 100644 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf and b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf deleted file mode 120000 index 99eb3f8..0000000 --- a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf +++ /dev/null @@ -1 +0,0 @@ -dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf \ No newline at end of file diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf new file mode 100644 index 0000000..b22fc84 Binary files /dev/null and b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_all.scale4d.pdf differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale02d.pdf deleted file mode 100644 index 4155735..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale2d.pdf deleted file mode 100644 index 8d02fbc..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf deleted file mode 100644 index 690f138..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale02d.pdf deleted file mode 100644 index edf33d3..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale2d.pdf deleted file mode 100644 index f655f51..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf index 5669539..ffc59a9 100644 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf and b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_none.scale4d.pdf differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale02d.pdf deleted file mode 100644 index 15a1ac4..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale2d.pdf deleted file mode 100644 index 49feedc..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf index d3dfb42..47343a8 100644 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf and b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale02d.pdf deleted file mode 100644 index e01d32e..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale2d.pdf deleted file mode 100644 index b911c09..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale4d.pdf deleted file mode 100644 index 7135d93..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.no_offset.scale4d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale02d.pdf deleted file mode 100644 index 6e82319..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale2d.pdf deleted file mode 100644 index 86d1994..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale4d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale4d.pdf deleted file mode 100644 index 56f25e2..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X600.repair_full.scale4d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale02d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale02d.pdf deleted file mode 100644 index e4752cd..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale02d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale2d.pdf b/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale2d.pdf deleted file mode 100644 index 8e6b5be..0000000 Binary files a/figures/radio_interferometry/dc_grid_power_time_fixes.py.X800.repair_full.scale2d.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.no_offset.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.no_offset.pdf deleted file mode 100644 index 56a4b32..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.no_offset.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.zoomed.no_offset.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.zoomed.no_offset.pdf deleted file mode 100644 index 93c8241..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.X400.trace_overlap.zoomed.no_offset.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.trace_overlap.no_offset.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.trace_overlap.no_offset.pdf new file mode 100644 index 0000000..3b06723 Binary files /dev/null and b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.trace_overlap.no_offset.pdf differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.repair_full.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.repair_full.pdf deleted file mode 100644 index 620d365..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.repair_full.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.zoomed.repair_full.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.zoomed.repair_full.pdf deleted file mode 100644 index ab2a3d2..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.X400.trace_overlap.zoomed.repair_full.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.trace_overlap.repair_full.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.trace_overlap.repair_full.pdf new file mode 100644 index 0000000..c0123eb Binary files /dev/null and b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.trace_overlap.repair_full.pdf differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.repair_none.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.repair_none.pdf deleted file mode 100644 index 0c70ba9..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.repair_none.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.zoomed.repair_none.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.zoomed.repair_none.pdf deleted file mode 100644 index 2e19904..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.X400.trace_overlap.zoomed.repair_none.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.trace_overlap.repair_none.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.trace_overlap.repair_none.pdf new file mode 100644 index 0000000..85dae63 Binary files /dev/null and b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_none.axis.trace_overlap.repair_none.pdf differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.repair_phases.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.repair_phases.pdf deleted file mode 100644 index 4648185..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.repair_phases.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.zoomed.repair_phases.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.zoomed.repair_phases.pdf deleted file mode 100644 index f1c86f4..0000000 Binary files a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.X400.trace_overlap.zoomed.repair_phases.pdf and /dev/null differ diff --git a/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.trace_overlap.repair_phases.pdf b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.trace_overlap.repair_phases.pdf new file mode 100644 index 0000000..076fa5d Binary files /dev/null and b/figures/radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.trace_overlap.repair_phases.pdf differ diff --git a/presentations/2023-07-06_final_masters/2023-Masters.pdf b/presentations/2023-07-06_final_masters/2023-Masters.pdf deleted file mode 100644 index 19698c6..0000000 Binary files a/presentations/2023-07-06_final_masters/2023-Masters.pdf and /dev/null differ diff --git a/presentations/2023-07-06_final_masters/2023-Masters.tex b/presentations/2023-07-06_final_masters/2023-Masters.tex deleted file mode 100644 index e1cc2c5..0000000 --- a/presentations/2023-07-06_final_masters/2023-Masters.tex +++ /dev/null @@ -1,934 +0,0 @@ -% vim: fdm=marker fmr=<<<,>>> -%\documentclass[notes]{beamer} -\documentclass[]{beamer} - - -%%%%%%%%%%%%%%% -% Preamble <<< -%%%%%%%%%%%%%%% - -\usepackage[british]{babel} -\usepackage{csquotes} -\usepackage{amsmath} -\usepackage{hyperref} -\usepackage[backend=bibtex,style=numeric,maxnames=1]{biblatex} -\usepackage{appendixnumberbeamer} -\usepackage{graphicx} -\usepackage{tikz} -\usepackage{xurl} -\usepackage{physics} -\usepackage{cancel} -\usepackage{multicol} -\graphicspath{{.}{./figures/}{../../figures/}} -\usepackage{todo} - -\addbibresource{../../bibliotheca/bibliography.bib} - -% Use arXiv identifier if available -\DeclareCiteCommand{\arxivcite} - {\usebibmacro{prenote}} - {\usebibmacro{citeindex}% - [\usebibmacro{cite}] - \newunit - \clearfield{eprintclass} - \usebibmacro{eprint}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\newcommand{\imagesource}[1]{~\\[0pt]\vspace*{-7pt}\hspace*{10pt}{\tiny#1}} -\newcommand{\imagecredit}[1]{\imagesource{Credit:\thinspace#1}} -%\newcommand{\imagecite}[1]{\imagesource{\arxivcite{#1}}} - -% Disable Captions -\setbeamertemplate{caption}{\raggedright\small\insertcaption\par} - -% no to navigation, yes to frame numbering -\beamertemplatenavigationsymbolsempty -\setbeamerfont{page number in head/foot}{size=\normalsize} -\setbeamertemplate{page number in head/foot}{\insertframenumber/\inserttotalframenumber} -%\setbeamercolor{page number in head/foot}{fg=red} -\setbeamerfont{section in head/foot}{size=\small} -\setbeamercolor{section in head/foot}{fg=gray} -\setbeamertemplate{section in head/foot}{\textit{\insertsectionhead}} -%\setbeamertemplate{footline}[frame number] -\setbeamertemplate{footline} -{% -\leavevmode% - \hbox{% - \begin{beamercolorbox}[wd=.7\paperwidth,ht=2.55ex,dp=1ex,leftskip=1em,rightskip=1em,sep=0pt]{title in head/foot}% - \usebeamertemplate*{section in head/foot}% - \hfill% - \end{beamercolorbox} - \begin{beamercolorbox}[wd=.1\paperwidth,ht=2.55ex,dp=1ex,sep=0pt]{my empty section} - \hfill% - \end{beamercolorbox} - \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.55ex,dp=1ex,leftskip=1em,rightskip=1em,sep=0pt]{page number in head/foot}% - \hfill% - \usebeamertemplate*{page number in head/foot}% - \end{beamercolorbox}}% -} - -%% From https://tex.stackexchange.com/a/55849 -% Keys to support piece-wise uncovering of elements in TikZ pictures: -% \node[visible on=<2->](foo){Foo} -% \node[visible on=<{2,4}>](bar){Bar} % put braces around comma expressions -% -% Internally works by setting opacity=0 when invisible, which has the -% adavantage (compared to \node<2->(foo){Foo} that the node is always there, hence -% always consumes space plus that coordinate (foo) is always available. -% -% The actual command that implements the invisibility can be overriden -% by altering the style invisible. For instance \tikzsset{invisible/.style={opacity=0.2}} -% would dim the "invisible" parts. Alternatively, the color might be set to white, if the -% output driver does not support transparencies (e.g., PS) -% -\tikzset{ - invisible/.style={opacity=0}, - visible on/.style={alt={#1{}{invisible}}}, - alt/.code args={<#1>#2#3}{% - \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path - }, -} - -\hypersetup{pdfpagemode=UseNone} % don't show bookmarks on initial view - -% >>> Preamble -%%%%%%%%%%%%%%% -% Meta data <<< -%%%%%%%%%%%%%%% -\def\thesistitle{Enhancing Timing Accuracy\texorpdfstring{\\[0.3cm]}{ }in Air Shower Radio Detectors} -\def\thesissubtitle{} -\def\thesisauthorfirst{E.T.} -\def\thesisauthorsecond{de Boone} -\def\thesisauthoremailraw{ericteunis@deboone.nl} -\def\thesisauthoremail{\href{mailto:\thesisauthoremailraw}{\thesisauthoremailraw}} -\def\thesissupervisorfirst{dr. Harm} -\def\thesissupervisorsecond{Schoorlemmer} -\def\thesissupervisoremailraw{} -\def\thesissupervisoremail{\href{mailto:\thesissupervisoremailraw}{\thesissupervisoremailraw}} - -\title[\thesistitle]{\thesistitle} - -\date{July, 2023} - -\author[\thesisauthorfirst\space\thesisauthorsecond]{% - \texorpdfstring{\thesisauthorfirst\space\thesisauthorsecond\thanks{e-mail: \thesisauthoremail}\\ - \vspace*{0.5em} - {Supervisor: \thesissupervisorfirst\space\thesissupervisorsecond } - }{\thesisauthorfirst\space\thesisauthorsecond<\thesisauthoremailraw>} - } - -% >>> Meta data - -\newcommand{\tclock}{\ensuremath{t_\mathrm{clock}}} -\newcommand{\tClock}{\tclock} -\newcommand{\ns}{\ensuremath{\mathrm{ns}}} - -\newcommand{\pTrue}{\phi} -\newcommand{\PTrue}{\Phi} -\newcommand{\pMeas}{\varphi} - -\newcommand{\pTrueEmit}{\pTrue_0} -\newcommand{\pTrueArriv}{\pTrueArriv'} -\newcommand{\pMeasArriv}{\pMeas_0} -\newcommand{\pProp}{\pTrue_d} -\newcommand{\pClock}{\pTrue_c} - -\begin{document} -{ % Titlepage <<< -\setbeamertemplate{background} -{% - \parbox[c][\paperheight][c]{\paperwidth}{% - \centering% - \vfill% - \includegraphics[width=\textwidth]{beacon/array_setup_gps_transmitter_cows.png}% - \vspace*{2em} - }% -} -\setbeamertemplate{footline}{} % no page number here -\frame{ \titlepage } -} % >>> - -%%%%%%%%%%%%%%% -% Start of slides <<< -%%%%%%%%%%%%%%% -\section{Cosmic Particles Detection}% <<<< -% Sources, Types, Propagation, Observables -% Flux -> Large instrumentation area -% Detection methods of Auger -% - FD, SD -% AERA / AugerPrime RD or GRAND -\begin{frame}{Ultra High Energy particles} - \begin{figure} - \centering - \includegraphics[width=0.9\textwidth]{astroparticle/bk978-0-7503-2344-4ch1f2_hr.jpg}% - \imagecredit{Juan Antonio Aguilar and Jamie Yang. IceCube/WIPAC} - \end{figure} -\end{frame} - -\begin{frame}{Ultra High Energy particle flux} - \begin{columns} - \begin{column}{0.6\textwidth} - \begin{figure} - \centering - %\includegraphics[width=0.7\textwidth]{astroparticle/cr_flux_PDG_2023.pdf}% - \includegraphics[width=\textwidth]{astroparticle/spectrum.png}% - \imagecredit{\nocite{PDG2022}Particle Data Group} - \end{figure} - \end{column} - \begin{column}{0.5\textwidth} - Large Area Experiments:\\ - %\begin{multicols}{2} - \begin{itemize} - \item Pierre Auger Observatory - \item Giant Radio Array for Neutrino Detection - \end{itemize} - \vfill - \begin{figure} - \includegraphics[width=\textwidth]{images/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov.png} - \imagecredit{\href{https://www.researchgate.net/figure/A-schematic-of-the-Pierre-Auger-Observatory-where-each-black-dot-is-a-water-Cherenkov_fig1_319524774}{Hans O. Klages}} - \end{figure} - %\end{multicols} - \end{column} - \end{columns} -\end{frame} - - -\begin{frame}{Air Showers} -% Observables -% \begin{columns} -% \begin{column}{0.45\textwidth} -% \begin{figure} -% \includegraphics[width=\textwidth]{airshower/shower_development_depth_iron_proton_photon_with_muons.pdf} -% \imagecredit{H. Schoorlemmer} -% \end{figure} -% \end{column} -% \hfill -% \begin{column}{0.45\textwidth} -% \end{column} -% \end{columns} - \begin{figure} - \hspace*{-2em} - \centering - \includegraphics[width=1.13\textwidth]{airshower/Auger_ScreenShot_GoldenHybrid1_shower_SD_FD.png} - \imagesource{From:~\url{https://opendata.auger.org/display.php?evid=172657447200}} - \end{figure} -\end{frame} - -\begin{frame}{Air Shower Radio Emission} - \begin{columns} - \begin{column}{0.45\textwidth} - \begin{figure} - \includegraphics[width=\textwidth]{airshower/shower_development_depth_iron_proton_photon.pdf} - \imagecredit{H. Schoorlemmer} - \end{figure} - \end{column} - \hfill - \begin{column}{0.545\textwidth} - \begin{figure} - \centering - Charge excess - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_askaryan.png}\\% - \vspace*{2em} - Geomagnetic - \includegraphics[width=\textwidth]{airshower/airshower_radio_polarisation_geomagnetic.png}% - \imagesource{\arxivcite{Huege:2017bqv}} - \end{figure} - \end{column} - \end{columns} -\end{frame} - - -% >>>> -\section{Radio Interferometry}% <<<< -\begin{frame}{Radio Interferometry: Concept} - Interferometry: Amplitude + Timing information of the $\vec{E}$-field\\ - \vspace*{ 0.8em } - \begin{columns} - \begin{column}{0.4\textwidth} - \begin{figure} - \includegraphics<1>[width=\textwidth]{radio_interferometry/rit_schematic_base.pdf}% - \includegraphics<2>[width=\textwidth]{radio_interferometry/rit_schematic_far.pdf}% - \includegraphics<3>[width=\textwidth]{radio_interferometry/rit_schematic_close.pdf}% - \includegraphics<4>[width=\textwidth]{radio_interferometry/rit_schematic_true.pdf}% - \end{figure} - \end{column} - \begin{column}{0.6\textwidth} - \vspace*{\fill} - \begin{itemize} - \item<1-> Measure signal $S_i(t)$ at antenna $\vec{a_i}$ - - \item<2-> Calculate light travel time \\[5pt] - \quad $\Delta_i(\vec{x}) = \frac{ \left| \vec{x} - \vec{a_i} \right| }{c} n_{eff}$ - - \item<2-> Sum waveforms accounting \\ - for time delay \\[5pt] - \quad $S(\vec{x}, t) = \sum S_i( t + \Delta_i(\vec{x}) )$ - \end{itemize} - \vspace*{\fill} - \begin{figure}% Spatially - \includegraphics<1>[width=0.8\textwidth]{radio_interferometry/single_trace.png}% - \includegraphics<2>[width=0.8\textwidth]{radio_interferometry/trace_overlap_bad.png}% - \includegraphics<3>[width=0.8\textwidth]{radio_interferometry/trace_overlap_medium.png}% - \includegraphics<4>[width=0.8\textwidth]{radio_interferometry/trace_overlap_best.png}% - \end{figure} - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{Radio Interferometry: Image} - \begin{figure} - \centering - \includegraphics[width=0.7\textwidth]{2006.10348/fig01.png}% - \imagesource{\arxivcite{Schoorlemmer:2020low}} - \end{figure} -\end{frame} - -% >>>> -\section{Timing in Air Shower Radio Detectors}% <<<< -% GNSS -% reference system: White Rabbit, AERA beacon, (ADS-B?) -% GRAND setup and measurements -\begin{frame}{Timing in Air Shower Radio Detectors} -% Geometry - Relative timing is important for Radio Interferometry. {\small ($ 1\ns\, @ c \sim 30\mathrm{cm}$)}\\ - \vspace*{1em} - Large inter-detector spacing ($\sim 1\mathrm{km}$)\\ - $\mapsto$ Default timing mechanism: Global Navigation Satellite Systems\\ - \vspace*{1em} - What is the accuracy of such systems?\\ - \visible<2>{ - \quad @Auger: $\sigma_t \gtrsim 10\ns$ - } - \vfill - \begin{columns} - \begin{column}{0.45\textwidth} - \begin{figure} - \visible<2>{ - \centering - \includegraphics[width=\textwidth]{gnss/auger/1512.02216.figure3.gnss-time-differences.png} - \vspace*{-1em} - \imagesource{\arxivcite{PierreAuger:2015aqe}} - } - \end{figure} - \end{column} - \hfill - \begin{column}{0.5\textwidth}%<<< - \vfill - \begin{figure} - \begin{tikzpicture}[scale=1] - \clip (2.5 , 0) rectangle ( 6, 2.5); - \node[anchor=south west, inner sep=0] (image) at (0,0) {\includegraphics[width=\textwidth]{beacon/array_setup_gps_transmitter_cows.png}}; - %\draw[help lines,xstep=1,ystep=1] (0,0) grid (11,5); - \end{tikzpicture} - \imagecredit{H. Schoorlemmer} - \end{figure} - \end{column}%>>> - \end{columns} -\end{frame} - -% Geometry -% Pulse method + SNR -% Sine method + SNR -\begin{frame}[t]{Timing in Radio Detectors: Beacon Synchronisation} -% Geometry - Relative timing is important for Radio Interferometry.\\ - \vspace*{1em} - Default Timing mechanism: {\color<1>{red} Global Navigation Satellite Systems}\\ - \visible<1->{ - +Extra Timing mechanism: {\color<1>{blue} Beacon} (Pulse, Sine)%, {\color{green} ADS-B} - } - \vfill - \begin{figure} - \hspace*{-2em} - \begin{tikzpicture} - \node[anchor=south west, inner sep=0] (image) at (0,0) {\includegraphics[width=0.8\textwidth]{beacon/array_setup_gps_transmitter_cows.png}}; - \begin{scope}[x={(image.south east)}, y={(image.north west)}] - %\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1); - %\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; } - %\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; } - \node (transmitter) at (0.23, 0.32) {}; - \node (gnss) at (0.85, 0.87) {}; - %% Aeroplane - %\node[ visible on=<{2-}>] (aeroplane) at (0.5, 0.67) {\scalebox{-1}[1]{\includegraphics[width=1.5cm]{templates/aeroplane.png}}}; - %\draw[green, ultra thick, visible on=<{2-}>] (aeroplane.center) circle[radius=8mm]; - %% Circles - \draw[red, ultra thick, visible on=<{1-}>] (gnss.center) circle[radius=8mm]; - \draw[blue, ultra thick, visible on=<{1-}>] (transmitter.center) circle[radius=8mm]; - %% Mask Transmitter - \fill[white, visible on=<0>] (0,0) rectangle (0.45,1) ; - \end{scope} - \end{tikzpicture} - \imagecredit{H. Schoorlemmer} - \end{figure} -\end{frame} - -\section{Beacon Synchronisation} -\begin{frame}[t]{Beacon Synchronisation: Geometry} - Local antenna time $t'_i$ due to time~delay~$t_{\mathrm{d}i}$, clock~skew~$\sigma_i$\\ - and transmitter~time~$t_\mathrm{tx}$ - \begin{equation*} - t'_i = t_{tx} + t_{\mathrm{d}i} + \sigma_i - \end{equation*} - \vfill - \begin{figure} - \begin{tikzpicture} - [inner sep=2mm, - place/.style={circle,draw=black!50,fill=white,thick} - ] - \clip (0 , 0) rectangle (9, 2.5); - \node[anchor=south west, inner sep=0] (image) at (0,0) {\includegraphics[width=0.8\textwidth]{beacon/array_setup_gps_transmitter_cows.png}}; - \begin{scope}[x={(image.south east)}, y={(image.north west)}] - %\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1); - %\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; } - %\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; } - %\fill[white] (0.4,0) rectangle (0.6,0.4); - \node (transmitter) at (0.23, 0.32) {}; - \node (ant1) at (0.51, 0.32) [place] {1}; - %\node (ant1) at (0.72, 0.25) [place] {1}; - \node (ant2) at (0.65, 0.50) [place] {2}; -% - \draw (transmitter.center) to node [below] {$t_{\mathrm{d}1}$} (ant1) ; - \draw (transmitter.center) to node [above] {$t_{\mathrm{d}2}$} (ant2) ; - \end{scope} - \end{tikzpicture} - \imagecredit{H. Schoorlemmer} - \end{figure} - \vfill - - Measured time difference:\\ - \vspace{-0.5em} - \begin{equation*} - \Delta t'_{12} = t'_1 - t'_2 = \Delta t_{\mathrm{d}12} + \sigma_{12} + (t_\mathrm{tx} - t_\mathrm{tx}) - \end{equation*} -\end{frame} - - -\subsection{Pulse Beacon} -\begin{frame}{Pulse Beacon} - \begin{figure} - \includegraphics[width=\textwidth]{pulse/antenna_signals_tdt0.2_zoom.pdf} - \end{figure} - \vfill -\end{frame} -\begin{frame}{Pulse Beacon} - Correlation: similarity between two signals.\\ - \begin{figure} - \includegraphics[width=\textwidth]{pulse/correlation_tdt0.2_zoom.pdf} - \end{figure} -\end{frame} -\begin{frame}{Pulse Beacon Timing} - \begin{figure} - \centering - \includegraphics[width=0.8\textwidth]{pulse/time_res_vs_snr_multiple_dt.pdf} - \end{figure} -\end{frame} - -\subsection{Sine Beacon} -\begin{frame}{(Multi)Sine Beacon} - Phase measurement $\varphi'_i$ using Fourier Transform, $k$~unknown: - \begin{equation*} - t'_i = \left[ \frac{\varphi'_i}{2\pi} \; + \; k \right] T - \end{equation*} - \begin{figure} - \includegraphics[width=.45\textwidth]{methods/fourier/waveform.pdf} - \hfill - \includegraphics<1>[width=.45\textwidth]{methods/fourier/noisy_spectrum.pdf} - \end{figure} -\end{frame} -\begin{frame}{(Multi)Sine Beacon Timing} - \vspace*{1em} - \begin{figure} - \centering - \includegraphics[width=0.8\textwidth]{beacon/time_res_vs_snr_large.pdf} - \end{figure} - \vspace*{-1em} - \begin{columns} - \begin{column}[b]{0.4\textwidth} - \centering - \tiny - Random~Phasor~Sum: - \autocite{goodman1985:2.9}~ - ``Statistical~Optics'', - J.~Goodman - \end{column} - \begin{column}[b]{0.7\textwidth} - \tiny\begin{equation*} - p_\PTrue(\pTrue; s, \sigma) = - \frac{ e^{-\left(\frac{s^2}{2\sigma^2}\right)} }{ 2 \pi } - + - \sqrt{\frac{1}{2\pi}} - \frac{s}{\sigma} - e^{-\left( \frac{s^2}{2\sigma^2}\sin^2{\pTrue} \right)} - \frac{\left( - 1 + \erf{ \frac{s \cos{\pTrue}}{\sqrt{2} \sigma }} - \right)}{2} - \cos{\pTrue} - \end{equation*} - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{Beacon Synchronisation: Conclusion} - \vspace*{2em} - \begin{columns}[T] - \begin{column}{0.49\textwidth} - \begin{center}\bfseries Pulse \end{center} - \vspace*{-1em} - \begin{itemize} - \item discrete - \item requires template - \end{itemize} - \end{column} - \hfill - \begin{column}{0.49\textwidth} - \begin{center}\bfseries Sine \end{center} - \vspace*{-1em} - \begin{itemize} - \item continuous - \item longer trace\\ $\mapsto$ better SNR - \item $k$ period unknown - \end{itemize} - \end{column} - \end{columns} - \vfill - \begin{columns} - \begin{column}{0.49\textwidth} - \includegraphics[width=1\textwidth]{pulse/time_res_vs_snr_multiple_dt_small.pdf} - \end{column} - \hfill - \begin{column}{0.49\textwidth} - \includegraphics[width=1\textwidth]{beacon/time_res_vs_snr_small.pdf} - \end{column} - \end{columns} -\end{frame} - -% >>>> -\section{Single Sine Synchronisation}% <<<< -% Sine method + Radio Interferometry -\begin{frame}{Single Sine Synchronisation} - $k$ is discrete, lift the period degeneracy using the air~shower radiosignal - \begin{equation*} - t'_i = (\frac{\varphi'_i}{2\pi} + n_i)T = A_i + B_i - \end{equation*} - \vspace*{-2em} - \begin{figure} - %\centering - \hspace*{-5em} - \includegraphics<1>[width=1.3\textwidth]{beacon/08_beacon_sync_timing_outline.pdf}% - \includegraphics<2>[width=1.3\textwidth]{beacon/08_beacon_sync_synchronised_outline.pdf}% - \includegraphics<3>[width=1.3\textwidth]{beacon/08_beacon_sync_synchronised_period_alignment.pdf}% - \end{figure} - \begin{align*} - \Delta t'_{ij} &= (A_j + B_j) - (A_i + B_i) + \Delta t'_\varphi \\ - &= \Delta A_{ij} + \only<1>{\Delta t'_\varphi}\only<2->{\cancel{\Delta t'_\varphi}} + k_{ij}T\\ - \end{align*} -\end{frame} - -\begin{frame}{Single Sine Synchronisation Simulation} - Air Shower simulation on a grid of 100x100 antennas. - \\ - \begin{columns} - \begin{column}{0.45\textwidth} - \begin{itemize} - \item<2-> Add beacon ($T\sim20\ns$) to antenna - \item<2-> Randomise clocks ($\sigma=30\ns$) - \item<3-> Measure phase with DTFT - \item<3-> Repair clocks for small offsets - \item<3-> Iteratively find best $k_{ij}$ - \end{itemize} - \end{column} - \hfill - \begin{column}{0.5\textwidth} - \begin{figure} - \hspace*{-2em} - \includegraphics<1>[width=1.2\textwidth]{ZH_simulation/array_geometry_shower_amplitude.png} - \includegraphics<2>[width=1.2\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.no_mask.pdf}% - \includegraphics<3>[width=1.2\textwidth]{ZH_simulation/ba_measure_beacon_phase.py.A74.masked.pdf}% - \end{figure} - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{Single Sine Synchronisation: Iterative $k_{0i}$-finding} - \small{ - ``Interferometry'' while allowing to shift by $T = 1/f_\mathrm{beacon}$ - \\[5pt] - Iterative process optimizing signal power: \\ - \; Scan positions finding the best $\{k_{0i}\}$ set,\\ - \; then evaluate on a grid near shower axis and zoom in. - } - - \only<1-3>{\begin{figure} - \includegraphics<1>[width=0.8\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.run0.i1.zoomed.beacon.pdf} - \includegraphics<2>[width=0.8\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run0.pdf} - \includegraphics<3>[width=0.8\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run0.power.pdf} - \end{figure}} - \only<4>{\begin{figure} - \includegraphics[width=0.4\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run1.pdf} - \hfill - \includegraphics[width=0.4\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run1.power.pdf} - \vspace{0.5cm} - \includegraphics[width=0.4\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.maxima.run2.pdf} - \hfill - \includegraphics[width=0.4\textwidth]{ZH_simulation/findks/ca_period_from_shower.py.reconstruction.run2.power.pdf} - \end{figure}} -\end{frame} - -\begin{frame}{Single Sine Synchronisation: Timing Reparation} - \begin{columns} - \begin{column}{0.45\textwidth} - { Phase reparation } - \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_phases.axis.trace_overlap.repair_phases.pdf}% - \vfill - \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_phases.scale4d.pdf}% - \label{fig:sine:repairments} - \end{column} - \hfill - \begin{column}{0.45\textwidth} - { Phase + Period reparation } - \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.trace_overlap.repair_full.pdf}% - \vfill - \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf}% - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{Single Sine Synchronisation: Comparison} - \begin{columns} - \begin{column}{0.45\textwidth} - { True clock } - \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.no_offset.axis.trace_overlap.no_offset.pdf}% - \vfill - \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.no_offset.scale4d.pdf}% - \end{column} - \hfill - \begin{column}{0.45\textwidth} - { Phase + Period reparation } - \includegraphics[width=\textwidth]{radio_interferometry/trace_overlap/on-axis/dc_grid_power_time_fixes.py.repair_full.axis.trace_overlap.repair_full.pdf}% - \vfill - \includegraphics[width=\textwidth]{radio_interferometry/dc_grid_power_time_fixes.py.X400.repair_full.scale4d.pdf}% - \end{column} - \end{columns} -\end{frame} -% >>>> -\section{Conclusion}% <<<< -% Single Sine + Air Shower -% Outlook: Parasitic/Active vs Pulse/Sine table -% Parasitic Single Sine: 67MHz Auger -% Implementation for GRAND? -\begin{frame}{Conclusion and Outlook} - \begin{itemize} - \item Cosmic Particles induce Extensive Air Showers\\[10pt] - \item Relative Timing is crucial to Radio Interferometry\\[10pt] - \item Pulse and Sine beacons can synchronise effectively\\[10pt] - \item Single Sine + Air Shower works - \end{itemize} - \vspace*{2em} - - \visible<2>{ - Outlook: - \begin{itemize} - \item Parasitic setups, i.e.~the $67\mathrm{MHz}$ in Auger,\\[10pt] - \item Self-calibration using pulsed beacon - \end{itemize} - } - \vfill -\end{frame} - -% >>>> -% >>> End of Slides -%%%%%%%%%%%%%%% -% Backup slides <<< -%%%%%%%%%%%%%%% -\appendix -\begin{frame}[c] - \centering - \Large { - \textcolor{blue} { - Supplemental material - } - } -\end{frame} - -\section*{Table of Contents} -\begin{frame}{Table of Contents} - \tableofcontents -\end{frame} - -\begin{frame}{Single Sine Timing Result} - \centering - \includegraphics<1>[width=\textwidth]{ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-amplitudes.comparison.pdf} - \includegraphics<2>[width=\textwidth]{ZH_simulation/cb_report_measured_antenna_time_offsets.py.time-amplitudes.residuals.pdf} -\end{frame} - -\section{Airshower} -\begin{frame}{Airshower development} - \begin{figure} - \includegraphics[width=\textwidth]{1607.08781/fig02a_airshower+detectors.png} - \imagesource{\arxivcite{Schroder:2016hrv}} - \end{figure} -\end{frame} - -\begin{frame}{Radio footprint; GRAND} - \begin{figure} - \includegraphics[width=0.9\textwidth]{grand/GRAND-detection-principle-1.png} - \imagecredit{\arxivcite{GRAND:2018iaj}} - \end{figure} -\end{frame} - - -\section{Radio Interferometry} -\begin{frame}{Radio Interferometry: Xmax Resolution vs Timing Resolution} - \begin{figure} - \centering - \includegraphics[width=0.7\textwidth]{2006.10348/fig03_b.png}% - \imagecredit{\arxivcite{Schoorlemmer:2020low}} - \end{figure} -\end{frame} - -\section{Beacon contamination} -\begin{frame}{Sine: Air Shower - Beacon} - \centering - \includegraphics[width=\textwidth]{ZH_simulation/da_reconstruction.py.traces.A74.zoomed.peak.Ex.pdf} -\end{frame} - -\section{Beacon Pulse} -\begin{frame}{Filter Response and Sampling} - \centering - \includegraphics[width=\textwidth]{pulse/interpolation_deltapeak+antenna.pdf} -\end{frame} -%\begin{frame}{Hilbert Timing} -% \centering -% \includegraphics[width=\textwidth]{pulse/hilbert_timing_zoom.pdf} -%\end{frame} - -\section{Beacon without TX} -\subsection{Pulse} -\begin{frame}{Beacon: Pulse (single baseline)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_single_center_time.pdf} - \includegraphics<2>[width=\textwidth]{beacon/field/field_single_left_time.pdf} - \end{figure} -\end{frame} -\begin{frame}{Beacon: Pulse (3 baselines)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_three_center_time.pdf} - \includegraphics<2>[width=\textwidth]{beacon/field/field_three_left_time.pdf} - \end{figure} -\end{frame} - -\begin{frame}{Beacon: Pulse (multi baseline)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_square_ref0_time.pdf} - \includegraphics<2>[width=\textwidth]{beacon/field/field_square_all_time.pdf} - \end{figure} -\end{frame} - -\subsection{Sine} -\begin{frame}{Beacon: Sine (single baseline)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_single_center_phase.pdf} - \includegraphics<2>[width=\textwidth]{beacon/field/field_single_left_phase.pdf} - \end{figure} -\end{frame} -\begin{frame}{Beacon: Sine (3 baseline)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_three_center_phase.pdf} - \includegraphics<2>[width=\textwidth]{beacon/field/field_three_left_phase.pdf} - \end{figure} -\end{frame} - -\begin{frame}{Beacon: Sine (multi baseline reference antenna)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_square_ref0_phase.pdf} - %\includegraphics<2>[width=\textwidth]{beacon/field/field_square_ref0_phase_zoomtx.pdf} - \end{figure} -\end{frame} - - -\begin{frame}{Beacon: Sine (all baselines)} - \begin{figure} - \includegraphics<1>[width=\textwidth]{beacon/field/field_square_all_phase.pdf} - %\includegraphics<2>[width=\textwidth]{beacon/field/field_square_all_phase_zoomtx.pdf} - \end{figure} -\end{frame} - - -\section{Fourier} -\begin{frame}{DTFT vs DFT} - \centering - \includegraphics[width=\textwidth]{methods/fourier/noisy_spectrum.pdf} -\end{frame} -\begin{frame}{(Discrete) Fourier and Phase} - \begin{equation*} - \hspace{-2em} - u(t) = \exp(i2\pi ft + \phi_t) \xrightarrow{\mathrm{Fourier\; Transform}} f', \phi_f - \end{equation*} - \includegraphics[width=\textwidth]{fourier/02-fourier_phase-f_max_showcase.pdf} -\end{frame} -\begin{frame}{Phase reconstruction?} - \begin{figure} - \makebox[\textwidth][c]{\includegraphics[width=1.4\textwidth]{fourier/02-fourier_phase-phi_f_vs_phi_t.pdf}}% - \end{figure} - \begin{block}{} - Phase reconstruction is easy if sample rate ``correct'' - \end{block} -\end{frame} - -%%%%%%%%%%%%% -\begin{frame}{Phase reconstruction?} - \begin{block}{} - What if sample rate ``incorrect''? \\ - \end{block} - \begin{block}<2->{} - $\rightarrow$ Linear interpolation ({\small $f_\mathrm{signal}$, $f_\mathrm{max}$, $f_\mathrm{submax}$, $\phi_\mathrm{max}$ and $\phi_\mathrm{submax}$}) - \end{block} - \vspace{2em} - \begin{figure} - \makebox[\textwidth][c]{ - \includegraphics<1-2>[width=1.4\textwidth]{fourier/02-fourier_phase-phi_f_vs_f_max_increasing_N_samples.pdf} - \includegraphics<3>[width=1.3\textwidth]{fourier/02-fourier_phase-phase_reconstruction-unfolded.pdf} - \includegraphics<4>[width=1.3\textwidth]{fourier/02-fourier_phase-phase_reconstruction-unfolded-zoomed.pdf} - }% - \end{figure} -\end{frame} - - - - -%%%%%%%%%% -\section{GNSS clock stability} -\begin{frame}{GNSS clock stability I} - \begin{columns} - \begin{column}{0.4\textwidth} - \begin{figure} - \centering - \includegraphics[width=0.8\textwidth]{grand/setup/antenna-to-adc.pdf} - \caption{ - GRAND Digitizer Unit's ADC to antennae - } - \end{figure} - \end{column} - \hfill - \begin{column}{0.5\textwidth} - \begin{figure} - \includegraphics[width=\textwidth]{grand/setup/channel-delay-setup.pdf}% - \caption{ - Channel filterchain delay experiment - } - \end{figure} - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{GNSS filterchain delay experiment} - \begin{columns} - \begin{column}{0.5\textwidth} - \centering - Pulse - \includegraphics[width=\textwidth]{grand/split-cable/split-cable-delays-ch1ch4.pdf} - \end{column} - \begin{column}{0.5\textwidth} - \centering - 50MHz Sinewave delay(ch1, ch2) = $46\mathrm{ps} \pm 10$ - \includegraphics[width=\textwidth]{grand/split-cable/split-cable-delay-ch1ch2-50mhz-200mVpp.pdf} - %\includegraphics[width=\textwidth]{fourier/04_signal_to_noise_fig04.png} - \end{column} - \end{columns} - -\end{frame} - -\begin{frame}{GNSS clock stability II} - \begin{figure} - \centering - \includegraphics[width=0.7\textwidth]{grand/setup/grand-gps-setup.pdf} - \caption{ - GNSS stability experiment - } - \end{figure} -\end{frame} - -\subsection{In the field} -\begin{frame}{} - \centering - \includegraphics[width=0.5\textwidth]{images/IMG_20220712_164912_grand_DU.jpg}% - \includegraphics[width=0.5\textwidth]{images/IMG_20220712_164904_checking_gnss.jpg}% - \vfill - \includegraphics[width=0.5\textwidth]{images/IMG_20220819_152900.jpg}% Outside box Inside Cabling - \includegraphics[width=0.5\textwidth]{images/flir_20220812T114019.jpg}% Heat Inside -\end{frame} - -\begin{frame}{GNSS clock stability III} - \begin{columns} - \begin{column}{0.5\textwidth} - \includegraphics[width=\textwidth]{images/IMG_20220819_154801.jpg}% Closed box outside - \end{column} - \begin{column}{0.5\textwidth} - \includegraphics[width=\textwidth]{images/IMG_20220815_161244.jpg}% Open box outside - \end{column} - \end{columns} -\end{frame} - -\section{White Rabbit}%<<< -\begin{frame}{Precision Time Protocol} - \begin{itemize} - \item Time synchronisation over (long) distance between (multiple) nodes - \end{itemize} - \begin{figure} - \includegraphics[width=0.4\textwidth]{white-rabbit/protocol/ptpMSGs-color.pdf} - \caption{ - \cite{WRPTP} - Precision Time Protocol messages. - } - \end{figure} -\end{frame} -\begin{frame}{White Rabbit} - \begin{columns} - \begin{column}{.5\textwidth} - White Rabbit: - \begin{itemize} - \item SyncE (common oscillator) - \item PTP (synchronisation) - \end{itemize} - - \vspace{2em} - - Factors: - \begin{itemize} - \item device ($\Delta_{txm}$, $\Delta_{rxs}$, ...) - \item link ($\delta_{ms}$, ...) - \end{itemize} - \begin{figure} - \makebox[\textwidth][c]{\includegraphics[width=1.1\textwidth]{white-rabbit/protocol/delaymodel.pdf}} - \imagecredit{\autocite{WRPTP}} - \end{figure} - \end{column} - \begin{column}{.5\textwidth} - \begin{figure} - \makebox[\textwidth][c]{\includegraphics[width=1.1\textwidth]{white-rabbit/protocol/wrptpMSGs_1.pdf}} - \imagecredit{\autocite{WRPTP}} - \end{figure} - \end{column} - \end{columns} -\end{frame} - -\begin{frame}{White Rabbit Clock Reference} - \begin{figure} - \centering - \hspace*{-5em} - \includegraphics[width=1.35\textwidth]{clocks/wr-clocks.pdf} - \end{figure} -\end{frame}%>>> -% >>> End of Backup Slides -%%%%%%%%%%%%%% -% Bibliography <<< -%%%%%%%%%%%%%% -\section*{References} -\begin{frame}[allowframebreaks] - \frametitle{References} - \printbibliography -\end{frame} -% >>> Bibliography -\end{document} - diff --git a/presentations/2023-07-06_final_masters/Makefile b/presentations/2023-07-06_final_masters/Makefile deleted file mode 100644 index 449c34a..0000000 --- a/presentations/2023-07-06_final_masters/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# vim:ft=make --include config.mk - -.PHONY: all clean dist-clean - -### Variables -MAIN_SRC ?= main.tex -TEXENGINE ?= latexmk --pdf - -MAIN_TARGET = $(patsubst %.tex,%.pdf,$(MAIN_SRC)) - -### Targets -all: $(MAIN_TARGET) - -dist: all clean - -$(MAIN_TARGET): $(MAIN_SRC) - $(TEXENGINE) $^ - -dist-clean: clean - @rm -vf *.pdf *.eps *.dvi *.ps - -clean: - @rm -vf *.dat *.log *.out *.aux *.nav *.snm *.toc *.vrb *~ *.fls *.fdb_latexmk *-blx.bib *.bbl *.blg *.run.xml diff --git a/presentations/2023-07-06_final_masters/README.md b/presentations/2023-07-06_final_masters/README.md deleted file mode 100644 index 9bf11ed..0000000 --- a/presentations/2023-07-06_final_masters/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Master's Final Presentation - -[source](2023-Masters.tex) - -## Outline - - 1. Cosmic Particles from outerspace - 1. Flux to Detectors - 2. Radio Detectors (AugerPrime RD, GRAND) - 3. Radio Interferometry - - 3. GPS Timing mechanism and reference timing - 1. (White Rabbit) - 2. GRAND setup - - 4. Reference Beacon - 1. Common problem - 2. Pulse and SNR - 3. (Multi)Sine and SNR - - 5. Single Sine Synchronisation - - 6. Conclusion - - Single Sine works: mix of radio interferometry - - Outlook: - 1. 67MHz Auger - 2. GRAND - diff --git a/presentations/2023-07-06_final_masters/config.mk b/presentations/2023-07-06_final_masters/config.mk deleted file mode 100644 index 3c7a2e6..0000000 --- a/presentations/2023-07-06_final_masters/config.mk +++ /dev/null @@ -1 +0,0 @@ -MAIN_SRC=2023-Masters.tex