<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{marlintpc\-:\-:Kal\-Tracking\-Template$&lt;$ Container\-T $&gt;$ Class Template Reference}
\label{classmarlintpc_1_1KalTrackingTemplate}\index{marlintpc\-::\-Kal\-Tracking\-Template$&lt;$ Container\-T $&gt;$@{marlintpc\-::\-Kal\-Tracking\-Template$&lt;$ Container\-T $&gt;$}}


This is a base Kal\-Det tracking class.  




{\ttfamily \#include $&lt;$Kal\-Tracking\-Template.\-h$&gt;$}

Inheritance diagram for marlintpc\-:\-:Kal\-Tracking\-Template$&lt;$ Container\-T $&gt;$\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classmarlintpc_1_1KalTrackingTemplate}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct {\bf Intersection}
\begin{DoxyCompactList}\small\item\em A struct as return value for the extrapolation into the next layer. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\bfseries Kal\-Tracking\-Template} (const gear\-::\-Gear\-Mgr \&amp;gear\-Mgr, unsigned int min\-Track\-Hits, unsigned int max\-Skip\-Rows, double max\-Delta\-Chi2, int hit\-Distance\-Factor, int starting\-Hit\-Mode, double v\-Drift, std\-::string modules\-Not\-Used)\label{classmarlintpc_1_1KalTrackingTemplate_a9b8da5b260ca52a1187ca76731fee85a}

\item 
virtual std\-::list$&lt;$ E\-V\-E\-N\-T\-::\-Track $\ast$ $&gt;$ {\bf find\-Tracks} (E\-V\-E\-N\-T\-::\-L\-C\-Collection const $\ast$hit\-Collection)\label{classmarlintpc_1_1KalTrackingTemplate_a60d48f495a7ba9d0e18ca1d299463db1}

\begin{DoxyCompactList}\small\item\em Find all possible tracks in the given hit collection. \end{DoxyCompactList}\item 
void {\bf set\-Max\-Delta\-Chi2} (double max)\label{classmarlintpc_1_1KalTrackingTemplate_a3e48bd17f1d8c27db386b5e5420d92f6}

\begin{DoxyCompactList}\small\item\em Set maximum delta chi2. \end{DoxyCompactList}\item 
void {\bf set\-Min\-Track\-Hits} (unsigned int min)\label{classmarlintpc_1_1KalTrackingTemplate_ace31ff017f502e23a75a4fe47df67410}

\begin{DoxyCompactList}\small\item\em Set minimum number of hits on track. \end{DoxyCompactList}\item 
void {\bf set\-Max\-Skip\-Rows} (unsigned int max)\label{classmarlintpc_1_1KalTrackingTemplate_a134bfb5558ac722f8c0eed5a226eba4a}

\begin{DoxyCompactList}\small\item\em Set maximum track skipping row. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void {\bf print\-State\-Vector} ()=0
\begin{DoxyCompactList}\small\item\em Convenience function for printing. \end{DoxyCompactList}\item 
virtual I\-M\-P\-L\-::\-Track\-Impl $\ast$ {\bfseries get\-Track} ({\bf Module\-Row\-Hit} first\-Hit)\label{classmarlintpc_1_1KalTrackingTemplate_acd1dd5f8e3d75950c1eca981f711bc49}

\item 
virtual void {\bf search\-Track\-Hit} ()\label{classmarlintpc_1_1KalTrackingTemplate_a169e3d5dfd444bf4823bf1eb958c10f3}

\begin{DoxyCompactList}\small\item\em Search a proper hit to track. \end{DoxyCompactList}\item 
virtual bool {\bf search\-Track} ({\bf Module\-Row\-Hit} hit)=0\label{classmarlintpc_1_1KalTrackingTemplate_a721a4abc63bda1d4b8bf59d79295d317}

