\section{Forward\-Tracking Class Reference}
\label{classForwardTracking}\index{Forward\-Tracking@{Forward\-Tracking}}


Standallone Forward Tracking Processor for Marlin.  




{\ttfamily \#include $<$Forward\-Tracking.\-h$>$}

Inheritance diagram for Forward\-Tracking\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classForwardTracking}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual Processor $\ast$ {\bfseries new\-Processor} ()\label{classForwardTracking_a7ab7a680bea59a6684c7f6d4be7a5787}

\item 
virtual void {\bf init} ()
\begin{DoxyCompactList}\small\item\em Called at the begin of the job before anything is read. \end{DoxyCompactList}\item 
virtual void {\bf process\-Run\-Header} (L\-C\-Run\-Header $\ast$run)\label{classForwardTracking_a2c429fa98591fea6cd2e0db8e09be764}

\begin{DoxyCompactList}\small\item\em Called for every run. \end{DoxyCompactList}\item 
virtual void {\bf process\-Event} (L\-C\-Event $\ast$evt)
\begin{DoxyCompactList}\small\item\em Called for every event -\/ the working horse. \end{DoxyCompactList}\item 
virtual void {\bfseries check} (L\-C\-Event $\ast$evt)\label{classForwardTracking_ad55d0e679b54785d15ebab6afeea5261}

\item 
virtual void {\bf end} ()\label{classForwardTracking_ad6b83c177ccf52aa9eb3d8bc189c9a80}

\begin{DoxyCompactList}\small\item\em Called after data processing for clean up. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
std\-::map$<$ I\-Hit $\ast$, std\-::vector\\*
$<$ I\-Hit $\ast$ $>$ $>$ {\bf get\-Overlap\-Connection\-Map} (const std\-::map$<$ int, std\-::vector$<$ I\-Hit $\ast$ $>$ $>$ \&map\-\_\-sector\-\_\-hits, const Sector\-System\-F\-T\-D $\ast$sec\-Sys\-F\-T\-D, float dist\-Max)
\item 
std\-::vector$<$ Raw\-Track $>$ {\bf get\-Raw\-Tracks\-Plus\-Overlapping\-Hits} (Raw\-Track raw\-Track, std\-::map$<$ I\-Hit $\ast$, std\-::vector$<$ I\-Hit $\ast$ $>$ $>$ \&map\-\_\-hit\-Front\-\_\-hits\-Back)
\begin{DoxyCompactList}\small\item\em Adds hits from overlapping areas to a Raw\-Track in every possible combination. \end{DoxyCompactList}\item 
void {\bf finalise\-Track} (Track\-Impl $\ast$track\-Impl)
\begin{DoxyCompactList}\small\item\em Finalises the track\-: fits it and adds Track\-States at I\-P, Calorimeter Face, inner-\/ and outermost hit. \end{DoxyCompactList}\item 
bool {\bf set\-Criteria} (unsigned round)
\begin{DoxyCompactList}\small\item\em Sets the cut off values for all the criteria. \end{DoxyCompactList}\item 
std\-::string {\bf get\-Info\-\_\-map\-\_\-sector\-\_\-hits} ()
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
std\-::vector$<$ std\-::string $>$ {\bf \-\_\-\-F\-T\-D\-Hit\-Collections}\label{classForwardTracking_a3acb71eb83f859dbabc0141bc2226772}

\begin{DoxyCompactList}\small\item\em Input collection names. \end{DoxyCompactList}\item 
std\-::string {\bf \-\_\-\-Forward\-Track\-Collection}\label{classForwardTracking_a04f48236ff24b384cc53bfd4c1d21ce7}

\begin{DoxyCompactList}\small\item\em Output collection name. \end{DoxyCompactList}\item 
int {\bfseries \-\_\-n\-Run}\label{classForwardTracking_a69115e4bf7dacefd9d372ee4727f0bf0}

\item 
int {\bfseries \-\_\-n\-Evt}\label{classForwardTracking_ac1759f7d3d08c9fe79d84147ea1a56fd}

\item 
double {\bf \-\_\-\-Bz}\label{classForwardTracking_ab294efa9cdf30a55e7ec1822707ad2a0}

