\section{marlintpc\-:\-:Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor Class Reference}
\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor}\index{marlintpc\-::\-Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor@{marlintpc\-::\-Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor}}


Using G\-B\-L with a step-\/wise helix.  




{\ttfamily \#include $<$Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor.\-h$>$}

Inheritance diagram for marlintpc\-:\-:Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor\-:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual Processor $\ast$ {\bfseries new\-Processor} ()\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a59409c0afd49b4e0439799187ee4bf88}

\item 
virtual void {\bfseries init} ()\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a79a0adbe9b36323c2c7185f57931244e}

\item 
virtual void {\bfseries process\-Run\-Header} (E\-V\-E\-N\-T\-::\-L\-C\-Run\-Header $\ast$run)\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a29027261d19bd4e14dc496d84c96ce61}

\item 
virtual void {\bfseries process\-Event} (E\-V\-E\-N\-T\-::\-L\-C\-Event $\ast$evt)\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a5795dfd9d5f587eb6ce8e47e98862bc5}

\item 
virtual void {\bfseries check} (E\-V\-E\-N\-T\-::\-L\-C\-Event $\ast$evt)\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a6f6d8eca53cb5363db4a740b21eb9ccc}

\item 
virtual void {\bfseries end} ()\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_ae9f488d1de36175d0cd923a4c53b80db}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
std\-::string {\bf \-\_\-input\-Collection\-Name}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_af480bde103ef77f5e87a4cc6e7501c4d}

\begin{DoxyCompactList}\small\item\em Name of the input collection -- track seeds. \end{DoxyCompactList}\item 
std\-::string {\bf \-\_\-output\-Track\-Collection\-Name}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a3112471317be1894fc5564475d6329dc}

\begin{DoxyCompactList}\small\item\em Name of the output track collection. \end{DoxyCompactList}\item 
double {\bf \-\_\-bfield\-Scale\-Factor}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_ac523a37e9959a6b2110f82256b840f58}

\begin{DoxyCompactList}\small\item\em scale factor for magnetic field (default\-: 1.\-0) \end{DoxyCompactList}\item 
bool {\bf \-\_\-output\-Is\-Persistent}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_acd92f45161cfe673b54c2c84a45822f2}

\begin{DoxyCompactList}\small\item\em whether the output is to be stored or not (default\-: true) \end{DoxyCompactList}\item 
std\-::string {\bf \-\_\-fit\-Options}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a2e7a9fdfe5bae2786ab4353899a2637a}

\begin{DoxyCompactList}\small\item\em list of iterations with 'h' Huber, 't' Tukey or 'c' Cauchy down-\/weighting \end{DoxyCompactList}\item 
bool {\bf \-\_\-write\-Millepede\-Out}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a66dec29bc2ba844f1e37adb25348cd97}

\begin{DoxyCompactList}\small\item\em selects output to Millepede-\/\-I\-I binary file \end{DoxyCompactList}\item 
std\-::string {\bf \-\_\-file\-Name\-Millepede\-File}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a9623007e56604fe94a4843eb62ebc9c5}

\begin{DoxyCompactList}\small\item\em name of Millepede-\/\-I\-I binary file \end{DoxyCompactList}\item 
int {\bf \-\_\-mille\-Calc\-Method}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_abc95c44a081fe52ad07c3b1b0a093bcb}

\begin{DoxyCompactList}\small\item\em defines which parameter should be calculated for Millepede-\/\-I\-I binary file \end{DoxyCompactList}\item 
int {\bf \-\_\-mille\-Min\-Hits}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a0ad03de9447f431edf28a12818adcf4b}

\begin{DoxyCompactList}\small\item\em defines minimum number of hits on track for output to Millepede binary file \end{DoxyCompactList}\item 
bool {\bf \-\_\-encoded\-Module\-I\-D}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a7b7a8ad491b169e6af70c329a0cb5f8c}