\begin{DoxyCompactList}\small\item\em Search track starting from hit. \end{DoxyCompactList}\item 
virtual bool {\bf do\-Add\-And\-Filter} (Container\-T $\ast$track, {\bf Module\-Row\-Hit} hit)=0
\begin{DoxyCompactList}\small\item\em Add a new site to track and update track parameters. \end{DoxyCompactList}\item 
virtual double {\bfseries get\-Track\-Tangent\-And\-Layer\-Angle} (Container\-T $\ast$track\-Candidate)=0\label{classmarlintpc_1_1KalTrackingTemplate_ab01a9d5caac675032129b8a9d97c2fd0}

\item 
virtual double {\bf calculate\-Delta\-Chi2} (Container\-T $\ast$track\-Candidate)=0
\begin{DoxyCompactList}\small\item\em Create a track candidate by making a Kal\-Hit from the \doxyref{Module\-Row\-Hit}{p.}{structmarlintpc_1_1ModuleRowHit} and creating a Track\-Site from it. \end{DoxyCompactList}\item 
virtual void {\bf reset} ()\label{classmarlintpc_1_1KalTrackingTemplate_af29b22c2a3bbdeba94876f994a7fa015}

\begin{DoxyCompactList}\small\item\em Reset parameters and data of track. \end{DoxyCompactList}\item 
virtual void {\bfseries set\-L\-C\-I\-O\-Track\-Parameters} (I\-M\-P\-L\-::\-Track\-Impl $\ast$trk)=0\label{classmarlintpc_1_1KalTrackingTemplate_aaef1b023bc0c6b532d3d0ab0bdf4e15b}

\item 
virtual kaldet\-::\-Gear\-T\-P\-C\-Hit $\ast$ {\bf create\-Gear\-Hit} ({\bf Module\-Row\-Hit} const \&amp;mhr) const \label{classmarlintpc_1_1KalTrackingTemplate_aba7c9fa4b8aae3dd7064036efee48a17}

\begin{DoxyCompactList}\small\item\em Create a kalman hit from module, row and the lcio hit (\doxyref{Module\-Row\-Hit}{p.}{structmarlintpc_1_1ModuleRowHit} object) \end{DoxyCompactList}\item 
virtual {\bf Intersection} {\bf extrapolate\-Into\-Next\-Layer} (int target\-Distance, bool use\-Far\-Hit)=0
\begin{DoxyCompactList}\small\item\em Use the current track state of the container\-Track to extrapolate into the next layer. \end{DoxyCompactList}\item 
virtual const \\*
kaldet\-::\-Gear\-T\-P\-C\-Meas\-Layer $\ast$ {\bfseries extrapolate\-Into\-Next\-Layer} (int target\-Distance)=0\label{classmarlintpc_1_1KalTrackingTemplate_a9b1936d05ebfee6bab129f7ab0b96c7e}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
std\-::vector$&lt;$ {\bf Module\-Row\-Hit} $&gt;$ {\bf \-\_\-hits\-On\-Track}\label{classmarlintpc_1_1KalTrackingTemplate_aa5e0eb761d471d260b4116db9ded4ffd}

\begin{DoxyCompactList}\small\item\em Hit list of the track. \end{DoxyCompactList}\item 
gear\-::\-Gear\-Mgr const \&amp; {\bfseries \-\_\-gear\-Mgr}\label{classmarlintpc_1_1KalTrackingTemplate_a8e2f67d8fa1f2481c879297ebb2a2275}

\item 
{\bf T\-P\-C\-Hit\-Domain} $\ast$ {\bf \-\_\-domain}\label{classmarlintpc_1_1KalTrackingTemplate_a77c000f847cb434691e4734ddcf4ab1e}

\begin{DoxyCompactList}\small\item\em An area on the T\-P\-C readout plane, now it is (module, row) \end{DoxyCompactList}\item 
const gear\-::\-T\-P\-C\-Parameters \&amp; {\bf \-\_\-tpc\-Parameters}\label{classmarlintpc_1_1KalTrackingTemplate_ace2551f918bd29e467bda4ee86dfdfbd}