\begin{DoxyCompactList}\small\item\em B field in z direction. \end{DoxyCompactList}\item 
double {\bf \-\_\-chi2\-Prob\-Cut}\label{classForwardTracking_a384c1d650d9fffc730271d0ee67a830b}

\begin{DoxyCompactList}\small\item\em Cut for the Kalman Fit (the chi squared probability) \end{DoxyCompactList}\item 
double {\bf \-\_\-helix\-Fit\-Max}\label{classForwardTracking_adc1a0399bf0c45e428365abe32e89a8e}

\begin{DoxyCompactList}\small\item\em Cut for the Helix fit ( chi squared / degrees of freedom ) \end{DoxyCompactList}\item 
bool {\bfseries \-\_\-\-M\-S\-On}\label{classForwardTracking_a367c7204e56eab8fa1ccd91f0d862d12}

\item 
bool {\bfseries \-\_\-\-Eloss\-On}\label{classForwardTracking_aa87ae559a6646dd5095436d8ca58121b}

\item 
bool {\bfseries \-\_\-\-Smooth\-On}\label{classForwardTracking_ae09bb30a189cd99af42015af76a0f343}

\item 
int {\bf \-\_\-max\-Hits\-Per\-Sector}\label{classForwardTracking_ade61bb838e746cc5766455a84f7b5023}

\begin{DoxyCompactList}\small\item\em If this number of hits in a sector is surpassed for any sector, the hits in the sector will be dropped and the quality of the output track collection will be set to poor. \end{DoxyCompactList}\item 
double {\bfseries \-\_\-\-H\-N\-N\-\_\-\-Omega}\label{classForwardTracking_a9b5c49ab1a81a06e0e948fef4c4a44d4}

\item 
double {\bfseries \-\_\-\-H\-N\-N\-\_\-\-Activation\-Threshold}\label{classForwardTracking_ab714e968def9aa08df97839f3833d885}

\item 
double {\bfseries \-\_\-\-H\-N\-N\-\_\-\-T\-Inf}\label{classForwardTracking_aeac31ea7891158ede1e1f2c0790bcfa1}

\item 
std\-::map$<$ int, std\-::vector\\*
$<$ I\-Hit $\ast$ $>$ $>$ {\bf \-\_\-map\-\_\-sector\-\_\-hits}\label{classForwardTracking_ad52166cebfd3cad519a215cde2b04c5c}

\begin{DoxyCompactList}\small\item\em A map to store the hits according to their sectors. \end{DoxyCompactList}\item 
std\-::vector$<$ std\-::string $>$ {\bf \-\_\-criteria\-Names}\label{classForwardTracking_a0908e4091cdb603ffd9866743a6b2694}

\begin{DoxyCompactList}\small\item\em Names of the used criteria. \end{DoxyCompactList}\item 
std\-::map$<$ std\-::string, \\*
std\-::vector$<$ float $>$ $>$ {\bf \-\_\-crit\-Minima}\label{classForwardTracking_a718d1ca23f2b3d4792d993d23d1269f8}

\begin{DoxyCompactList}\small\item\em Map containing the name of a criterion and a vector of the minimum cut offs for it. \end{DoxyCompactList}\item 
std\-::map$<$ std\-::string, \\*
std\-::vector$<$ float $>$ $>$ {\bf \-\_\-crit\-Maxima}\label{classForwardTracking_ad2eda57d454595fadc5d9987884ca133}

\begin{DoxyCompactList}\small\item\em Map containing the name of a criterion and a vector of the maximum cut offs for it. \end{DoxyCompactList}\item 
int {\bf \-\_\-hits\-Per\-Track\-Min}\label{classForwardTracking_a53a37dda50f01a556ce78235f35957bd}

\begin{DoxyCompactList}\small\item\em Minimum number of hits a track has to have in order to be stored. \end{DoxyCompactList}\item 
std\-::vector$<$ I\-Criterion $\ast$ $>$ {\bf \-\_\-crit2\-Vec}\label{classForwardTracking_a7919d3f2fa8b60fc6ab8fb0a6a6a24c5}