\begin{DoxyCompactList}\small\item\em Module I\-D is encoded in Cell\-I\-D0. \end{DoxyCompactList}\item 
double {\bf \-\_\-max\-Step}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_aa8bd65d9782f3779e2e4454d0f182a71}

\begin{DoxyCompactList}\small\item\em maximal step size (default\-: 10.) \end{DoxyCompactList}\item 
double {\bf \-\_\-x0\-Per\-Unit\-Length}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_aec105bc906bdb5d1f1e540ea999df338}

\begin{DoxyCompactList}\small\item\em X0 per unit length (T\-P\-C gas as homogeneous scatterer) (default\-: 0.) \end{DoxyCompactList}\item 
bool {\bf \-\_\-thick\-Scatterer}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_ac4e86c8ffbb5891904d085343020741a}

\begin{DoxyCompactList}\small\item\em selects thick (otherwise thin) scatterers for multiple scattering (default\-: false) \end{DoxyCompactList}\item 
double {\bf \-\_\-default\-Momentum}\label{classmarlintpc_1_1StepWiseHelixGeneralBrokenLineInterfaceProcessor_a650c8c9e4d31964354b3515a2a1ce47a}

\begin{DoxyCompactList}\small\item\em default momentum for multiple scattering (for Bfield off, Ge\-V) (default\-: 10.) \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Using G\-B\-L with a step-\/wise helix. 

Processor interface to step-\/wise helix (or line) fitting with General Broken Lines, written by Claus Kleinwort

