\section{marlintpc\-:\-:Track\-Fitter\-Factory Class Reference}
\label{classmarlintpc_1_1TrackFitterFactory}\index{marlintpc\-::\-Track\-Fitter\-Factory@{marlintpc\-::\-Track\-Fitter\-Factory}}


The \doxyref{Track\-Fitter\-Factory}{p.}{classmarlintpc_1_1TrackFitterFactory} is an interface to handle track fitters.  




{\ttfamily \#include $<$Track\-Fitter\-Factory.\-h$>$}

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class {\bf Fitter\-Type\-Exception}
\begin{DoxyCompactList}\small\item\em Define a new exception class for unkonwn fitter types. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static {\bf Track\-Fitter\-Base} $\ast$ {\bf get\-Track\-Fitter} (unsigned char fitter\-Type, E\-V\-E\-N\-T\-::\-L\-C\-Parameters const $\ast$collection\-Parameters, E\-V\-E\-N\-T\-::\-L\-C\-Event const $\ast$event=0)
\begin{DoxyCompactList}\small\item\em Get a track fitter and reinitialise its parameters. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
The \doxyref{Track\-Fitter\-Factory}{p.}{classmarlintpc_1_1TrackFitterFactory} is an interface to handle track fitters. 

Analysis processors use the {\ttfamily calculate\-Residuals} function of the track fitters so this code does not have to be implemented twice. Especially for analysis processors the abstract interface means that the analysis code is independent from the track fitter used, but all the specialities of a track fitter like geometry dependence, dependence on the gas mixture and whatever the special fitter requires are taken into accout.

The get\-Track\-Fitter function is called in every event. It is passed an instance of L\-C\-Parametes, which are the collection parameters of the collection containing the tracks. These parameters contain information about the parameters the track fitter might need. The Track\-Fitter is only created once and with every new call the parameters are reset. This code is neither reentrant nor thread safe.

Every developer of a new track fitter has to add his processor to the get\-Track\-Fitter function. 

\subsection{Member Function Documentation}
\index{marlintpc\-::\-Track\-Fitter\-Factory@{marlintpc\-::\-Track\-Fitter\-Factory}!get\-Track\-Fitter@{get\-Track\-Fitter}}
\index{get\-Track\-Fitter@{get\-Track\-Fitter}!marlintpc::TrackFitterFactory@{marlintpc\-::\-Track\-Fitter\-Factory}}
\subsubsection[{get\-Track\-Fitter}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Track\-Fitter\-Base} $\ast$ marlintpc\-::\-Track\-Fitter\-Factory\-::get\-Track\-Fitter (
\begin{DoxyParamCaption}
\item[{unsigned char}]{fitter\-Type, }
\item[{E\-V\-E\-N\-T\-::\-L\-C\-Parameters const $\ast$}]{collection\-Parameters, }
\item[{E\-V\-E\-N\-T\-::\-L\-C\-Event const $\ast$}]{event = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\label{classmarlintpc_1_1TrackFitterFactory_aae1bd68ac1c4700af303736cab9afdb8}


Get a track fitter and reinitialise its parameters. 

A fitter of the given type is returned Parameters for the fitter are defined in the L\-C\-Parameters.

Some fitter types might need information from the conditions data or the full collection of hits to revisit which hit belongs to the track. This is transferred by giving a pointer to the event. If the specific fitter type does not need the event it can be ommitted. Note\-: The fitter shall not modify the event, this it is a pointer to a const object. !\-T\-O B\-E D\-I\-S\-C\-U\-S\-S\-E\-D! Throws !!!\-F\-I\-X\-M\-E what kind of exception in case the fitter need conditon data but {\ttfamily event} = 0. 

References marlintpc\-::\-Track\-Fitter\-Simple\-Chi\-Square\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Simple\-Helix\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Linear\-Regression\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Simple\-Minimizer\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Simple\-Chi\-Square\-Pads\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Kalman\-::get\-Instance(), marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-K\-A\-L\-M\-A\-N, marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-L\-I\-K\-E\-L\-I\-H\-O\-O\-D, marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-L\-I\-N\-E\-A\-R\-R\-E\-G\-R\-E\-S\-S\-I\-O\-N, marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-S\-I\-M\-P\-L\-E\-C\-H\-I\-S\-Q\-U\-A\-R\-E, marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-S\-I\-M\-P\-L\-E\-C\-H\-I\-S\-Q\-U\-A\-R\-E\-P\-A\-D\-S, marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-S\-I\-M\-P\-L\-E\-H\-E\-L\-I\-X\-F\-I\-T, and marlintpc\-::\-Track\-Fitter\-Base\-::\-Fitter\-Types\-::\-S\-I\-M\-P\-L\-E\-M\-I\-N\-I\-M\-I\-Z\-E\-R.



Referenced by marlintpc\-::\-Time\-Pix\-Hough\-Transform\-Normal\-Processor\-::\-Add\-Hits(), marlintpc\-::\-Biased\-Residuals\-Processor\-::process\-Event(), marlintpc\-::\-Geometric\-Mean\-Residuals\-Tuple\-Processor\-::process\-Event(), marlintpc\-::\-Pad\-Response\-Processor\-::process\-Event(), marlintpc\-::\-Track\-Fitter\-Simple\-Minimizer\-Processor\-::process\-Event(), and marlintpc\-::\-Track\-Fitter\-Simple\-Chi\-Square\-Processor\-::process\-Event().



The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
Track\-Fitter\-Factory.\-h\item 
Track\-Fitter\-Factory.\-cc\end{DoxyCompactItemize}