\begin{DoxyCompactList}\small\item\em A vector of criteria for 2 hits (2 1-\/hit segments) \end{DoxyCompactList}\item 
std\-::vector$<$ I\-Criterion $\ast$ $>$ {\bf \-\_\-crit3\-Vec}\label{classForwardTracking_ac4f1f32fcd333306b48026ac16df7251}

\begin{DoxyCompactList}\small\item\em A vector of criteria for 3 hits (2 2-\/hit segments) \end{DoxyCompactList}\item 
std\-::vector$<$ I\-Criterion $\ast$ $>$ {\bf \-\_\-crit4\-Vec}\label{classForwardTracking_aeb8bc0ed6d3ef70d8bbd82f3791e9cf0}

\begin{DoxyCompactList}\small\item\em A vector of criteria for 4 hits (2 3-\/hit segments) \end{DoxyCompactList}\item 
const Sector\-System\-F\-T\-D $\ast$ {\bfseries \-\_\-sector\-System\-F\-T\-D}\label{classForwardTracking_aca0a9be4f865f681a274047dc0105be6}

\item 
bool {\bfseries \-\_\-use\-C\-E\-D}\label{classForwardTracking_a558f12999cb9a5d8d4d062825bd6c190}

\item 
double {\bf \-\_\-overlapping\-Hits\-Dist\-Max}\label{classForwardTracking_a41953bfcb1171a25aa33e6d2d3ebdbb9}

\begin{DoxyCompactList}\small\item\em the maximum distance of two hits from overlapping petals to be considered as possible part of one track \end{DoxyCompactList}\item 
bool {\bf \-\_\-take\-Best\-Version\-Of\-Track}\label{classForwardTracking_af32045916dbd798c1937f05b9f68cb17}

\begin{DoxyCompactList}\small\item\em true = when adding hits from overlapping petals, store only the best track; \par
 false = store all tracks\-S \end{DoxyCompactList}\item 
int {\bf \-\_\-max\-Connections\-Automaton}
\begin{DoxyCompactList}\small\item\em the maximum number of connections that are allowed in the automaton, if this value is surpassed, rerun the automaton with tighter cuts or stop it entirely. \end{DoxyCompactList}\item 
std\-::string {\bf \-\_\-best\-Subset\-Finder}\label{classForwardTracking_a28a989e90716f9556ef08b388ae033b1}

\begin{DoxyCompactList}\small\item\em The method used to find the best subset of tracks. \end{DoxyCompactList}\item 
unsigned {\bfseries \-\_\-n\-Track\-Candidates}\label{classForwardTracking_ab271b23e656b05274848b23a6b723d36}

\item 
unsigned {\bfseries \-\_\-n\-Track\-Candidates\-Plus}\label{classForwardTracking_a0014d33f14cb82ca4ef569d132ff53e1}

\item 
Marlin\-Trk\-::\-I\-Marlin\-Trk\-System $\ast$ {\bfseries \-\_\-trk\-System}\label{classForwardTracking_aafd56cc330051b9c602049b5ddae6b42}

\item 
std\-::string {\bfseries \-\_\-trk\-System\-Name}\label{classForwardTracking_abb42ad563c98b2e7c460c2add7d98940}

\item 
bool {\bfseries \-\_\-get\-Track\-State\-At\-Calo\-Face}\label{classForwardTracking_ae686efe9bce505823180b4cc00b70591}

\item 
int {\bf \-\_\-output\-\_\-track\-\_\-col\-\_\-quality}\label{classForwardTracking_a70a0a87784d4bddbb459936dbc8e17bd}

\begin{DoxyCompactList}\small\item\em The quality of the output track collection. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Protected Attributes}
\begin{DoxyCompactItemize}
\item 
static const int {\bfseries \-\_\-output\-\_\-track\-\_\-col\-\_\-quality\-\_\-\-G\-O\-O\-D} = 1\label{classForwardTracking_a2e2500045df2be8a2ce032ffccd7b31a}

\item 
static const int {\bfseries \-\_\-output\-\_\-track\-\_\-col\-\_\-quality\-\_\-\-F\-A\-I\-R} = 2\label{classForwardTracking_a72126a7ed6cb4223a24feafa9fa3ddc9}

