2
\label{Sect:CodeDesign}
4
\subsection{General Code Structure}
6
The main body of the tracker code is implemented as three distinct MAUS map modules and, at present, one reducer module. There also exist various helpful top-level user tools, and the tracker geometry, calibration and configuration files. A diagram showing the tracker software data flow with the corresponding modules is shown in figure~\ref{Fig:DataFlow}, with the following sections expanding on each area.
10
\includegraphics[width=1.10\textwidth, angle=90]{detectors/tracker/06-CodeDesign/Figures/DataFlow.pdf}
12
\caption{Schematic of the tracker software data showing MC and Real data input, and subsequent reconstruction. MAUS modules corresponding to given process are indicated (MapCppTrackerRecon encompasses all of the reconstruction, shown in blue). Once digits have been formed, reconstruction is agnostic as to whether the MC or Real path was followed.}
16
\subsubsection{MapCppTrackerDigits}
17
This map is used to digitise real data. It calls on additional functionality from the RealDataDigitisation class, which is stored in \verb;src/common_cpp/Recon/SciFi;.
19
\subsubsection{MapCppTrackerMCDigitisation}
20
This map is used to digitise Monte Carlo data.
22
\subsubsection{MapCppTrackerRecon}
23
This map performs the main reconstruction work, moving from digits to cluster to spacepoints to pattern recognition tracks, and finally full Kalman tracks. Most work is farmed out to backend C++ classes. The following are the top level classes for each stage of the reconstruction, and are stored in \verb;src/common_cpp/Recon/SciFi;:
26
\item SciFiClusterRecon - cluster reconstruction from digits
27
\item SciFiSpacepointRecon - spacepoint reconstruction from cluster
28
\item PatternRecognition - association of spacepoints to tracks, and crude initial track fit
30
The backend classes for the final track fit are stored under \verb;src/common_cpp/Recon/Kalman; and \verb;src/common_cpp/Recon/Bayes;, the top level class being KalmanTrackFit. Other classes used include:
34
\item KalmanHelicalPropagator
35
\item KalmanStraightPropagator
40
\subsubsection{ReduceCppPatternRecognition}
41
This reducer displays spacepoints and pattern recognition tracks by tracker, in the $x-y$, $x-z$ and $y-z$ projections, an example being shown in figure~\ref{Fig:SciFiReducerXYZ}. It also creates an InfoBox, which displays various information for the spill and run, such as the number of clusters, spacepoints, etc. The plots are made using ROOT TGraphs, and the InfoBox with a TPaveText.
45
\includegraphics[width=0.8\textwidth]{detectors/tracker/06-CodeDesign/Figures/xyzPlotterOutput.pdf}
47
\caption{Output from the pattern recognition reducer showing the real space projections of a three event spill in tracker 2.}
48
\label{Fig:SciFiReducerXYZ}
51
\subsection{Tracker configuration variables}
53
\renewcommand{\arraystretch}{1.1}
54
\begin{tabular}{| l | l | p{8cm} |}
56
\textbf{Variable} & \textbf{Default}& \textbf{Description} \\
59
SciFiFiberDecayConst & 2.7 & \\
60
SciFiFiberConvFactor & 3047.1 & \\
61
SciFiFiberTrappingEff & 0.056 & \\
62
SciFiFiberMirrorEff & 0.6 & \\
63
SciFiFiberTransmissionEff & 0.8 & \\
64
SciFiMUXTransmissionEff & 1.0 & \\
65
SciFivlpcQE & 0.8 & \\
66
SciFivlpcEnergyRes & 4.0 & VLPC energy resolution (MeV) \\
67
SciFivlpcTimeRes & 0.2 & VLPC time resolution (ns) \\
68
SciFiadcFactor & 6.0 & \\
69
SciFitdcBits & 16 & \\
70
SciFitdcFactor & 1.0 & \\
72
SciFinStations & 5 & \\
73
SciFinTrackers & 2 & \\
74
SciFiNPECut & 2.0 & \\
75
SciFiClustExcept & 100 & \\
76
SciFi\_sigma\_tracker0\_station5 & 0.4298 & Tracker 1 station 5 resolution (mm) \\
77
SciFi\_sigma\_triplet & 0.3844 & Spacepoint triplet resolution (mm) \\
78
SciFi\_sigma\_z & 0.081 & (mm) \\
79
SciFi\_sigma\_duplet & 0.6197 & (mm) \\
80
SciFiPRHelicalOn & True & Helical pattern recognition flag \\
81
SciFiPRStraightOn & True & Straight pattern recognition flag \\
82
SciFiRadiusResCut & 150.0 & Helix radius cut (mm) \\
83
SciFiPerChanFlag & 0 & \\
84
SciFiNoiseFlag & 1.5 & \\
85
SciFiCrossTalkSigma & 50.0 & \\
86
SciFiCrossTalkAmplitude & 1.5 & \\
87
SciFiDarkCountProababilty & 0.017 & Probability of dark count due to thermal electrons \\
88
SciFiChannelCalibList & & Channel calibration data location \\
89
SciFiParams\_Z & 5.61291 & \\
90
SciFiParams\_Plane\_Width & 0.6523 & \\
91
SciFiParams\_Radiation\_Legth & 424.0 & \\
92
SciFiParams\_Density & 1.06 & \\
93
SciFiParams\_Mean\_Excitation\_Energy & 68.7 & \\
94
SciFiParams\_A & 104.15 & \\
95
SciFiParams\_Pitch & 1.4945 & \\
96
SciFiParams\_Station\_Radius & 160. & \\
97
SciFiParams\_RMS & 370. & \\
98
SciFiSeedCovariance & 1000 & Error estimate for seed values of the Kalman fit \\
99
SciFiKalman\_use\_MCS & True & Flag to add multiple scattering to the Kalman fit \\
100
SciFiKalman\_use\_Eloss & True & Flag to add energy loss to the Kalman fit \\
101
SciFiUpdateMisalignments & False & Do a misalignment search and update \\
102
SciFiKalmanVerbose & False & Dump information per fitted track \\
105
\renewcommand{\arraystretch}{1.0}