\begin{DoxyCompactList}\small\item\em T\-P\-C geometry. \end{DoxyCompactList}\item 
unsigned int {\bf \-\_\-min\-Track\-Hits}
\begin{DoxyCompactList}\small\item\em The last hit that is added to track. \end{DoxyCompactList}\item 
int {\bf \-\_\-direction}\label{classmarlintpc_1_1KalTrackingTemplate_a48b6312fc62e48a00d947d3d491d698f}

\begin{DoxyCompactList}\small\item\em track direction \end{DoxyCompactList}\item 
unsigned int {\bf \-\_\-max\-Skip\-Rows}\label{classmarlintpc_1_1KalTrackingTemplate_a2a508dbe16a1448e8b97da24fd49bfff}

\begin{DoxyCompactList}\small\item\em Maximum track skipping row. \end{DoxyCompactList}\item 
double {\bf \-\_\-max\-Delta\-Chi2}\label{classmarlintpc_1_1KalTrackingTemplate_aedf9293bfaa86034ffaa6346260e948d}

\begin{DoxyCompactList}\small\item\em Maximum delta chi2. \end{DoxyCompactList}\item 
int {\bfseries \-\_\-hit\-Distance\-Factor}\label{classmarlintpc_1_1KalTrackingTemplate_a50a581905f9fe0a8d825d338fe8addd5}

\item 
int {\bfseries \-\_\-starting\-Hit\-Mode}\label{classmarlintpc_1_1KalTrackingTemplate_a7fce9547a66060913c82258d28c8c184}

\item 
double {\bfseries \-\_\-v\-Drift}\label{classmarlintpc_1_1KalTrackingTemplate_a93970e3a28bab756ce1f835562f77ecc}

\item 
kaldet\-::\-Gear\-T\-P\-C\-Kal\-Detector {\bfseries \-\_\-kal\-Detector}\label{classmarlintpc_1_1KalTrackingTemplate_aecfbd30d25e23c0b259a9cc3038cb035}

\item 
T\-Kal\-Det\-Cradle {\bfseries \-\_\-detector\-Cradle}\label{classmarlintpc_1_1KalTrackingTemplate_ae6f4362fd272003ea9fe3ab1c95d5b03}

\item 
{\bf T\-P\-C\-Hit\-Map} {\bf \-\_\-tpc\-Hit\-Map}\label{classmarlintpc_1_1KalTrackingTemplate_a4f91178d5a3ef3c5e5f17058d0000ac7}

\begin{DoxyCompactList}\small\item\em The container of all arranged hits. \end{DoxyCompactList}\item 
Container\-T $\ast$ {\bfseries \-\_\-container\-Track}\label{classmarlintpc_1_1KalTrackingTemplate_af463d55c86e3f9d9dfdd897e1f454002}

\end{DoxyCompactItemize}
\subsection*{Static Protected Attributes}
\begin{DoxyCompactItemize}
\item 
static const int {\bfseries I\-N\-W\-A\-R\-D\-S} =-\/1\label{classmarlintpc_1_1KalTrackingTemplate_aff5f44dc08398ae25bfba7f099c4a49e}

\item 
static const int {\bfseries O\-U\-T\-W\-A\-R\-D\-S} =1\label{classmarlintpc_1_1KalTrackingTemplate_ad4052e4af9ef5f0f4fe6add92710d0c4}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$&lt;$class Container\-T$&gt;$class marlintpc\-::\-Kal\-Tracking\-Template$&lt;$ Container\-T $&gt;$}

This is a base Kal\-Det tracking class. 

It provides common methods for tracking.

It is templated for a container which contain the track state. For compatilibity with with T\-Kal\-Track it has to imolement Set\-Owner(), Clear() and Last(). Last may just return a null pointer.

\begin{DoxyAuthor}{Author}
Bo Li, Tsinghua University 