\item 
static const int {\bfseries \-\_\-output\-\_\-track\-\_\-col\-\_\-quality\-\_\-\-P\-O\-O\-R} = 3\label{classForwardTracking_a3ae1b78bc7a3a0d74d0f668eacf7864d}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Standallone Forward Tracking Processor for Marlin. 

\par


Reconstructs the tracks through the F\-T\-D \par


For a summary of what happens during each event see the method process\-Event

\subparagraph*{Input -\/ Prerequisites}

The hits in the Forward Tracking Detector F\-T\-D

\subparagraph*{Output}

A collection of reconstructed Tracks.


\begin{DoxyParams}{Parameters}
{\em F\-T\-D\-Hit\-Collections} & The collections containing the F\-T\-D hits \par
 (default value \char`\"{}\-F\-T\-D\-Tracker\-Hits F\-T\-D\-Space\-Points\char`\"{} (string vector) )\\
\hline
{\em Forward\-Track\-Collection} & Name of the Forward Tracking output collection\par
 (default value \char`\"{}\-Forward\-Tracks\char`\"{} )\\
\hline
{\em Multiple\-Scattering\-On} & Whether to take multiple scattering into account when fitting the tracks\par
 (default value true )\\
\hline
{\em Energy\-Loss\-On} & Whether to take energy loss into account when fitting the tracks\par
 (default value true )\\
\hline
{\em Smooth\-On} & Whether to smooth all measurement sites in fit\par
 (default value false )\\
\hline
{\em Chi2\-Prob\-Cut} & Tracks with a chi2 probability below this will get sorted out\par
 (default value 0.\-005 )\\
\hline
{\em Helix\-Fit\-Max} & the maximum chi2/\-Ndf that is allowed as result of a helix fit (default value 500 )\\
\hline
{\em Overlapping\-Hits\-Dist\-Max} & The maximum distance of hits from overlapping petals belonging to one track\par
 (default value 3.\-5 )\\
\hline
{\em Hits\-Per\-Track\-Min} & The minimum number of hits to create a track\par
 (default value 3 )\\
\hline
{\em Best\-Subset\-Finder} & The method used to find the best non overlapping subset of tracks. Available are\-: Subset\-Hopfield\-N\-N, Subset\-Simple and None. None means, that no final search for the best subset is done and overlapping tracks are possible. \par
 (default value Track\-Subset\-Hopfield\-N\-N )\\
\hline
{\em Criteria} & A vector of the criteria that are going to be used by the Cellular Automaton. \par
 For every criterion a min and max needs to be set!!!\par
 (default value is defined in class Criteria )\\
\hline
{\em Name\-Of\-A\-Criterion\-\_\-min/max} & For every used criterion a minimum and maximum value needs to be set. \par
 If a criterion is named \char`\"{}\-Crit\-\_\-\-Example\char`\"{}, then the min parameter would be\-: Crit\-\_\-\-Example\-\_\-min and the max parameter Crit\-\_\-\-Example\-\_\-max.\par
 You can enter more than one value!!! So for example you could write something like $<$parameter name=\char`\"{}\-Crit\-\_\-\-Example\-\_\-min\char`\"{} type=\char`\"{}float\char`\"{}$>$30 0.\-8$<$/parameter$>$.\par
 This means, that if the Cellular Automaton creates too many connections (how many is defined in \char`\"{}\-Max\-Connections\-Automaton\char`\"{} ) it reruns it with the next set of parameters. Thus allowing to tighten the cuts, if there are too many connections and so preventing it from getting stuck in very bad combinatorial situations. So in this example the Automaton will first run with the Crit\-\_\-\-Example\-\_\-min of 30 and if that generates too many connections, it will rerun it with the value 0.\-8.\par
 If for a criterion no further parameters are specified, the first ones will be taken on reruns.\\
\hline
{\em H\-N\-N\-\_\-\-Omega} & Omega for the Hopfield Neural Network; the higher omega the higher the influence of the quality indicator\par
 (default value 0.\-75)\\
\hline
{\em H\-N\-N\-\_\-\-Activation\-\_\-\-Threshold} & The activation threshold for the Hopfield Neural Network\par
 (default value 0.\-5)\\
\hline
{\em H\-N\-N\-\_\-\-T\-Inf} & The temperature limit of the Hopfield Neural Network\par
 (default value 0.\-1)\\
\hline
{\em Max\-Connections\-Automaton} & If the automaton has more connections than this it will be redone with the next cut off values for the criteria.\par
 If there are no further new values for the criteria, the event will be skipped.\par
 (default value 100000 )\\
\hline
{\em Max\-Hits\-Per\-Sector} & If on any single sector there are more hits than this, all the hits in the sector get dropped. This is to prevent combinatorial breakdown (It is a second safety mechanism, the first one being Max\-Connections\-Automaton. But if there are soooo many hits, that already the first round of the Cellular Automaton would take forever, this mechanism prevents it) \par
 (default value 1000)\\
\hline
\end{DoxyParams}
\begin{DoxyAuthor}{Author}
Robin Glattauer H\-E\-P\-H\-Y, Wien 
\end{DoxyAuthor}


\subsection{Member Function Documentation}
\index{Forward\-Tracking@{Forward\-Tracking}!finalise\-Track@{finalise\-Track}}
\index{finalise\-Track@{finalise\-Track}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{finalise\-Track}]{\setlength{\rightskip}{0pt plus 5cm}void Forward\-Tracking\-::finalise\-Track (
\begin{DoxyParamCaption}
\item[{Track\-Impl $\ast$}]{track\-Impl}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_aaeba3378bb96ac729adcec57a485e8ec}


Finalises the track\-: fits it and adds Track\-States at I\-P, Calorimeter Face, inner-\/ and outermost hit. 

Sets the subdetector hit numbers and the radius of the innermost hit. Also sets chi2 and Ndf. \index{Forward\-Tracking@{Forward\-Tracking}!get\-Info\-\_\-map\-\_\-sector\-\_\-hits@{get\-Info\-\_\-map\-\_\-sector\-\_\-hits}}
\index{get\-Info\-\_\-map\-\_\-sector\-\_\-hits@{get\-Info\-\_\-map\-\_\-sector\-\_\-hits}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{get\-Info\-\_\-map\-\_\-sector\-\_\-hits}]{\setlength{\rightskip}{0pt plus 5cm}std\-::string Forward\-Tracking\-::get\-Info\-\_\-map\-\_\-sector\-\_\-hits (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_a28c8bfb8b88bfc511b0200b84d96d2e5}
\begin{DoxyReturn}{Returns}
Info on the content of \-\_\-map\-\_\-sector\-\_\-hits. Says how many hits are in each sector 
\end{DoxyReturn}
\index{Forward\-Tracking@{Forward\-Tracking}!get\-Overlap\-Connection\-Map@{get\-Overlap\-Connection\-Map}}
\index{get\-Overlap\-Connection\-Map@{get\-Overlap\-Connection\-Map}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{get\-Overlap\-Connection\-Map}]{\setlength{\rightskip}{0pt plus 5cm}std\-::map$<$ I\-Hit $\ast$, std\-::vector$<$ I\-Hit $\ast$ $>$ $>$ Forward\-Tracking\-::get\-Overlap\-Connection\-Map (
\begin{DoxyParamCaption}
\item[{const std\-::map$<$ int, std\-::vector$<$ I\-Hit $\ast$ $>$ $>$ \&}]{map\-\_\-sector\-\_\-hits, }
\item[{const Sector\-System\-F\-T\-D $\ast$}]{sec\-Sys\-F\-T\-D, }
\item[{float}]{dist\-Max}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_a8bddeeb71bd99f268041815979b54fc3}
\begin{DoxyReturn}{Returns}
a map that links hits with overlapping hits on the petals behind
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em map\-\_\-sector\-\_\-hits} & a map with first= the sector number. second = the hits in the sector.\\
\hline
{\em sec\-Sys\-F\-T\-D} & the Sector\-System\-F\-T\-D that is used\\
\hline
{\em dist\-Max} & the maximum distance of two hits. If two hits are on the right petals and their distance is smaller than this, the connection will be saved in the returned map. \\
\hline
\end{DoxyParams}
\index{Forward\-Tracking@{Forward\-Tracking}!get\-Raw\-Tracks\-Plus\-Overlapping\-Hits@{get\-Raw\-Tracks\-Plus\-Overlapping\-Hits}}
\index{get\-Raw\-Tracks\-Plus\-Overlapping\-Hits@{get\-Raw\-Tracks\-Plus\-Overlapping\-Hits}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{get\-Raw\-Tracks\-Plus\-Overlapping\-Hits}]{\setlength{\rightskip}{0pt plus 5cm}std\-::vector$<$ Raw\-Track $>$ Forward\-Tracking\-::get\-Raw\-Tracks\-Plus\-Overlapping\-Hits (
\begin{DoxyParamCaption}
\item[{Raw\-Track}]{raw\-Track, }
\item[{std\-::map$<$ I\-Hit $\ast$, std\-::vector$<$ I\-Hit $\ast$ $>$ $>$ \&}]{map\-\_\-hit\-Front\-\_\-hits\-Back}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_a7968e43d01ffecba6c1e5c44188bf230}


Adds hits from overlapping areas to a Raw\-Track in every possible combination. 

\begin{DoxyReturn}{Returns}
all of the resulting Raw\-Tracks
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em raw\-Track} & a Raw\-Track (vector of I\-Hit$\ast$ ), we want to add hits from overlapping regions\\
\hline
{\em map\-\_\-hit\-Front\-\_\-hits\-Back} & a map, where I\-Hit$\ast$ are the keys and the values are vectors of hits that are in an overlapping region behind them. \\
\hline
\end{DoxyParams}
\index{Forward\-Tracking@{Forward\-Tracking}!init@{init}}
\index{init@{init}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{init}]{\setlength{\rightskip}{0pt plus 5cm}void Forward\-Tracking\-::init (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}\label{classForwardTracking_a7f1802392593b119fe4f9da8b7e25bdd}


Called at the begin of the job before anything is read. 

Use to initialize the processor, e.\-g. book histograms. \index{Forward\-Tracking@{Forward\-Tracking}!process\-Event@{process\-Event}}
\index{process\-Event@{process\-Event}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{process\-Event}]{\setlength{\rightskip}{0pt plus 5cm}void Forward\-Tracking\-::process\-Event (
\begin{DoxyParamCaption}
\item[{L\-C\-Event $\ast$}]{evt}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}\label{classForwardTracking_ac2464b692910b586f79609fb82dd6aa4}


Called for every event -\/ the working horse. 

The basic procedure for reconstruction of tracks in the F\-T\-D is as follows\-:


\begin{DoxyEnumerate}
\item Read in all collections of hits on the F\-T\-D that are passed as steering parameters
\item From every hit in these collections an F\-T\-D\-Hit01 is created. This is, because the Segment\-Builder and the Automaton need their own hit classes.
\item The hits are stored in the map \-\_\-map\-\_\-sector\-\_\-hits. The keys in this map are the sectors and the values of the map are vectors of the hits within those sectors. Sector here means an integer somehow representing a place in the detector. (For using this numbers and getting things like layer or side the class Sector\-System\-F\-T\-D is used.)
\item Make a safety check to ensure no single sector is overflowing with hits. This could give a combinatorial disaster leading to endless calculation times.
\item Add a virtual hit in the place of the I\-P. It is used by the Cellular Automaton as additional information (almost all reconstructable tracks come from a vertex roughly around the I\-P)
\item Look for hits on overlapping petals. If two petals from the F\-T\-D overlap, a track may pass through both and thus create two hits in close range. For pattern recognition as it is now, they are not useful. (Imagine you try to guess the radius of the helix formed by a track and you have 3 hits. If these 3 hits are sensibly spaced, this is no problem. But now imagine, that two of them are very close. Just a small deviation in the relative position of those two would give entirely different results.) Such short connections are therefore looked for and stored, but are not dealt with until later the track candidates are found.
\item The Segment\-Builder takes the hits and a vector of criteria.\-These criteria tell the Segment\-Builder when two hits might be part of a possible track. (For example, when we look for stiff tracks, we can form a line from one hit to the other and demand that this line will come close to the I\-P. ) The Segment\-Builder as the name suggests builds segments from the hits. A Segment is essentially a part of a track. For now a segment consists of a single hit. B\-U\-T\-: in contrast to a hit it knows all other segments it is connected to. Lets take an easy example\-: A track crosses layer 2,3,4 and 5 creating hits A,B,C and D. Then, if the track is not very ugly (huge multiple sacttering or energy loss ) the Segment\-Builder will create corresponding segments A,B,C and D. D is connected with C. C with B, B with A and A with the I\-P. So in these connections the true track is already contained. For real situations we have of course many more hits and many more tracks and background and so on. So the connections are plenty and if we took every possible track we could create from them, we would kill the system. Therefore we use the Cellular Automaton to get rid of as much as possible.
\item The Cellular Automaton\-: As a result from the Segment\-Builder we get an Automaton object. It has all the segments the Segment\-Builder created and from us it gets some criteria to work with. (These Criteria again tell us when a connection makes sense and when it doesn't. Only the connections now get longer and involve first 3 hits and then 4). It first builds longer segments (now containing 2 hits instead of 1). These longer segments are again connected with each other (connections are made if the criteria allow it). The Automaton then looks for connections that go all the way through to the innermost layer (the I\-P). Segments not connected all the way through to the I\-P get deleted. It might be a good idea to look into {\tt Introduction to the Cellular Automaton} for more details on the Cellular Automaton. The summary is, that with every step and every criterion the C\-A is able to sort out combinatorial background until at the end we extract track candidates from it.
\item Next we iterate over every trackcandidate we got.
\item The hits from overlapping petals are added and every possible combination of the trackcandidate and the hits we could add is created. The best version is then taken (if this is switched on in the steering parameters).
\item Cuts\-: First we do a helix fit. If the result (chi2 / Ndf ) is too bad the track is dropped. Then we do a Kalman Fit. Also if the results here (chi squared probability) are bad the track is not saved.
\item Find the best subset\-: the tracks we now gathered may not be all compatible with each other (i.\-e. share hits). This situation is resolved with a best subset finder like the Hopfield Neural Network.
\item Now the tracks are all compatible and suited our different criteria. It is time to save them. At the end they get finalised and stored in the output collection. 
\end{DoxyEnumerate}\index{Forward\-Tracking@{Forward\-Tracking}!set\-Criteria@{set\-Criteria}}
\index{set\-Criteria@{set\-Criteria}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{set\-Criteria}]{\setlength{\rightskip}{0pt plus 5cm}bool Forward\-Tracking\-::set\-Criteria (
\begin{DoxyParamCaption}
\item[{unsigned}]{round}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_ae92a4b60c9ec3bf126af1f7b8c456149}


Sets the cut off values for all the criteria. 

This method is necessary for cases where the C\-A just finds too much. Therefore it is possible to enter a whole list of cut off values for every criterion (for every min and every max to be more precise), that are then used one after the other. If the C\-A finds way too many connections, we can thus make the cuts tighter and rerun it. If there are still too many connections, just tighten them again.

This method will set the according values. It will read the passed (as steering parameter) cut off values, create criteria from them and store them in the corresponding vectors.

If there are no new cut off values for a criterion, the last one remains.

\begin{DoxyReturn}{Returns}
whether any new cut off value was set. false == there are no new cutoff values anymore
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em round} & The number of the round we are in. I.\-e. the nth time we run the Cellular Automaton. \\
\hline
\end{DoxyParams}


\subsection{Member Data Documentation}
\index{Forward\-Tracking@{Forward\-Tracking}!\-\_\-max\-Connections\-Automaton@{\-\_\-max\-Connections\-Automaton}}
\index{\-\_\-max\-Connections\-Automaton@{\-\_\-max\-Connections\-Automaton}!ForwardTracking@{Forward\-Tracking}}
\subsubsection[{\-\_\-max\-Connections\-Automaton}]{\setlength{\rightskip}{0pt plus 5cm}int Forward\-Tracking\-::\-\_\-max\-Connections\-Automaton\hspace{0.3cm}{\ttfamily [protected]}}\label{classForwardTracking_a2d93f0617de82a5ae095a841c7f673a5}


the maximum number of connections that are allowed in the automaton, if this value is surpassed, rerun the automaton with tighter cuts or stop it entirely. 



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