% CORRETTO BABBO
\cleardoublepage
\selectlanguage{english}
\phantomsection
\addcontentsline{toc}{section}{Abstract}
\begin{abstract}
\thispagestyle{plain}
This thesis reports a study for a new real-time trigger for the NA62 experiment based on Graphical Processing Units (GPUs).

The NA62 experiment was devised to study with unprecedented precision the ultra-rare decay $K^+ \rightarrow \pi^+ \nu \bar{\nu}$, a process mediated by Flavour-Changing Neutral Currents (FCNC) whose exceptional theoretical cleanliness provides a unique probe to test the Standard Model. The use of a high-rate kaon beam will result in an event rate of about 15~\si{\mega\hertz}, so high that it will be impossible to store data on disk without an efficient selection.
The experiment therefore devised three trigger levels, allowing to reduce the data rate fed to the readout PC farm down to $\sim$10~\si{\kilo\hertz}.

%For this thesis I developed an online trigger algorithm that uses data fed by the RICH (Ring Imaging CHerenkov counter) detector. RICH primitives are evaluated in real-time to produce selective trigger decisions based on kinematical constraints.
For this thesis I developed an online trigger algorithm that uses data fed by the RICH (Ring Imaging CHerenkov counter) detector in real-time to allow a rejection of the dominant background $K^+\rightarrow\pi^+\pi^0$ based on kinematical constraints.

%As a starting point for the development of this algorithm, I verified the feasibility of such a trigger through Montecarlo simulations. I measured the reconstruction resolution, achieved by the RICH detector alone, of the kinematical variables used for the event selection: in fact, 
%% I measured the resolution on the reconstruction of the kinematical variables used for the event selection achieved by means of the RICH detector alone, as
% for a first-level online trigger it is not possible to combine primitives fed by different detectors. After that, I analysed the background rejection power and the signal efficiency of several kinematical constraints, and I designed an actual trigger algorithm.

As a starting point for the development of this algorithm, I verified the feasibility of such a trigger through Montecarlo simulations. I measured the reconstruction resolution, achieved by the RICH detector alone, of the kinematical variables used for the event selection. After that, I analysed the background rejection power and the signal efficiency of several kinematical constraints, and I designed an actual trigger algorithm.

The necessity of running the algorithm in real-time, with a maximum latency of 1~\si{\milli\second} per event, drove the choice of exploiting the parallel computing power of GPUs. A parallelized algorithm was therefore developed, that can fit up to 4 Cherenkov rings per event. Moreover, a large number of events are processed concurrently. No parallelized and seedless multi-ring fitting algorithm existed before.
%up to now.

%The developed algorithm consists of two parts. A first pattern recognition stage allows to assign the hit photomultipliers to up to 4 ring candidates; candidates data are then fed to a robust single-ring fit routine. The program was tested on GPUs, and its efficiency and execution latency proved to be compatible with the requirements.
The developed algorithm consists of a pattern recognition stage, to assign the hits to up to 4 ring candidates, and of a robust single-ring fit routine. The program was tested on GPUs, and its performance and execution latency proved to be compatible with the requirements.

This work proves that alternative trigger designs are possible for the NA62 experiment, and represents a starting point for the introduction of flexible GPU-based real-time triggers in High Energy Physics.
%to introduce the use of flexible GPU-based real-time triggers in High Energy Physics.
%Qui ci va l'abstract in inglese
%I have investigated the possibility to set up a real-time GPU-based trigger algorithm which would exploit the P.ID. capability of the RICH (Ring Imaging \v{C}erenkov) detector in the earliest trigger stages. The latency and throughput of modern commercial GPUs were found to be compatible with the requirements of a high-rate Level 0 trigger such as that of NA62 in previous studies. This work proved promising: the $K^+ \rightarrow \pi^+ \pi^0$ background features a closed kinematics and can be easily rejected using only the raw RICH data. These results may be improved further in collaboration with the INFN Pisa group.
\end{abstract}