Keisuke Fujii, K\-E\-K 
\end{DoxyAuthor}


\subsection{Member Function Documentation}
\index{marlintpc\-::\-Kal\-Tracking\-Template@{marlintpc\-::\-Kal\-Tracking\-Template}!calculate\-Delta\-Chi2@{calculate\-Delta\-Chi2}}
\index{calculate\-Delta\-Chi2@{calculate\-Delta\-Chi2}!marlintpc::KalTrackingTemplate@{marlintpc\-::\-Kal\-Tracking\-Template}}
\subsubsection[{calculate\-Delta\-Chi2}]{\setlength{\rightskip}{0pt plus 5cm}template$&lt;$class Container\-T$&gt;$ virtual double {\bf marlintpc\-::\-Kal\-Tracking\-Template}$&lt;$ Container\-T $&gt;$\-::calculate\-Delta\-Chi2 (
\begin{DoxyParamCaption}
\item[{Container\-T $\ast$}]{track\-Candidate}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}}\label{classmarlintpc_1_1KalTrackingTemplate_a5054b2ffc5eff84d6ddfffe65acf3c6c}


Create a track candidate by making a Kal\-Hit from the \doxyref{Module\-Row\-Hit}{p.}{structmarlintpc_1_1ModuleRowHit} and creating a Track\-Site from it. 

Afterwards it copies the \-\_\-kal\-Track of this class and adds and filters with the new site. It also hands over the ownership of the new track, so don't forget to delete it. Attention\-: The new track is not the owner of the sites, as they belong to the original \-\_\-kal\-Track, except for the newly deleted site. Before deleting the candidate do not forget to delete the last added site on the track!

If the add and filter fails you get a 0-\/pointer;Get the delta\-Chi2 from the track candidate 

Implemented in {\bf marlintpc\-::\-Kal\-Tracking\-Helix} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingHelix_a6ad8e855731324135fcf504e9051c44a}, and {\bf marlintpc\-::\-Kal\-Tracking\-Straight} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingStraight_a80c342e053ecae619016cff5b3b4172c}.

\index{marlintpc\-::\-Kal\-Tracking\-Template@{marlintpc\-::\-Kal\-Tracking\-Template}!do\-Add\-And\-Filter@{do\-Add\-And\-Filter}}
\index{do\-Add\-And\-Filter@{do\-Add\-And\-Filter}!marlintpc::KalTrackingTemplate@{marlintpc\-::\-Kal\-Tracking\-Template}}
\subsubsection[{do\-Add\-And\-Filter}]{\setlength{\rightskip}{0pt plus 5cm}template$&lt;$class Container\-T$&gt;$ virtual bool {\bf marlintpc\-::\-Kal\-Tracking\-Template}$&lt;$ Container\-T $&gt;$\-::do\-Add\-And\-Filter (
\begin{DoxyParamCaption}
\item[{Container\-T $\ast$}]{track, }
\item[{{\bf Module\-Row\-Hit}}]{hit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}}\label{classmarlintpc_1_1KalTrackingTemplate_a128147a8a7c1054dd04280bd1f2047ed}


Add a new site to track and update track parameters. 

The track is given as an argument so it can also be used for track candidates and not only for the class-\/wide variable \-\_\-kal\-Track.

Only to be called after the track has been initalised with a first track state. 

Implemented in {\bf marlintpc\-::\-Kal\-Tracking\-Straight} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingStraight_a7eff99728245c60f5a45baaf4abfa973}, and {\bf marlintpc\-::\-Kal\-Tracking\-Helix} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingHelix_a861f388a9f98e190b0c69a236ec4c476}.

