~chris-rogers/maus/emr_mc_digitization

« back to all changes in this revision

Viewing changes to doc/doc_src/detectors/tracker/06-CodeDesign/06-CodeDesign.tex

  • Committer: Chris Rogers
  • Date: 2014-04-16 11:48:45 UTC
  • mfrom: (707 merge)
  • mto: This revision was merged to the branch mainline in revision 711.
  • Revision ID: chris.rogers@stfc.ac.uk-20140416114845-h3u3q7pdcxkxvovs
Update to trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
\section{Code Design}
 
2
\label{Sect:CodeDesign}
 
3
 
 
4
\subsection{General Code Structure}
 
5
 
 
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.
 
7
 
 
8
\begin{figure}[p]
 
9
  \begin{center}
 
10
    \includegraphics[width=1.10\textwidth, angle=90]{detectors/tracker/06-CodeDesign/Figures/DataFlow.pdf}
 
11
  \end{center}
 
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.}
 
13
  \label{Fig:DataFlow}
 
14
\end{figure}
 
15
 
 
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;.
 
18
 
 
19
\subsubsection{MapCppTrackerMCDigitisation}
 
20
This map is used to digitise Monte Carlo data.
 
21
 
 
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;:
 
24
 
 
25
\begin{itemize}
 
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
 
29
\end{itemize}
 
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:
 
31
 
 
32
\begin{itemize}
 
33
 \item KalmanFilter
 
34
 \item KalmanHelicalPropagator
 
35
 \item KalmanStraightPropagator
 
36
 \item KalmanState
 
37
 \item KalmanSeed
 
38
\end{itemize}
 
39
 
 
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. 
 
42
 
 
43
\begin{figure}[htb]
 
44
  \begin{center}
 
45
    \includegraphics[width=0.8\textwidth]{detectors/tracker/06-CodeDesign/Figures/xyzPlotterOutput.pdf}
 
46
  \end{center}
 
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}
 
49
\end{figure}
 
50
 
 
51
\subsection{Tracker configuration variables}
 
52
 
 
53
\renewcommand{\arraystretch}{1.1}
 
54
\begin{tabular}{| l | l | p{8cm} |}
 
55
  \hline                       
 
56
  \textbf{Variable} & \textbf{Default}& \textbf{Description}  \\
 
57
  \hline
 
58
  SciFiMUXNum & 7 & \\
 
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 & \\
 
71
  SciFinPlanes & 3 & \\
 
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 \\
 
103
  \hline  
 
104
\end{tabular}
 
105
\renewcommand{\arraystretch}{1.0}
 
106
 
 
107
 
 
108