\cleardoublepage
\selectlanguage{italian}
\phantomsection
\addcontentsline{toc}{section}{Sommario}
\begin{abstract}
\thispagestyle{plain}
Questa tesi costituisce uno studio per un algoritmo di \textit{trigger} in tempo reale basato su GPU (Graphical Processing Units) per l'esperimento NA62.

NA62 \`{e} un esperimento progettato per misurare con precisione il decadimento ultra raro $K^+ \rightarrow \pi^+ \nu \bar{\nu}$, un canale mediato da correnti neutre \textit{flavour-changing} estremamente sensibile all'eventuale presenza di nuova fisica. 
L'elevato \textit{rate} di eventi rivelati, dell'ordine di 15 \si{\mega\hertz}, non permetter\`{a} una archiviazione su disco dei dati non moderata da severi criteri di selezione. Sono perci\`{o} necessari dei livelli di \textit{trigger} che consentano
% il salvataggio dei soli eventi di segnale, rigettando il fondo fino ad un livello di $10^{-11}$.
di ridurre il \textit{rate} di eventi salvati fino a circa una decina di \si{\kilo\hertz}.

L'algoritmo sviluppato si basa sull'uso del rivelatore RICH (\textit{Ring Imaging CHerenkov counter}). Le informazioni primitive inviate dal RICH vengono valutate in tempo reale, per produrre una decisione di \textit{trigger} basata prevalentemente su considerazioni di cinematica.

In una prima fase ho verificato, tramite simulazione Montecarlo, la fattibilit\`{a} e significativit\`{a} di tale progetto.
Ho dapprima misurato la risoluzione sulla ricostruzione di alcune quantit\`{a} cinematiche ricavate utilizzando unicamente il rivelatore RICH, poich\'{e} per un \textit{trigger} di primo livello in tempo reale non sar\`{a} possibile mettere in relazione dati forniti da rivelatori diversi. 
%Ho misurato la risoluzione del RICH sulla ricostruzione di alcune quantit\`{a} cinematiche, 
Ho studiato poi fino a che livello fosse possibile separare il segnale dal fondo, misurando l'efficienza di reiezione e l'accettanza per il segnale al variare di alcuni parametri di selezione.

%Una volta validato il potere di reiezione di un algoritmo di \textit{trigger} basato sulla cinematica ricostruita dal RICH, ho contribuito a sviluppare e testare un programma in grado di eseguire un \textit{fit} di fino a 4 anelli Cherenkov alla matrice di fotomoltiplicatori che costituisce il sistema di lettura del RICH.

Data la necessit\`{a} di eseguire il programma in tempo reale, con una latenza massima di 1 \si{\milli\second} per evento, si \`{e} deciso di sfruttare il potere computazionale parallelo proprio delle GPU (processori grafici ad elevato parallelismo). E' stato quindi sviluppato un algoritmo in grado di eseguire simultaneamente non solo le istruzioni relative ad eventi diversi, ma anche i \textit{fit} di fino a 4 anelli Cherenkov diversi appartenenti allo stesso evento. Nessun algoritmo parallelo e \textit{seedless} di questo tipo esisteva in letteratura.

L'algoritmo implementato \`{e} composto di due parti: una iniziale di riconoscimento di \textit{pattern}, che estrae il numero di anelli presenti nella matrice ed identifica gli \textit{hit} appartenenti a ciascuno di essi, ed una di \textit{fit} dei singoli cerchi. Il programma \`{e} stato testato su GPU, ed efficienza e tempi di esecuzione risultano compatibili con le richieste. Questo lavoro apre la possibilit\`{a} di implementare \textit{trigger} alternativi e flessibili per NA62 e rappresenta un primo esempio prototipale dell'uso di GPU in tempo reale.
%L'algoritmo di \textit{fit} a molti cerchi implementato per questo progetto \`{e} composto di due parti. Alcune istruzioni di riconoscimento di \textit{pattern} vengono eseguite inizialmente, con lo scopo di estrarre il numero di cerchi presenti nella matrice, e di assegnare ogni \textit{hit} ad uno dei cerchi. Vengono poi effettuati dei \textit{fit} di singolo cerchio sulle collezioni di punti così ricavate.
\end{abstract}