\index{marlintpc\-::\-Kal\-Tracking\-Template@{marlintpc\-::\-Kal\-Tracking\-Template}!extrapolate\-Into\-Next\-Layer@{extrapolate\-Into\-Next\-Layer}}
\index{extrapolate\-Into\-Next\-Layer@{extrapolate\-Into\-Next\-Layer}!marlintpc::KalTrackingTemplate@{marlintpc\-::\-Kal\-Tracking\-Template}}
\subsubsection[{extrapolate\-Into\-Next\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}template$&lt;$class Container\-T$&gt;$ virtual {\bf Intersection} {\bf marlintpc\-::\-Kal\-Tracking\-Template}$&lt;$ Container\-T $&gt;$\-::extrapolate\-Into\-Next\-Layer (
\begin{DoxyParamCaption}
\item[{int}]{target\-Distance, }
\item[{bool}]{use\-Far\-Hit}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}}\label{classmarlintpc_1_1KalTrackingTemplate_aeb2b26641e73db607c82c0d4d1958c31}


Use the current track state of the container\-Track to extrapolate into the next layer. 

The distance can be positive or negative, depending if we move inwards or outwards, or 0 to get another intersection on the same layer. 

Implemented in {\bf marlintpc\-::\-Kal\-Tracking\-Helix} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingHelix_a93442a29f8cc86d3570a57ba52c42c47}, and {\bf marlintpc\-::\-Kal\-Tracking\-Straight} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingStraight_a34a50336c9b64295f45f6cf32e2b32e2}.

\index{marlintpc\-::\-Kal\-Tracking\-Template@{marlintpc\-::\-Kal\-Tracking\-Template}!print\-State\-Vector@{print\-State\-Vector}}
\index{print\-State\-Vector@{print\-State\-Vector}!marlintpc::KalTrackingTemplate@{marlintpc\-::\-Kal\-Tracking\-Template}}
\subsubsection[{print\-State\-Vector}]{\setlength{\rightskip}{0pt plus 5cm}template$&lt;$class Container\-T$&gt;$ virtual void {\bf marlintpc\-::\-Kal\-Tracking\-Template}$&lt;$ Container\-T $&gt;$\-::print\-State\-Vector (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [pure virtual]}}\label{classmarlintpc_1_1KalTrackingTemplate_ac786d6b27a444bd383300f2b5ffc9ce0}


Convenience function for printing. 

Implemented for helix and straight tracks. 

Implemented in {\bf marlintpc\-::\-Kal\-Tracking\-Straight} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingStraight_a2b172fab82d5702bf2097307c3c0c751}, and {\bf marlintpc\-::\-Kal\-Tracking\-Helix} \doxyref{}{p.}{classmarlintpc_1_1KalTrackingHelix_a07fae1ffef29f1b2fe4c9e45ddfc3522}.



\subsection{Member Data Documentation}
\index{marlintpc\-::\-Kal\-Tracking\-Template@{marlintpc\-::\-Kal\-Tracking\-Template}!\-\_\-min\-Track\-Hits@{\-\_\-min\-Track\-Hits}}
\index{\-\_\-min\-Track\-Hits@{\-\_\-min\-Track\-Hits}!marlintpc::KalTrackingTemplate@{marlintpc\-::\-Kal\-Tracking\-Template}}
\subsubsection[{\-\_\-min\-Track\-Hits}]{\setlength{\rightskip}{0pt plus 5cm}template$&lt;$class Container\-T$&gt;$ unsigned int {\bf marlintpc\-::\-Kal\-Tracking\-Template}$&lt;$ Container\-T $&gt;$\-::\-\_\-min\-Track\-Hits\hspace{0.3cm}{\ttfamily [protected]}}\label{classmarlintpc_1_1KalTrackingTemplate_a78c7151075c7697f101b1f638753ba41}


The last hit that is added to track. 

Minimum number of hits on track 

Referenced by marlintpc\-::\-Kal\-Tracking\-Template$&lt;$ T\-Kal\-Track $&gt;$\-::set\-Min\-Track\-Hits().



The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
Kal\-Tracking\-Template.\-h\end{DoxyCompactItemize}
</pre></body></html>