\begin{DoxyAuthor}{Author}
C. Kleinwort, D\-E\-S\-Y
\end{DoxyAuthor}
This processor interfaces the re-\/fitting functionality of the general broken line package by Claus Kleinwort. For information on the General Broken Lines, please refer to the publication and/or the wiki pages\-:
\begin{DoxyItemize}
\item C. Kleinwort, General Broken Lines as advanced track fitting method, N\-I\-M A, 673 (2012), 107-\/110, doi\-:10.\-1016/j.nima.\-2012.\-01.\-024
\item {\tt http\-://www.\-wiki.\-terascale.\-de/index.\-php/\-General\-Broken\-Lines}
\end{DoxyItemize}

The standard behaviour is that a single, straightforward fit without any outlier rejection is performed. For multiple turns, including some outlier rejection; extend the fit options in the according steering parameter. The calculation of the measurement (pad) direction in X\-Y uses \char`\"{}module.\-get\-Local\-Pad\-Layout().\-get\-Coordinate\-Type()\char`\"{} to select polar or cartesian pad row geometry.

\subparagraph*{Inputs and requirements }

\begin{DoxyItemize}
\item Input to the processor are the found tracks with their associated hits (with the reference point inside the magnetic field!). \item The curvilinear system is used as local system at each hit. \item The curvilinear track parameters are used as local parameters at each hit. \item A form of hit cleaning should be performed before calling the fit -- before using the fit results.\end{DoxyItemize}
\subparagraph*{Output }

\begin{DoxyItemize}
\item Output are the fitted tracks with the best estimation of track parameters and their uncertainties. \item The specific energy loss is estimated from the median (and the M\-A\-D) of the 1/sqrt(E\-\_\-scaled) distribution. \item {\ttfamily Optional} output is a Millepede-\/\-I\-I binary file, which can be inspected\end{DoxyItemize}

\begin{DoxyParams}{Parameters}
{\em \char`\"{}\-Input\-Seed\-Tracks\char`\"{}\-:string} & The name of the input collection of track candidates (default\-: \char`\"{}\-T\-P\-C\-Seed\-Tracks\char`\"{}) \\
\hline
{\em \char`\"{}\-Output\-Tracks\char`\"{}\-:string} & The name of the output collection with the fitted tracks(default\-: \char`\"{}\-T\-P\-C\-Tracks\char`\"{}) \\
\hline
{\em \char`\"{}\-Write\-Output\-To\-Storage\char`\"{}\-:bool} & To set whether the output should be written to storage \\
\hline
{\em \char`\"{}\-B\-Field\-Scale\-Factor\char`\"{}\-:double} & {\ttfamily Optional} parameter, scales magnetic field (map), use 1.\-0 (default) for field O\-N or 0.\-0 for field O\-F\-F \\
\hline
{\em \char`\"{}\-Fit\-Options\char`\"{}\-:string} & {\ttfamily Optional} parameter, defines if multiple passes with \char`\"{}h\char`\"{} huber, \char`\"{}t\char`\"{} tukey or \char`\"{}c\char`\"{} cauchy downweighting should be performed \\
\hline
{\em \char`\"{}\-Write\-Millepede\-Binary\char`\"{}\-:bool} & {\ttfamily Optional} parameter, set to \char`\"{}true\char`\"{} if you want a Millepede binary file (default\-:\char`\"{}false\char`\"{}) \\
\hline
{\em \char`\"{}\-Millepede\-Filename\char`\"{}\-:string} & {\ttfamily Optional} parameter to set the name of the Millepede binary file (default\-:\char`\"{}\char`\"{}) \\
\hline
{\em \char`\"{}\-Mille\-Pede\-Calc\-Method\char`\"{}\-:int} & {\ttfamily Optional} parameter to define set of (global) parameters (default\-:0 = module alignment) \\
\hline
{\em \char`\"{}\-Mille\-Pede\-Min\-Hits\char`\"{}\-:int} & {\ttfamily Optional} parameter to define the minimum number of hits on track for output to Millepede binary file (default\-: 42) \\
\hline
{\em \char`\"{}\-Encoded\-Module\-I\-D\char`\"{}\-:bool} & {\ttfamily Optional} parameter, flag for encoding of module I\-D in Cell\-I\-D0 (default true) \\
\hline
{\em \char`\"{}\-Max\-Step\char`\"{}\-:double} & {\ttfamily Optional} parameter, maximal step size (with constant magnetic field) (default 10.\-0) \\
\hline
{\em \char`\"{}\-X0\-Per\-Unit\-Length\char`\"{}\-:double} & {\ttfamily Optional} parameter, X0 per unit length (T\-P\-C gas as homogeneous scatterer) (default\-: 0.) \\
\hline
{\em \char`\"{}\-Thick\-Scatterer\char`\"{}\-:bool} & {\ttfamily Optional} parameter, selects thick (otherwise thin) scatterers for multiple scattering (default\-: false) \\
\hline
{\em \char`\"{}\-Default\-Momentum\char`\"{}\-:double} & {\ttfamily Optional} parameter, default momentum for multiple scattering (for Bfield off, Ge\-V) (default\-: 10.)\\
\hline
\end{DoxyParams}
W\-O\-R\-K I\-N P\-R\-O\-G\-R\-E\-S\-S\-: currently only works for modules with concentric pad rows (using center from G\-E\-A\-R) \begin{DoxyRefDesc}{Todo}
\item[{\bf Todo}]
\begin{DoxyItemize}
\item implement additional output of pull distributions, residuals, track paramters for each measurement point
\end{DoxyItemize}\end{DoxyRefDesc}


A detailed description is available as {\tt lcnote} L\-C-\/\-T\-O\-O\-L-\/2014-\/008. Changes with respect to this note\-:
\begin{DoxyItemize}
\item Additional parameter \char`\"{}\-Mille\-Pede\-Min\-Hits\char`\"{} for help class \char`\"{}tracker\-Alca\-Selector\char`\"{}
\item 160223 C\-H\-K\-: Implement T\-P\-C gas as homogeneous scatterer (between first and last hit) modelled by thin or thick scatterers (per hit) 
\end{DoxyItemize}

The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
Step\-Wise\-Helix\-General\-Broken\-Line\-Interface\-Processor.\-h\end{DoxyCompactItemize}
