]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/doc/trd_software_writeup.tex
improving handling of processing failures in event processing
[u/mrichter/AliRoot.git] / TRD / doc / trd_software_writeup.tex
CommitLineData
883031eb 1% ---------------------------------------------------------------------
2%
3% TRD Software Writeup
4%
5% ---------------------------------------------------------------------
6%
7\documentclass{alicetdr}
8%\documentclass[draft]{alicetdr}
9%
10% For figures
11\usepackage{graphicx}
12%
13% Helvetica
14\usepackage{helvet}
15\renewcommand{\rmdefault}{phv}
16\renewcommand{\sfdefault}{phv}
17%
18\let\Otemize =\itemize
19\let\Onumerate =\enumerate
20\let\Oescription =\description
21% Zero the vertical spacing parameters
22\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt\parskip=0pt\parsep=0pt}
23\def\Topspac{\vspace{-0.5\baselineskip}}
24\def\Botspac{\vspace{-0.2\baselineskip}}
25% Redefine the environments in terms of the original values
26\newenvironment{Itemize}{\Topspac\Otemize\Nospacing}{\endlist\Botspac}
27\newenvironment{Enumerate}{\Topspac\Onumerate\Nospacing}{\endlist\Botspac}
28\newenvironment{Description}{\Topspac\Oescription\Nospacing}{\endlist\Botspac}
29%
30\include{alicedefs}
31%
32\begin{document}
33%
34\pagenumbering{roman}
35%
36%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37%
38% Title page
39%
40\font\HUGEA=phvr at 36mm % declare very big font
41\font\HUGEB=phvr at 14mm % declare very big font
42%
43\begin{titlepage}
44%
45\vspace{10.0cm}
46%
47\begin{center}
48{\HUGEA T\hspace{5.mm}R\hspace{5.mm}D} \\
49%
50\vspace{3.5cm}
51{\HUGEB Offline Software Writeup} \\
52%
53\vspace{2.0cm}
54{\Large Version 1.0, \today}\\
55%
56\vfill
57%
58\vspace{5.5cm}
59%
60\end{center}
61%
62\end{titlepage}
63%
64%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
65%
66% Empty page to adjust page numbering
67%
68\onecolumn
69\thispagestyle{empty}
70\mbox{ }
71%
72\setcounter{page}{0}
73\onecolumn
74%
75%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76%
77\pagenumbering{arabic}
78%
79%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
80%
757c05c1 81% List of content
82%
83%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
84%
85\thispagestyle{empty}
86\tableofcontents
87%
88%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
89%
883031eb 90% Text
91%
92%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
93%
94%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ff89cbbd 95\newpage
883031eb 96\setcounter{chapter}{0}
97\setcounter{section}{0}
98\Chapter{Introduction}
99\thispagestyle{empty}
100%
101This document is supposed to provide a description of the offline
102software components that are specific to the TRD. It is an attempt
103to collect useful informations on the design and usage of the TRD
104software, in order to facilitate newcomers the introduction to the
105code. The most important classes and procedures are described and
0fa1a8ee 106several examples and use cases are given.
883031eb 107However, this writeup is not meant to be a basic AliRoot introduction.
108For this purpose the reader is referred to the general AliRoot users
109guide \cite{ALIROOT}.
110%
111%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
112\newpage
113\setcounter{chapter}{1}
114\setcounter{section}{0}
115\Chapter{Simulation}
116\thispagestyle{empty}
117%
118\section{Geometry}
119\label{GEO:intro}
120%
121{\it Author: C.~Blume (blume@ikf.uni-frankfurt.de)}
122\smallskip
123\\
124%
125The TRD geometry, as implemented in {\tt AliTRDgeometry}, consists of
126several components: The readout chambers (ROC), the services, and the
127supermodule frame. All these parts are placed inside the TRD mother
128volumes, which in turn are part of the space frame geometry
129({\tt AliFRAMEv2}). Therefore, the space frame geometry has to be
130present to build the TRD geometry. For each of the 18 supermodules
131one single mothervolume is provided (BTRDxx). This allows to configure
132the TRD geometry in {\tt Config.C} such that it only contains a subset
133of supermodules in the total ALICE geometry via
134{\tt AliTRDgeometry::SetSMstatus()}. An incomplete detector setup, as
135it exists for first data taking, can thus be modelled. The class
136{\tt AliTRDgeometry} also serves as the central place to collect all
137geometry relevant numbers and the definitions of various numbering
138schemes of detector components (e.g. sector numbers). However, all
139geometric parameters that refer to the pad planes are compiled in
140{\tt AliTRDpadPlane}.
141%
142\subsection{Readout Chambers}
143\label{GEO:rocs}
144%
145\begin{figure}[htb]
146\begin{center}
147\includegraphics[width=0.85\textwidth]{plots/geo_roc.eps}
148\end{center}
149\caption{
150A TRD read out chamber as implemented in the AliRoot geometry. The
151various material layers are visible. Also, the MCMs on top of the
152chamber, as well as the cooling pipes are shown.
153}
154\label{FIG_GEO:roc_geom}
155\end{figure}
156%
157All ROCs are modelled in the same way, only their dimensions vary.
158They consist of an aluminum frame, which contains the material for
159the radiator and the gas of the drift region, a Wacosit frame (whose
160material is represented by carbon), that surrounds the amplification
161region, and the support structure, consisting of its aluminum frame,
162material for the read out pads, back panel, and readout boards). The
163material inside the active parts of the chambers (radiator, gas, wire
164planes, pad planes, glue, read out boards, etc.) is introduced by
165uniform layers of the corresponding material, whose thicknesses were
166chosen such to result in the correct radiation length. On top of the
167individual ROCs the multi chip modules (MCM) as well as the cooling
168pipes and cables are placed. One obvious simplification, already visible
169in Fig.~\ref{FIG_GEO:roc_geom}, is that in the AliRoot geometry the pipes
170run straight across the chambers instead of following the meandering path
171as in reality.
172%
173\subsection{Supermodules}
174\label{GEO:smframes}
175%
176\begin{figure}[htb]
177\begin{center}
178\begin{minipage}[b]{0.49\textwidth}
179\begin{center}
180\includegraphics[width=0.65\textwidth,angle=270]{plots/geo_smframe.eps}
181\end{center}
182\end{minipage}
183\begin{minipage}[b]{0.49\textwidth}
184\begin{center}
185\includegraphics[width=0.70\textwidth,angle=270]{plots/geo_sm.eps}
186\end{center}
187\end{minipage}
188\end{center}
189\caption{
190A TRD supermodule, as implemented in the AliRoot geometry. The left
191panel shows only the support structures of the aluminum frame, together
192with some service elements. The right panel shows a complete
193supermodule including some surrounding parts of the space frame.
194}
195\label{FIG_GEO:sm_geom}
196\end{figure}
197%
198The supermodule frames consist of the aluminum sheets on the sides, top,
199and bottom of a supermodule together with the traversing support structures.
200The left panel of Fig.~\ref{FIG_GEO:sm_geom} shows the structures that are
201implemented in the TRD geometry. Also, parts of the services like the LV
0fa1a8ee 202power bus bars and cooling arteries can be seen. Additional electronics
883031eb 203equipment (e.g. ``Sch\"utten-Box``) is represented by aluminum boxes that
204contain corresponding copper layers to mimic the present material. The
205services also include e.g. gas distribution boxes, cooling pipes, power and
206readout cables, and power connection panels. Part of the services extend
207into the baby and the back frame. Therefore, additional mother volumes
0fa1a8ee 208have been introduced in order to accommodate this material. All supermodules
883031eb 209have inserts of carbon fiber sheets in the bottom part of the aluminum
210casing, for the ones in front of the PHOS detector (sectors 11--15) also
211the top part includes carbon fiber inserts. The supermodules in the sectors
21213--15 do not contain any ROCs in the middle stack in order to provide the
213holes for the PHOS detector. Instead, gas tubes of stainless steel have
214been built in.
215%
216Generally, the TRD volumina start with the letter ``{\bf U}''. The geometry
217is defined by the function {\tt AliTRDgeometry::CreateGeometry()}, which
218generates the TRD mother volumes ({\bf UTI1}, {\bf UTI2}, {\bf UTI3}) and the
219volumes that constitute a single ROC. This function in turn also calls
220{\tt AliTRDgeometry::CreateFrame()} to create the TRD support frame,
221{\tt AliTRDgeometry::CreateServices()} to create the services, and
222{\tt AliTRDgeometry::GroupChambers()} which assembles the alignable
223volumes for a single ROC ({\bf UTxx}, where {\bf xx} is the detector
224number {\bf DET-SEC}, defined inside a single super module, see below). The
225materials, together with their tracking parameters, that are assigned to
226the volumina, are defined in {\tt AliTRD::CreateMaterials()}.
227In the following table the most important TRD volumina are described
228({\bf xx} = {\bf DET-SEC} number):
229%
230\begin{center}
231\begin{tabular}{l|l}
232Name & Description \\ \hline
233{\bf UTR1} & TRD mothervolume for default supermodules \\
234{\bf UTR2} & TRD mothervolume for supermodules in front of PHOS \\
235{\bf UTR3} & As {\bf UTR2}, but w/o middle stack \\ \hline
236{\bf UTxx} & Top volume of a single ROC \\
237 & Defines the alignable volume for a single ROC \\ \hline
238{\bf UAxx} & Lower part of the ROCs, including drift volume and radiator \\
239{\bf UDxx} & Amplification region \\
240{\bf UFxx} & Back panel, including pad planes and PCB boards of readout electronics \\
241{\bf UUxx} & Contains services on chambers (cooling, cables, DCS boards) and MCM chips \\
242\end{tabular}
243\end{center}
244%
245\subsection{Material Budget and Weight}
246%
247\begin{figure}[htb]
248\begin{center}
249\includegraphics[width=0.75\textwidth]{plots/geo_material_budget.eps}
250\end{center}
251\caption{
252The radiation length map in units of $X/X_{0}$ in part of the active
253detector area of super module 0 as a function of the pseudorapidity
254$\eta$ and the azimuth angle $\phi$, calculated from the geometry in
255AliRoot. Visible are the positions of the MCMs and the cooling pipes
256as hot spots.
257}
258\label{FIG_GEO:mat_budget}
259\end{figure}
260%
261The volumina defining a ROC contain several layers that represent the
262different materials present inside a chamber and which therefore define
263the material budget inside the sensitive areas:
264\begin{center}
265\begin{tabular}{l|l|l|l|c|c|c}
266Name & Mother & Material & Description & Thickness & Density & $X/X_{0}$ \\
267 & & & & [cm] & [g/cm$^{3}$] & [\%] \\ \hline
268{\bf URMYxx} & UAxx & Mylar & Mylar layer on radiator (x2) & 0.0015 & 1.39 & 0.005 \\
269{\bf URCBxx} & UAxx & Carbon & Carbon fiber mats (x2) & 0.0055 & 1.75 & 0.023 \\
270{\bf URGLxx} & UAxx & Araldite & Glue on the fiber mats (x2) & 0.0065 & 1.12 & 0.018 \\
271{\bf URRHxx} & UAxx & Rohacell & Sandwich structure (x2) & 0.8 & 0.075 & 0.149 \\
272{\bf URFBxx} & UAxx & PP & Fiber mats inside radiator & 3.186 & 0.068 & 0.490 \\ \hline
273{\bf UJxx} & UAxx & Xe/CO$_{2}$ & The drift region & 3.0 & 0.00495 & 0.167 \\
274{\bf UKxx} & UDxx & Xe/CO$_{2}$ & The amplification region & 0.7 & 0.00495 & 0.039 \\
275{\bf UWxx} & UKxx & Copper & Wire planes (x2) & 0.00011 & 8.96 & 0.008 \\ \hline
276{\bf UPPDxx} & UFxx & Copper & Copper of pad plane & 0.0025 & 8.96 & 0.174 \\
277{\bf UPPPxx} & UFxx & G10 & PCB of pad plane & 0.0356 & 2.0 & 0.239 \\
278{\bf UPGLxx} & UFxx & Araldite & Glue on pad plane & 0.0923 & 1.12 & 0.249 \\
279 & & Araldite & + additional glue (leaks) & 0.0505 & 1.12 & 0.107 \\
280{\bf UPCBxx} & UFxx & Carbon & Carbon fiber mats (x2) & 0.019 & 1.75 & 0.078 \\
281{\bf UPHCxx} & UFxx & Aramide & Honeycomb structure & 2.0299 & 0.032 & 0.169 \\
282{\bf UPPCxx} & UFxx & G10 & PCB of readout boards & 0.0486 & 2.0 & 0.326 \\
283{\bf UPRDxx} & UFxx & Copper & Copper of readout boards & 0.0057 & 8.96 & 0.404 \\
284{\bf UPELxx} & UFxx & Copper & Electronics and cables & 0.0029 & 8.96 & 0.202 \\
285\end{tabular}
286\end{center}
287This material budget has been adjusted to match the estimate given
288in~\cite{CLEMENS}, with the exception of the glue layer in the back panel
289({\bf UPGLxx}), which has been made thicker to include all the additional
290glue that has been applied to fix the gas leaks. Figure~\ref{FIG_GEO:mat_budget}
291shows the resulting radiation length map in the active detector area for
292super module 0, which has only carbon fiber inserts at the bottom and is
293thus one of the super modules with the largest material budget. It is
0fa1a8ee 294clearly visible that the MCMs and the cooling pipes introduce hot spots
883031eb 295in $X/X_{0}$. However, after averaging over the shown area, the mean
296value is found to be $\langle X/X_{0}\rangle =$~24.7~\%. For a supermodule
297with carbon fiber inserts at the top and the bottom one finds
298$\langle X/X_{0}\rangle =$~23.8~\% and in the regions of the PHOS holes (i.e.
299in the middle stack of supermodules 13--15) it is only
300$\langle X/X_{0}\rangle =$~1.9~\%.
301
302The total weight of a single TRD super module in the AliRoot geometry,
303including all services, is currently 1595kg, which is ca. 5\% short of its
304real weight. A single ROC of the type L0C1 with electronics and cooling
305pipes weighs 21.82kg.
306%
307\subsection{Naming Conventions and Numbering Schemes}
308%
309\begin{figure}[htb]
310\begin{minipage}[b]{0.49\textwidth}
311\begin{center}
312\includegraphics[width=\textwidth]{plots/sector_numbering.eps}
313\end{center}
314\end{minipage}
315\begin{minipage}[b]{0.49\textwidth}
316\begin{center}
317\includegraphics[width=\textwidth]{plots/layer_numbering.eps}
318\vspace{1.4cm}
319\end{center}
320\end{minipage}
321\begin{center}
322\includegraphics[width=0.60\textwidth]{plots/stack_numbering.eps}
323\end{center}
324\caption{
325Illustration of the TRD numbering scheme for super modules, defined in
326the global ALICE coordinate system: a) {\bf SECTOR} number, b)
327{\bf LAYER} number, c) {\bf STACK} number.
328}
329\label{FIG_GEO:sm_numbering}
330\end{figure}
331%
332The numbering schemes and the orientations of coordinate systems generally
333follow the official ALICE-TRD definition \cite{DAVID}. Therefore, the
334whole geometry is defined in the global ALICE coordinate system.
335%
336Inside the code we use the following nomenclature (see
337Fig.~\ref{FIG_GEO:sm_numbering}), which should be used consistently
338throughout the TRD code:
339%
340\begin{center}
341\begin{tabular}{l|l|l}
342Name & Definition & Range \\ \hline
343{\bf SECTOR} & TRD sector in azimuth (i.e. one supermodule) & 0--17 \\
344{\bf LAYER} & Layer inside a supermodule & 0--5 \\
345{\bf STACK} & Division of a supermodule along z-direction & 0--4 \\
346{\bf DET} & Single ROC in whole TRD & 0--539 \\
347{\bf DET-SEC} & Single ROC in one super module & 0--29
348\end{tabular}
349\end{center}
350%
351Due to the holes in front of the PHOS detector, naturally not all {\bf DET}
352numbers correspond to existing ROCs. A single ROC can thus be uniquely
353addressed by either using the three numbers
354({\bf LAYER}, {\bf STACK}, {\bf SECTOR}) or the single {\bf DET} number.
355The correspondence between the two possibilities is defined as:
356\begin{center}
357\mbox{{\bf DET} = {\bf LAYER} + {\bf STACK}$\times$5 + {\bf SECTOR}$\times$5$\times$4}
358\end{center}
359Additionally, there is a number that is unique inside a given super module (i.e.
360sector) and therefore has a range of 0~--~29:
361\begin{center}
362\mbox{{\bf DET-SEC} = {\bf LAYER} + {\bf STACK}$\times$5}
363\end{center}
364The class {\tt AliTRDgeometry} provides a set of functions that could/should
365be used to convert the one into the other:\\
366\hspace*{1.5cm}{\tt AliTRDgeometry::GetDetector(layer,stack,sector)} \\
367\hspace*{1.5cm}{\tt AliTRDgeometry::GetDetectorSec(layer,stack)} \\
368\hspace*{1.5cm}{\tt AliTRDgeometry::GetLayer(det)} \\
369\hspace*{1.5cm}{\tt AliTRDgeometry::GetStack(det)} \\
370\hspace*{1.5cm}{\tt AliTRDgeometry::GetSector(det)} \\
371%
372\subsection{Pad Planes}
373%
374All geometric parameters relevant to the pad planes are handled via the
375class {\tt AliTRDpadPlane}. This comprises the dimensions of the pad planes
376and the pad themselves, the number of padrows, padcolumns, and their tilting angle.
377The initialization of the needed {\tt AliTRDpadPlane} objects is done in
378{\tt AliTRDgeometry::CreatePadPlaneArray()}. The number of padrows can be 12
379(C0-type) or 16 (C1-type), the number of padcolumns is 144 in any case. Again,
380the numbering convention follows the definition given in \cite{DAVID}. Thus,
381the padrow numbers in a given pad plane increase from 0 to 11(15) with decreasing
382$z$-position, while the padcolumn numbers increase from 0 to 144 with increasing
383$\phi$ angle (i.e. counter clockwise). The tilting angle of the pads is 2~degrees,
384with alternating signs at different layers, beginning with +2~degrees for layer~0.
385The class {\tt AliTRDpadPlane} provides a variety of functions that allow to assign
386a pad number (row/column) to signals generated at a given hit position and which
387are used during the digitization process.
388%
389\section{Hit Generation}
390%
391{\it Author: C.~Blume (blume@ikf.uni-frankfurt.de)}
392\smallskip
393\\
394%
395In the case of the TRD a single hit corresponds to a cluster of electrons
396resulting from the ionization of the detector gas. This ionization can be due
397to the normal energy loss process of a charged particle or due to the
398absorption of a transition radiation (TR) photon. A single TRD hit, as
399defined in {\tt AliTRDhit} therefore contains the following data members:
400%
401\begin{center}
402\begin{tabular}{ll}
403{\tt fTrack} & Index of MC particle in kine tree \\
404{\tt fX} & X-position of the hit in global coordinates \\
405{\tt fY} & Y-position of the hit in global coordinates \\
406{\tt fZ} & Z-position of the hit in global coordinates \\
407{\tt fDetector} & Number of the ROC ({\bf DET} number) \\
408{\tt fQ} & Number of electrons created in the ionization step. Negative for TR hits \\
409{\tt fTime} & Absolute time of the hit in $\mu$s. Needed for pile-up events \\
410\end{tabular}
411\end{center}
412%
413On top of this, it is also stored in the {\tt TObject} bit field status word
414whether a hit is inside the drift or the amplification region
415(see {\tt AliTRDhit::FromDrift()} and {\tt AliTRDhit::FromAmplification()}).
416The creation of hits is steered by {\tt AliTRDv1::StepManager()}.
417%
418\subsection{Energy loss}
419%
420A charged particle, traversing the gas volume of the TRD chambers, will release
421charge proportional to its specific energy loss. In the TRD code this process
422is implemented in \\{\tt AliTRDv1::StepManager()}. This implementation used a
423fixed step size. The standard value here is 0.1~cm, but other values can be
424set via {\tt AliTRDv1::SetStepSize()}. The energy deposited in a given step is
425then calculated by the chosen MC program (typically Geant3.21), which after
426division by the ionization energy gives the number of electrons of the new hit.
427The version 2) will also work for an Ar/CO$_{2}$ mixture, which can be selected
428by \\{\tt AliTRDSimParam::SetArgon()}.
429%
430\subsection{Photons from transition radiation}
431%
0fa1a8ee 432Additionally to the hits from energy loss, also hits from the absorption of
883031eb 433TR photons are generated. This is done in {\tt AliTRDv1::CreateTRhit()}, which
434in turn is called by the chosen step manager for electrons and positrons
435entering the entering the drift volume. The process consists of two steps:
436first the number and energies of the TR photons have to be determined and then
0fa1a8ee 437their absorption position inside the gas volume has to be calculated. The
883031eb 438corresponding procedures, used by {\tt AliTRDv1::CreateTRhit()}, are
439implemented in {\tt AliTRDsimTR()}. This class contains a parametrization
440of TR photons generated by a regular foil stack radiator \cite{TRPHOT}. This
441parametrization has been tuned such that the resulting spectrum matches the
442one of the fiber radiator that used in reality. Since the TR production
443depends also on the momentum of the electron, the parameters have been
444adjusted in several momentum bins. After a TR photon has been generated and put
445on the particle stack, it is assumed that it follows a straight trajectory
446whose direction is determined by the momentum vector of the generating electron.
447Since the emission angle for TR photons is very small ($\sim 1/\gamma$) this
0fa1a8ee 448is a valid approximation. The absorption length, which thus determines the
449TR hit position, is randomly chosen according to the absorption cross sections
883031eb 450in the gas mixture. These energy dependent cross sections are also included
451in {\tt AliTRDsimTR}.
452%
453\subsection{Track references}
454%
455The TRD simulation produces track references ({\tt AliTrackReference}) each time
456a charged particle is entering the drift region and exiting the amplification
457region. These track references thus provide information on the position where
458the MC particle was entering and existing the sensitive region of a ROC, as well
459as on its momentum components at this positions. Also, the index to the MC particle
460in the kinematic tree is stored so that the full MC history can be retrieved.
461%
462\section{Digitization}
463%
464{\it Author: C.~Blume (blume@ikf.uni-frankfurt.de)}
465\smallskip
466\\
467%
468The second step in the simulation chain is the translation of the hit information,
469i.e. position and amount of deposited charge, into the final detector response
470that can be stored in digits objects ({\tt AliTRDdigits}):
471%
472\begin{center}
473\begin{tabular}{ll}
474{\tt fAmp} & Signal amplitude \\
475{\tt fId} & Number of the ROC ({\bf DET} number) \\
476{\tt fIndexInList} & Track index \\
477{\tt fRow} & Pad row number \\
478{\tt fColumn} & Pad column number \\
479{\tt fTime} & Time bin number \\
480\end{tabular}
481\end{center}
482%
0fa1a8ee 483However, in practice {\tt AliTRDdigits} is not used to store the digits
883031eb 484information. Instead the data containers described in \ref{DIGITS:containers}
485are used for this purpose. The digitization process includes as an
486intermediate step between hit and digits the so-called summable digits, or
487sdigits:
488\begin{center}
489\mbox{{\bf HITS} $\Longrightarrow$ {\bf SDIGITS} $\Longrightarrow$ {\bf DIGITS}}
490\end{center}
491They sdigits contain the detector signals before discretization and the addition
492of noise and are used to merge several events into a single one.
493%
494\subsection{Digitizer}
495%
496The class {\tt AliTRDdigitizer} contains all the necessary procedures to convert
497hits into sdigits and subsequently sdigits into digits. The standard sequence to
498produce sdigits, as would be initiated by {\tt AliSimulation}, is shown here:
499%
500\begin{center}
501\unitlength1.0cm
502\begin{picture}(10,9)
503\put(2.5,8.0){\framebox(5.0,0.8){{\tt MakeDigits()}}}
504\put(2.5,6.4){\framebox(5.0,0.8){{\tt SortHits()}}}
505\put(2.5,4.8){\framebox(5.0,0.8){{\tt ConvertHits(det)}}}
506\put(2.5,3.2){\framebox(5.0,0.8){{\tt ConvertSignals(det)}}}
507\put(2.5,1.6){\framebox(5.0,0.8){{\tt Signal2SDigits(det)}}}
508\put(2.5,0.0){\framebox(5.0,0.8){{\tt TRD.SDigits.root}}}
509\put(5.0,8.0){\vector(0,-1){0.8}}
510\put(5.0,6.4){\vector(0,-1){0.8}}
511\put(5.0,4.8){\vector(0,-1){0.8}}
512\put(5.0,3.2){\vector(0,-1){0.8}}
513\put(5.0,1.6){\vector(0,-1){0.8}}
514\put(5.0,1.2){\line(-1,0){4.0}}
515\put(1.0,1.2){\line(0,1){4.8}}
516\put(1.0,6.0){\vector(1,0){4.0}}
517\put(0.2,6.1){{\tt det=0-539}}
518\end{picture}
519\end{center}
520%
521The first function {\tt SortHits()} sorts the simulated hits according to
522their {\bf DET} number, so that the digitization procedures can be called
523for a single ROCs in the following loop. The function {\tt ConvertHits()}
524does the conversion of the hit information into a detector signal. In this
525procedure each electron of a given hit is in principle followed along its
526path from the position of the primary ionization towards the anode wire.
527The position of this electron can be modified by diffusion in the gas
528({\tt AliTRDdigitizer::Diffusion()}), ExB effect ({\tt AliTRDdigitizer::ExB()}),
0fa1a8ee 529and absorption ({\tt AliTRDdigitizer::Absorbtion()}, off per default).
883031eb 530The drift time of the electrons is also modified according to their distance
531to the corresponding anode wire position ({\tt AliTRDdigitizer::TimeStruct()}),
532since the electric field lines are not uniform inside the amplification region.
533This results in a non-isochronity of the drift time, which has been
534simulated with the GARFIELD program and the tabulated results of this
535simulation are used in the digitizing process to adjust the drift times
536accordingly. Once the position and the drift time of the electron at the
537anode wire plane are know, the signal induced on the pads can be calculated.
538This involves three effects: the pad response, which distributes the charge
0fa1a8ee 539on several pads ({\tt AliTRDdigitizer::PadResponse()}), the time response due
883031eb 540to the slow ion drift and the PASA response function, which distributes the
541charge onto the following time bins, ({\tt AliTRDdigitizer::TimeResponse()}),
ff89cbbd 542and the cross talk between neighboring pads {\tt AliTRD\-digitizer::CrossTalk()}).
883031eb 543At the end of this procedure, the charge seen by each pad in each time bin
544is available. Also, the indices of maximally three MC particles in the kine
545tree contributing to a given pad signal are stored, so that in a later
546analysis it can be tested which particle generated what signal.
547As a next step the signals could either directly be converted into {\bf DIGITS},
548or, which is the default procedure, they are stored as {\bf SDIGITIS}.
0fa1a8ee 549The corresponding functions ({\tt AliTRDdigitizer::Signal2SDigits()} and
883031eb 550{\tt AliTRDdigitizer::Signal2ADC()}) are called from
0fa1a8ee 551{\tt AliTRDdigitizer::ConvertSignals()}, depending on the configuration.
883031eb 552The function {\tt AliTRDdigitizer::Signal2SDigits()} stores the signals as
553{\bf SDIGITS} in data structures of the type {\tt AliTRDarraySignal} (see
554section \ref{DIGITS:containers}).
555
556If desired, the {\bf SDIGITS} can now be added to the {\bf SDIGITS} from other
557simulated events, e.g. in order to embed a specific signal into a background
558event ({\tt AliTRDdigitizer::MergeSDigits()}). After this optional step, the
559{\bf SDIGITS} are finally being converted into {\bf DIGITS}. This process is
560steered by the function ({\tt AliTRDdigitizer::ConvertSDigits()}).
561%
562\begin{center}
563\unitlength1.0cm
564\begin{picture}(10,9)
565\put(2.5,8.0){\framebox(5.0,0.8){{\tt Exec()}}}
566\put(2.5,6.4){\framebox(5.0,0.8){{\tt SDigits2Digits()}}}
567\put(2.5,4.8){\framebox(5.0,0.8){{\tt MergeSDigits()}}}
568\put(2.5,3.2){\framebox(5.0,0.8){{\tt ConvertSDigits()}}}
569\put(2.5,1.6){\framebox(5.0,0.8){{\tt Signal2ADC(det)}}}
570\put(2.5,0.0){\framebox(5.0,0.8){{\tt TRD.Digits.root}}}
571\put(5.0,8.0){\vector(0,-1){0.8}}
572\put(5.0,6.4){\vector(0,-1){0.8}}
573\put(5.0,4.8){\vector(0,-1){0.8}}
574\put(5.0,3.2){\vector(0,-1){0.8}}
575\put(5.0,1.6){\vector(0,-1){0.8}}
576\put(5.0,1.2){\line(-1,0){4.0}}
577\put(1.0,1.2){\line(0,1){1.6}}
578\put(1.0,2.8){\vector(1,0){4.0}}
579\put(0.2,2.9){{\tt det=0-539}}
580\end{picture}
581\end{center}
582%
583The essential step in the final {\bf SDIGITS} $\Longrightarrow$ {\bf DIGITS}
584conversion is performed by the function {\tt AliTRDdigitizer::Signal2ADC()}.
585Here pad signals, that are stored as floats, are finally translated into
586integer ADC values. This conversion involves a number of parameters: the pad
587coupling and time coupling factors, the gain of the PASA and of the
588amplification at the anode wire, and the input range and baseline of the ADCs.
589The coupling factors take into account that only a fraction of the incoming
590signal is sampled in the digitization process. At this point also the relative
591gain factors derived from the calibration procedures for a given dataset will
592be used to distort the simulated data correspondingly. The noise is generated
593according to a Gaussian distribution of a given width and added to the output.
0fa1a8ee 594Finally, the converted signals are discretize into the ADC values of the
883031eb 595defined resolution. At this stage also the zero suppression mechanism is applied
596to the simulated ADC values ({\tt AliTRDdigitizer::ZS()}), in order to reduce
597the output volume (see section \ref{DIGITS:zs}). These {\bf DIGITS} can then
598serve as input to the raw data simulation (see section \ref{RAWSIM}).
599%
600\subsection{Simulation parameter}
601%
602The parameters that are needed to configure the digitization, are either
603read from the OCDB (e.g. calibration gain factors) or are taken from the
604parameter class {\tt AliTRDSimParam}. This class contains the default values
605of these parameters, but it can be configured in order to test different
606scenarios. The following table lists the available parameters:
607%
608\begin{center}
609\begin{tabular}{lll}
610Parameter & Description & Default value \\ \hline
611{\tt fGasGain} & Gas gain at the anode wire & 4000 \\
612{\tt fNoise} & Noise of the chamber readout & 1250 \\
613{\tt fChipGain} & Gain of the PASA & 12.4 \\
614{\tt fADCoutRange} & ADC output range (number of ADC channels) & 1023 (10bit) \\
615{\tt fADCinRange} & ADC input range (input charge) & 2000 (2V) \\
616{\tt fADCbaseline} & ADC intrinsic baseline in ADC channels & 0 \\
617{\tt fElAttachProb} & Probability for electron attachment per meter & 0 \\
618{\tt fPadCoupling} & Pad coupling factor & 0.46 \\
619{\tt fTimeCoupling} & Time coupling factor & 0.4 \\ \hline
620{\tt fDiffusionOn} & Switch for diffusion & kTRUE \\
621{\tt fElAttachOn} & Switch for electron attachment & kFALSE \\
622{\tt fTRFOn} & Switch for time response & kTRUE \\
623{\tt fCTOn} & Switch for cross talk & kTRUE \\
624{\tt fTimeStructOn} & Switch for time structure & kTRUE \\
625{\tt fPRFOn} & Switch for pad response & kTRUE \\
626{\tt fGasMixture} & Switch for gas mixture (0: Xe/CO2, 1: Ar/CO2) & 0 \\
627\end{tabular}
628\end{center}
629%
630\subsection{Digits manager}
631\label{DIGITS:manager}
632%
633{\it Author: H.~Leon~Vargas (hleon@ikf.uni-frankfurt.de)}
634\smallskip
635\\
636%
637The class {\tt AliTRDdigitsManager} handles arrays of data container
638objects in the form of ROOT's {\tt TObjArray}. Its main functionality
639is that it provides setters and getters for the information of each chamber.
640%
641\begin{figure}[htb]
642\begin{center}
643\includegraphics[width=0.85\textwidth]{plots/digitsmanager_containers.eps}
644\end{center}
645\caption{
646Data containers used in the class {\tt AliTRDdigitsManager}.
647}
648\label{FIG_DIG:manager}
649\end{figure}
650%
651\subsection{Data containers}
652\label{DIGITS:containers}
653%
654During simulation different kinds of information are created and stored
655in various data containers depending on their characteristics.
656These containers were designed with the idea of keeping the code as
657simple as possible and to ease its maintenance.
658The simulated signals or sdigits for a given row, column and time bin
659of each detector, as generated by \\ {\tt AliTRDdigitizer::ConvertHits()},
660are stored in an object of the class {\tt AliTRDarraySignal}. This
661class stores the data in an array of floating point values. In this
662case, the compression method takes as an argument a threshold. All the
663values equal or below that threshold will be set to zero during
664compression. The threshold can take any value greater or equal to zero.
665The sdigits data is used during event merging.
666
667In the simulation the information about the particles that generated the
668hits (index in kine tree) is stored for each detector in an object
669of the class {\tt AliTRDarrayDictionary}. In this case the information
670is stored in an array of integer values, which is initialized to -1.
671
672In the digitizer, the signals stored in the sdigits are converted
673afterwards into ADC values and kept in objects of the class
674{\tt AliTRDarrayADC}. This class saves the ADC values in an array of
675short values. The ADC range uses only the first 9 bits, bits 10 to 12
676are used to set the pad status. An uncompressed object of the class
677{\tt AliTRDarrayADC} should only contain values that are equal or
678greater than -1, because the compression algorithm of this class uses
679all the other negative values in the range of the short data type. The
680value -1 in the data array is used in the simulation to indicate where
681an ADC value was ``zero suppressed''. This is done in this way so we
682are be able to discriminate between real zeroes and suppressed zeroes.
683For the details of the use of pad status refer to the method
684{\tt AliTRDarrayADC::SetPadStatus()} in the implementation file of this class.
685%
686\subsection{Zero suppression}
687\label{DIGITS:zs}
688%
689{\it Author: H.~Leon~Vargas (hleon@ikf.uni-frankfurt.de)}
690\smallskip
691\\
692%
693The zero suppression algorithm was applied at the end of digitization
694in order to decrease the size of the digits file. The code is implemented
695in the class {\tt AliTRDmcmSim}. This algorithm is based on testing
696three conditions on the ADC values of three neighboring pads as seen
697in Fig.~\ref{FIG_DIG:zs} (for more information see the Data Indication
698subsection in the TRAP User Manual). The conditions are the following:\\
699
7001) Peak center detection:\\
701
702ADC-1(t) $\leq$ ADC(t) $\geq$ ADC+1(t)\\
703
7042) Cluster:\\
705
706ADC-1(t)+ADC(t)+ADC+1(t) $>$ Threshold\\
707
7083) Absolute Large Peak:\\
709
710ADC(t) $>$ Threshold\\
711
712If a given combination of these conditions is not fulfilled, the value ADC(t)
713is suppressed. The algorithm runs over all ADC values.
714%
715\begin{figure}[htb]
716\begin{center}
717\includegraphics[width=0.60\textwidth]{plots/zsuppression.eps}
718\end{center}
719\caption{
720Zero suppression code.
721}
722\label{FIG_DIG:zs}
723\end{figure}
724%
725\section{Raw Data Simulation}
726\label{RAWSIM}
727%
757c05c1 728\section{Trigger Simulation}
729\label{TRGSIM}
730{\it Author: J.~Klein (jklein@physi.uni-heidelberg.de)}
731\vspace{.3cm}
732
733The trigger generation chain of the TRD can be simulated within
734AliRoot as well. It contains several stages as in the real
735hardware (s. Fig.~\ref{fig:trgsim}).
736
737For each event the hits in the active volume are converted to
738digitized signals in the AliTRDdigitizer. The digital processing as
739done in the TRAP is simulated in its method \\
740{\tt RunDigitalProcessing()} calling the MCM simulation (in {\tt
741 AliTRDmcmSim}) which implements the filters, zero-suppression and
742tracklet calculation. Here the same integer arithmetics is used as in
743the real TRAP. The trigger-relevant preprocessed data, i.e. the
744tracklets, are stored using a dedicated loader. From there they are
745accessed by the GTU simulation which runs the stackwise tracking. The
746individual stages are discussed in more detail in the following
747sections.
748\begin{figure}
749\begin{center}
750\includegraphics[angle=0,width=0.9\textwidth]{plots/trgsim_ov}
751\end{center}
752\caption[Trigger simulation overview]{Overview of the trigger
753 simulation}
754\label{fig:trgsim}
755\end{figure}
756
757\subsection{MCM simulation}
758The MCM simulation is contained in {\tt AliTRDmcmSim}. This class
0fa1a8ee 759mimics the digital part of an MCM. It can be used for the simulation
757c05c1 760after digitization has been performed.
761
762Internally, an object of {\tt AliTRDmcmSim} can hold the data of
76321~ADC channels both raw and filtered. After the instantiation {\tt
764 Init()} has to be called to define the position of the MCM. Then,
765the data can be fed using either of the following methods:
766\begin{description}
767\item[{\tt SetData(Int\_t iadc, Int\_t *adc)}] ~\\ Set the data for the
768 given ADC channel {\it iadc} from an array {\it adc} containing the
769 data for all timebins.
770\item[{\tt SetData(Int\_t iadc, Int\_t it, Int\_t adc)}] ~\\ Set the data for the
771 given ADC channel {\it iadc} and timebin {\it it} to the value {\it adc}.
772\item[{\tt SetData(AliTRDarrayADC *adcArray)}] ~\\ Set the data for the
773 whole MCM from the digits array pointed to by {\it adcArray}.
774\item[{\tt LoadMCM(AliRunLoader *rl, Int\_t det, Int\_t rob, Int\_t mcm)}]
775 ~\\ This method automatically initializes the MCM for the specified
776 location and loads the relevant data via the runloader pointed by
777 {\it rl}.
778\end{description}
779
780After loading of the data the processing stages can be run
781individually:
782\begin{description}
783\item[{\tt Filter()}] ~\\ The pedestal, gain and tail cancellation filters
784 are run on the currently loaded raw data. The filter settings
785 (including bypasses) are used as configured in the TRAP
786 (s.~\ref{sec:trapcfg}). The unfiltered raw data is kept such that it
787 is possible to rerun Filter(), e.g. with different settings.
788\item[{\tt Tracklet()}] ~\\ The tracklet calculation operates on the
789 filtered data (which is identical to the unfiltered data if Filter()
790 was not called). First, the hits are calculated and the fit
791 registers filled. Subsequently, the straight line fits for the four
792 most promising tracklets are calculated.
793\item[{\tt ZSMapping()}] ~\\ This methods performs the zero-suppression
794 which can be based on different criteria (to be configured in the
795 TRAP).
796\end{description}
797
798The results of the MCM simulation can be accessed in different ways:
799\begin{description}
800\item[{\tt WriteData(AliTRDarrayADC *digits)}] ~\\ Hereby, the data are
801 written to the pointed digits array. It is part of the TRAP
802 configuration whether raw or filtered data is written (EBSF).
803\item[{\tt ProduceRawStream(UInt\_t *buf, Int\_t bufsize, UInt\_t
804 iEv)}] ~\\ Produce the raw data stream for this MCM as it will
805 appear in the raw data of the half-chamber.
806\item[{\tt ProduceTrackletStream(UInt\_t *buf, Int\_t bufsize)}] ~\\
807 Produce the raw stream of tracklets as they appear in raw data.
808\item[{\tt StoreTracklets()}] ~\\ The tracklets are stored via the
809 runloader. This has to be called explicitly, otherwise the tracklets
810 will not be written.
811\end{description}
812
813\subsection{TRAP configuration}
814\label{sec:trapcfg}
815The TRAP configuration is kept in {\tt AliTRDtrapConfig} which is
816implemented as singleton. After obtaining a pointer to the class by a
817call to {\tt AliTRDtrapConfig::Instance()} values can be changed and read by:
818\begin{description}
819\item[{\tt SetTrapReg(TrapReg\_t reg, Int\_t value, Int\_t det, Int\_t rob,
820 Int\_t mcm)}] ~\\ This sets the given TRAP register given as the
821 abbreviation from the TRAP manual with preceding 'k' (enum) to the
822 given value. If you specify {\it det}, {\it rob} or {\it mcm} the
823 values are changed for individual MCMs. Not specified the setting is
824 applied globally.
825\item[{\tt GetTrapReg(TrapReg\_t reg, Int\_t det, Int\_t rob, Int\_t mcm)}]
826 ~\\ This method gets the current value of the given TRAP
827 registers. If the values are set individually for different MCMs you
828 have to pass {\it det}, {\it rob} and {\it mcm}. Otherwise, these
829 parameters can be omitted.
830\item[{\tt PrintTrapReg(TrapReg\_t reg, Int\_t det, Int\_t rob, Int\_t mcm)}]
831 ~\\ It is similar to the preceding method but prints the information
832 to stdout.
833\end{description}
834
835The calculated tracklets can be stored by a call to {\tt AliTRDmcmSim::StoreTracklets()}.
836
837\subsection{Tracklet classes}
838In order to unify the different sources of tracklets, e.g. real data
839or simulation, all implementations of tracklets derive from the
840abstract base class {\tt AliTRDtrackletBase}. The following
841implementations are currently in use:
842\begin{description}
843\item[{\tt AliTRDtrackletWord}] ~\\ This class is meant to represent the
844 information as really available from the FEE, i.e. only a 32-bit
845 word and the information on the detector it was produced on.
846\item[{\tt AliTRDtrackletMCM}] ~\\ Tracklets of this type are produced in
847 the MCM simulation and contain additional MC information.
848\item[{\tt AliTRDtrackletGTU}] This class is used during the GTU tracking
849 and contains a pointer to a tracklet and information assigned to it
850 during the global tracking.
851\end{description}
852
853\subsection{GTU simulation}
854
855The simulation of the TRD global tracking on tracklets is steered by
856AliTRDgtuSim. This class provides all the interface. The following
857classes are involved:
858\begin{description}
859\item[{\tt AliTRDgtuParam}] ~\\ This class contains or generates the relevant
860 parameters used for the GTU tracking.
861\item[{\tt AliTRDgtuTMU}] ~\\ This class holds the actual tracking algorithm
862 as it runs in one Track Matching Unit (TMU) which corresponds to one
863 stack.
864\end{description}
865
866The GTU simulation can be run by calling {\tt
867 AliTRDgtuSim::RunGTU(AliLoader *loader, AliESDEvent *esd)} where
868{\it loader} points to the TRD loader and {\it esd} to an ESD
869event. The latter can be omitted in which case the output is not
870written to the ESD. The tracklets are automatically retrieved via the
871loader and the found tracks of type {\tt AliTRDtrackGTU} are
872internally stored in a tree for which a getter exists to access. If a
873pointer to an {\tt AliESDEvent} is given, the tracks are also written
874to the ESD (as {\tt AliESDTrdTrack}). For this the method {\tt
875 AliTRDtrackGTU::CreateTrdTrack()} is used which creates the {\tt
876 AliESDTrdTrack} (with reduced information compared to {\tt
877 AliTRDtrackGTU}).
878
879\subsection{CTP interface}
880
881The interface to the central trigger is defined in {\tt
882 AliTRDTrigger}. This class is called automatically during simulation
883and produces the trigger inputs for TRD (in {\tt
884 CreateInputs()}). They are only considered if they are part of the
885used trigger configuration (e.g. GRP/CTP/p-p.cfg).
886
887The actual trigger generation has to be contained in {\tt
888 Trigger()}. Currently, the GTU simulation is run from here using the
889previously calculated tracklets. The generated tracks are stored and
890the trigger inputs are propagated to CTP. Which trigger classes make
891use of the TRD inputs has to be defined in the trigger configuration.
892%
883031eb 893%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
894\newpage
895\setcounter{chapter}{2}
896\setcounter{section}{0}
757c05c1 897\Chapter{Reconstruction}\label{REC:}
898{\it Author: A.~Bercuci (A.Bercuci@gsi.de)}
883031eb 899\thispagestyle{empty}
900%
901\section{Raw Data Reading}
902%
757c05c1 903\section{Cluster Finding}\label{REC:CL:}
904%
ff89cbbd 905\subsection[Cluster position reconstruction]{Cluster position reconstruction
906\footnote{The procedures described in this section are implemented in the functions
bb774328 907{\tt AliTRDcluster::GetXloc()}, {\tt AliTRDcluster::GetYloc()},
908{\tt AliTRDcluster::GetSX()} and {\tt AliTRDcluster::GetSY()}.}}\label{REC:CL:rphi}
757c05c1 909{\it Author: A.~Bercuci (A.Bercuci@gsi.de)}
ff89cbbd 910\\
911{\bf Calculation of cluster position in the radial direction} in local chamber
912coordinates (with respect to the anode wire position) is using the following
913parameters:\\
bb774328 914 $t_0$ - calibration aware trigger delay $[\mu s]$\\
915 $v_d$ - drift velocity in the detector region of the cluster $[cm/\mu s]$\\
ff89cbbd 916 $z$ - distance to the anode wire [cm]. By default average over the drift cell width\\
917 $q$ \& $x_q$ - array of charges and cluster positions from previous clusters in the tracklet [a.u.]
bb774328 918
ff89cbbd 919The estimation of the radial position is based on calculating the drift time
920and the drift velocity at the point of estimation. The drift time can be
921estimated according to the expression:
bb774328 922\begin{equation}
923t_{drift} = t_{bin} - t_{0} - t_{cause}(x) - t_{TC}(q_{i-1}, q_{i-2}, ...)
924\end{equation}
ff89cbbd 925where $t_0$ is the delay of the trigger signal. $t_{cause}$ is the causality
926delay between ionization electrons hitting the anode and the registration of
927the mean signal by the electronics - due to the rising time of the TRF. A
928second order correction here comes from the fact that the time spreading of
929charge at anode is the convolution of TRF with the diffusion and thus
930cross-talk between clusters before and after local clusters changes with drift
931length. $t_{TC}$ is the residual charge from previous (in time) clusters due
932to residual tails after tail cancellation. This tends to push cluster forward
933and depends on the magnitude of their charge.
934
935The drift velocity varies with the drift length (and distance to anode wire)
936as described by cell structure simulation. Thus one, in principle, can calculate
937iteratively the drift length from the expression:
bb774328 938\begin{equation}
939x = t_{drift}(x)*v_{drift}(x)
940\end{equation}
ff89cbbd 941In practice we use a numerical approach (see {\tt AliTRDcluster::GetXcorr()}
942and Figure \ref{FIG_CLUSTER:Xcorr} left) to correct for anisochronity obtained
943from a MC comparison (see {\tt AliTRDclusterResolution\-::ProcessSigma()} for
944the implementation). Also the calibration of the 0th approximation (no $x$
945dependence) for $t_{cause}$ is obtained from MC comparisons and is impossible
946to disentangle in real life from trigger delay.
bb774328 947\begin{figure}[htb]
948\begin{center}
949\includegraphics[width=0.48\textwidth]{plots/clusterXcorr.eps}
950\includegraphics[width=0.48\textwidth]{plots/clusterYcorr.eps}
951\end{center}
952\caption{
953Correction of the radial and $r-\phi$ position of the TRD cluster.}
954\label{FIG_CLUSTER:Xcorr}
955\end{figure}
ff89cbbd 956\\
957\\
958For {\bf the calculation of the $r-\phi$ offset} of the cluster from the middle
959of the center pad three methods are implemented:
960\begin{itemize}
961 \item[-] Center of Gravity (COG) see {\tt AliTRDcluster::GetDYcog()}
962 \item[-] Look-up Table (LUT) see {\tt AliTRDcluster::GetDYlut()}
963 \item[-] Gaussian shape (GAUS) see {\tt AliTRDcluster::GetDYgauss()}
964\end{itemize}
965In addition for the case of LUT method position corrections are also applied
966(see {\tt AliTRDcluster\-::GetYcorr()} and Figure \ref{FIG_CLUSTER:Xcorr} right).
bb774328 967
ff89cbbd 968One may calculate the $r-\phi$ offset, based on the Gaussian approximation of
969the PRF, from the signals $q_{i-1}$, $q_i$ and $q_{i+1}$ in the 3 adjacent pads
970by:
bb774328 971\begin{equation}
ff89cbbd 972y = \frac{1}{w_{1}+w_{2}} \left[ w_{1} \left( y_{0}-\frac{W}{2}
973 +\frac{s^{2}}{W}
974 \ln\frac{q_{i}}{q_{i-1}} \right)
975 + w_{2}\left( y_{0}+\frac{W}{2}
976 +\frac{s^{2}}{W}
977 \ln\frac{q_{i+1}}{q_{i}} \right) \right]
bb774328 978\end{equation}
ff89cbbd 979where $W$ is the pad width, $y_0$ is the position of the middle of the center
980pad and $s^2$ is given by
bb774328 981\begin{equation}
ff89cbbd 982s^{2} = s^{2}_{0} + s^{2}_{diff} (x,B) + \frac{\tan^{2}(\phi-\alpha_{L})*l^{2}}{12}
bb774328 983\end{equation}
ff89cbbd 984with $s_0$ being the PRF for 0 drift and track incidence $\phi$ equal to the Lorentz
985angle $\alpha_L$ and the diffusion term being described by:
bb774328 986\begin{equation}
ff89cbbd 987s_{diff} (x,B) = \frac{D_{L}\sqrt{x}}{1+({\omega\tau}^{2})}
bb774328 988\end{equation}
ff89cbbd 989with $x$ being the drift length. The weights $w_1$ and $w_2$ are taken to be
990$q_{i-1}^2$ and $q_{i+1}^2$ respectively.
991\\
bb774328 992
ff89cbbd 993\noindent
994{\bf Determination of shifts by comparing with MC}
995\\
bb774328 996
ff89cbbd 997The resolution of the cluster corrected for pad tilt with respect to MC in the
998$r-\phi$ (measuring) plane can be expressed by:
bb774328 999\begin{eqnarray}
1000\Delta y&=&w - y_{MC}(x_{cl})\\
1001w &=& y_{cl}^{'} + h*(z_{MC}(x_{cl})-z_{cl})\\
1002y_{MC}(x_{cl}) &=& y_{0} - dy/dx*x_{cl}\\
1003z_{MC}(x_{cl}) &=& z_{0} - dz/dx*x_{cl}\\
ff89cbbd 1004y_{cl}^{'} &=& y_{cl}-x_{cl}*\tan(\alpha_{L})
bb774328 1005\end{eqnarray}
ff89cbbd 1006where $x_{cl}$ is the drift length attached to a cluster, $y_{cl}$ is the
1007$r-\phi$ coordinate of the cluster measured by charge sharing on adjacent pads
1008and $y_0$ and $z_0$ are MC reference points (as example the track references at
1009entrance/exit of a chamber). If we suppose that both $r-\phi$ ($y$) and radial
1010($x$) coordinate of the clusters are affected by errors we can write
bb774328 1011\begin{eqnarray}
1012x_{cl} &=& x_{cl}^{*} + \delta x\\
1013y_{cl} &=& y_{cl}^{*} + \delta y
1014\end{eqnarray}
ff89cbbd 1015where the starred components are the corrected values. Thus by definition the
1016following quantity
bb774328 1017\begin{equation}
1018\Delta y^{*}= w^{*} - y_{MC}(x_{cl}^{*})
1019\end{equation}
1020has 0 average over all dependency. Using this decomposition we can write:
500851ab 1021\begin{equation}\label{EQ_CLUSTER:shift}
ff89cbbd 1022<\Delta y>=<\Delta y^{*}> + <\delta x * (dy/dx-h*dz/dx) + \delta y - \delta x
1023 * \tan(\alpha_{L})>
bb774328 1024\end{equation}
1025which can be transformed to the following linear dependence:
1026\begin{equation}
ff89cbbd 1027<\Delta y>= <\delta x> * (dy/dx-h*dz/dx) + <\delta y - \delta x * \tan(\alpha_{L})>
bb774328 1028\end{equation}
ff89cbbd 1029if expressed as function of $dy/dx-h*dz/dx$. Furtheremore this expression can
1030be plotted for various clusters i.e. we can explicitely introduce the diffusion
1031($x_{cl}$) and drift cell - anisochronity ($z_{cl}$) dependences. From
bb774328 1032plotting this dependence and linear fitting it with:
1033\begin{equation}
1034<\Delta y>= a(x_{cl}, z_{cl}) * (dy/dx-h*dz/dx) + b(x_{cl}, z_{cl})
1035\end{equation}
1036the systematic shifts will be given by:
1037\begin{eqnarray}
1038\delta x (x_{cl}, z_{cl}) &=& a(x_{cl}, z_{cl})\\
ff89cbbd 1039\delta y (x_{cl}, z_{cl}) &=& b(x_{cl}, z_{cl}) + a(x_{cl}, z_{cl}) * \tan(\alpha_{L})
bb774328 1040\end{eqnarray}
1041In Figure \ref{FIG_CLUSTER:shift} left there is an example of such dependency.
1042\begin{figure}[htb]
1043\begin{center}
1044\includegraphics[width=0.48\textwidth]{plots/clusterShiftMethod.eps}
1045\includegraphics[width=0.48\textwidth]{plots/clusterSigmaMethod.eps}
1046\end{center}
1047\caption{
1048Linear relation to estimate radial and $r-\phi$ cluster shifts and error.}
1049\label{FIG_CLUSTER:shift}
1050\end{figure}
ff89cbbd 1051\\
1052\\
1053The occurance of the radial shift is due to the following conditions:
1054\begin{itemize}
1055 \item[-] The approximation of a constant drift velocity over the drift length
1056 (larger drift velocities close to the cathode wire plane).
1057 \item[-] The superposition of charge tails in the amplification region (first
1058 clusters appear to be located at the anode wire).
1059 \item[-] The superposition of charge tails in the drift region (shift towards
1060 anode wire).
1061 \item[-] Diffusion effects which convolute with the TRF thus enlarging it.
1062 \item[-] Approximate knowledge of the TRF (approximate measuring in test beam
1063 conditions).
1064\end{itemize}
1065The numerical results for ideal simulations for the radial are displayed in
1066Figure \ref{FIG_CLUSTER:Xcorr}.
1067\\
1068\\
1069The representation of $dy=f(y_cen, x_drift| layer, \phi=\tan(\alpha_L))$ can be
1070also used to estimate the systematic shift in the $r-\phi$ coordinate resulting
1071from an imperfection in the cluster shape parameterization. From
1072Eq.~\ref{EQ_CLUSTER:shift} with $\phi=\tan(\alpha_L)$ one gets:
500851ab 1073\begin{eqnarray}
ff89cbbd 1074<\Delta y>&=& <\delta x> * (\tan(\alpha_{L})-h*dz/dx) + <\delta y - \delta x * \tan(\alpha_{L})>\\
500851ab 1075<\Delta y>(y_{cen})&=& -h*<\delta x>(x_{drift}, q_{cl}) * dz/dx + \delta y(y_{cen}, ...)
1076\end{eqnarray}
1077where all dependences are made explicit. This last expression can be used in two ways:
ff89cbbd 1078\begin{itemize}
1079 \item[-] By average on the $dz/dx$ we can determine directly $dy$ (the method
1080 implemented here - see Figure \ref{FIG_CLUSTER:Xcorr} right).
1081 \item[-] By plotting as a function of $dzdx$ one can determine both $dx$ and $dy$
1082 components in an independent method.
1083\end{itemize}
1084The occurance of the $r-\phi$ shift is due to the following conditions:
1085\begin{itemize}
1086 \item[-] Approximate model for cluster shape (LUT).
1087 \item[-] Rounding-up problems.
1088\end{itemize}
bb774328 1089
1090
ff89cbbd 1091\subsection[Cluster error parameterization]{Cluster error parametrization
1092\footnote{The procedures described in this section are implemented in the functions
1093{\tt AliTRDcluster::SetSigmaY2()}, {\tt AliTRDclusterResolution::ProcessCharge()},
1094{\tt AliTRDclusterResolution::ProcessCenterPad()},
1095{\tt AliTRDclusterResolution::ProcessSigma()} and
1096{\tt AliTRDclusterResolution::ProcessMean()}.}}\label{REC:CL:error}
bb774328 1097{\it Author: A.~Bercuci (A.Bercuci@gsi.de)}
ff89cbbd 1098\\
bb774328 1099
ff89cbbd 1100The error of TRD cluster is represented by the variance in the $r-\phi$ and radial
1101direction. For the $z$ direction the error is simply given by:
bb774328 1102\begin{equation}
1103\sigma^2_z=L^2_{pad}/12
1104\end{equation}
1105
ff89cbbd 1106The parameters on which the {\bf $r-\phi$ error parameterization} depends are:
1107\begin{itemize}
1108 \item[-] $s^2$ - variance due to PRF width for the case of Gauss model. Replaced
1109 by parameterization in case of LUT.
1110 \item[-] $dt$ - transversal diffusion coefficient.
1111 \item[-] $e \times B$ - tangens of Lorentz angle.
1112 \item[-] $x$-drift length - with respect to the anode wire.
1113 \item[-] $z$-offset from the anode wire.
1114 \item[-] $\tan(p)$ - local tangens of the track momentum azimuthal angle.
1115\end{itemize}
1116
1117The ingredients from which the error is computed are:
1118\begin{itemize}
1119 \item[-] PRF (charge sharing on adjacent pads) - see {\tt AliTRDcluster::GetSYprf()}.
1120 \item[-] Diffusion (dependence with drift length and [2nd order] distance to anode wire)
1121 (see {\tt AliTRDcluster::GetSYdrift()}).
1122 \item[-] Charge of the cluster (complex dependence on gain and tail cancellation) - see
1123 ({\tt AliTRD\-cluster::GetSYcharge()}).
1124 \item[-] Lorentz angle (dependence on the drift length and [2nd order] distance to anode
1125 wire) - see {\tt AliTRDcluster::GetSX()}.
1126 \item[-] Track angle (superposition of charges on the anode wire)
1127 (see {\tt AliTRDseedV1::Fit()}).
1128 \item[-] Projection of radial ($x$) error on $r-\phi$ due to fixed value assumed in
1129 tracking for $x$ - see {\tt AliTRDseedV1::Fit()}.
1130\end{itemize}
1131
1132The last 2 contributions to cluster error can be estimated only during tracking
1133when the track angle is known ($\tan(p)$). For this reason the errors (and
1134optional position) of TRD clusters are recalculated during tracking and thus
1135clusters attached to tracks might differ from bare clusters.
1136
1137Taking into account all contributions one can write the the TRD cluster error
1138parameterization as:
bb774328 1139\begin{equation}\label{EQ_CLUSTER:error}
ff89cbbd 1140\sigma_{y}^{2} = (\sigma_{diff}*\rm{Gauss}(0, s_{ly}) + \delta_{\sigma}(q))^{2}
1141 + \tan^{2}(\alpha_{L})*\sigma_{x}^{2}
1142 + \tan^{2}(\phi-\alpha_{L})*\sigma_{x}^{2}
1143 + [\tan(\phi-\alpha_{L})*\tan(\alpha_{L})*x]^{2}/12
bb774328 1144\end{equation}
ff89cbbd 1145From this formula one can deduce that the simplest calibration method for PRF and
1146diffusion contributions is by measuring resolution at $B = 0$~T and $\phi = 0$.
1147To disentangle further the two remaining contributions one has to represent $s^2$
1148as a function of drift length.
bb774328 1149
ff89cbbd 1150In the Gaussian model the diffusion contribution can be expressed as:
bb774328 1151\begin{equation}
ff89cbbd 1152\sigma^{2}_{y} = \sigma^{2}_{PRF} + \frac{x\delta_{t}^{2}}{(1+\tan(\alpha_{L}))^{2}}
bb774328 1153\end{equation}
ff89cbbd 1154thus resulting the PRF contribution. For the case of the LUT model both contributions
1155have to be determined from the fit (see {\tt AliTRDclusterResolution::ProcessCenterPad()}
1156for details).
1157\\
bb774328 1158
ff89cbbd 1159\noindent
1160{\bf Parameterization with respect to the distance to the middle of the center pad}
1161\\
bb774328 1162
ff89cbbd 1163If $\phi = \alpha_L$ in Eq.~\ref{EQ_CLUSTER:error} one gets the following expression:
bb774328 1164\begin{equation}\label{EQ_CLUSTER:errorPhiAlpha}
ff89cbbd 1165\sigma_{y}^{2} = \sigma_{y}^{2}|_{B=0} + \tan^{2}(\alpha_{L})*\sigma_{x}^{2}
bb774328 1166\end{equation}
ff89cbbd 1167where we have explicitely marked the remaining term in case of absence of magnetic
1168field. Thus one can use the previous equation to estimate $s_y$ for B~=~0 and than
1169by comparing in magnetic field conditions one can get the $s_x$. This is a simplified
1170method to determine the error parameterization for $s_x$ and $s_y$ as compared to the one
1171implemented in {\tt ProcessSigma()}. For more details on cluster error
1172parameterization please see also {\tt AliTRDcluster::SetSigmaY2()}.
1173\\
1174
1175\noindent
1176{\bf Parameterization with respect to drift length and distance to the anode wire}
1177\\
1178
1179As the $r-\phi$ coordinate is the only one which is measured by the TRD detector we
1180have to rely on it to estimate both the radial ($x$) and $r-\phi$ ($y$) errors. This
1181method is based on the following assumptions. The measured error in the $y$
1182direction is the sum of the intrinsic contribution of the $r-\phi$ measurement
1183with the contribution of the radial measurement - because $x$ is not a parameter of
1184Alice track model (Kalman).
500851ab 1185\begin{equation}
1186\sigma^{2}|_{y} = \sigma^{2}_{y*} + \sigma^{2}_{x*}
1187\end{equation}
1188In the general case
1189\begin{eqnarray}
ff89cbbd 1190\sigma^{2}_{y*}& =& \sigma^{2}_{y} + \tan^{2}(\alpha_{L})\sigma^{2}_{x_{drift}}\\
1191\sigma^{2}_{x*} &=& \tan^{2}(\phi - \alpha_{L})*(\sigma^{2}_{x_{drift}}
1192 + \sigma^{2}_{x_{0}} + \tan^{2}(\alpha_{L})*x^{2}/12)
500851ab 1193\end{eqnarray}
ff89cbbd 1194where we have explicitely show the Lorentz angle correction on $y$ and the projection
1195of radial component on the $y$ direction through the track angle in the bending plane
1196($\phi$). Also we have shown that the radial component in the last equation has two
1197terms, the drift and the misalignment ($x_0$). For ideal geometry or known misalignment
1198one can solve the equation
500851ab 1199\begin{equation}
ff89cbbd 1200\sigma^{2}|_{y} = \tan^{2}(\phi - \alpha_{L})*(\sigma^{2}_{x}
1201 + \tan^{2}(\alpha_{L})*x^{2}/12)
1202 + [\sigma^{2}_{y} + \tan^{2}(\alpha_{L})\sigma^{2}_{x}]
500851ab 1203\end{equation}
1204by fitting a straight line:
1205\begin{equation}
ff89cbbd 1206\sigma^{2}|_{y} = a(x_{cl}, z_{cl}) * \tan^{2}(\phi - \alpha_{L}) + b(x_{cl}, z_{cl})
500851ab 1207\end{equation}
1208the error parameterization will be given by:
1209\begin{eqnarray}
ff89cbbd 1210\sigma_{x} (x_{cl}, z_{cl}) &=& \sqrt{a(x_{cl}, z_{cl}) - \tan^{2}(\alpha_{L})*x^{2}/12}\\
1211\sigma_{y} (x_{cl}, z_{cl}) &=& \sqrt{b(x_{cl}, z_{cl}) - \sigma^{2}_{x} (x_{cl}, z_{cl})
1212 * \tan^{2}(\alpha_{L})}
500851ab 1213\end{eqnarray}
1214In Figure \ref{FIG_CLUSTER:shift} left, there is an example of such dependency.
1215
ff89cbbd 1216The error parameterization obtained by this method are implemented in the functions
1217{\tt AliTRD\-cluster::GetSX()} and {\tt AliTRDcluster::GetSYdrift()}.
500851ab 1218
ff89cbbd 1219An independent method to determine $s_y$ as a function of drift length (see
1220{\tt AliTRDcluster\-Resolution::ProcessCenterPad()}) is to plot cluster resolution as
1221a function of drift length at $\phi = \alpha_L$ as seen in
1222Eq.~\ref{EQ_CLUSTER:errorPhiAlpha}. Thus one can use directly the previous equation
1223to estimate $s_y$ for $B = 0$ and than by comparing in magnetic field conditions one
1224can get the $s_x$.
500851ab 1225
ff89cbbd 1226One has to keep in mind that while the first method returns the mean $s_y$ over the
1227distance to the middle of center pad ($y_{center}$) distribution the second method
1228returns the *STANDARD* value at $y_{center}=0$ (maximum). To recover the standard
1229value one has to solve the obvious equation:
500851ab 1230\begin{equation}
1231\sigma_{y}^{STANDARD} = \frac{<\sigma_{y}>}{\int{s exp(s^{2}/\sigma) ds}}
1232\end{equation}
ff89cbbd 1233with "$<s_y>$" being the value calculated in first method and "sigma" the width of
1234the $s_y$ distribution calculated in the second.
1235\\
500851ab 1236
ff89cbbd 1237\noindent
1238{\bf Parameterization with respect to cluster charge}
1239\\
bb774328 1240
ff89cbbd 1241In Eq.~\ref{EQ_CLUSTER:errorPhiAlpha} one can explicitely write:
bb774328 1242\begin{equation}
1243\sigma_{y}|_{B=0} = \sigma_{diff}*Gauss(0, s_{ly}) + \delta_{\sigma}(q)
1244\end{equation}
1245which further can be simplified to:
1246\begin{eqnarray}
1247<\sigma_{y}|_{B=0}>(q) &=& <\sigma_{y}> + \delta_{\sigma}(q)\\
1248<\sigma_{y}> &=& \int{f(q)\sigma_{y}dq}
1249\end{eqnarray}
ff89cbbd 1250The results for $s_y$ and $f(q)$ are displayed in Fig.~\ref{FIG_CLUSTER:errorCharge}:
bb774328 1251\begin{figure}[htb]
1252\begin{center}
1253\includegraphics[width=0.48\textwidth]{plots/clusterQerror.eps}
500851ab 1254\includegraphics[width=0.48\textwidth]{plots/clusterSX.eps}
1255\includegraphics[width=0.48\textwidth]{plots/clusterSY.eps}
bb774328 1256\end{center}
1257\caption{
1258Cluster error parameterization for different components.}
1259\label{FIG_CLUSTER:errorCharge}
1260\end{figure}
0fa1a8ee 1261The function has to extended to accommodate gain calibration scaling and errors.
bb774328 1262
757c05c1 1263%
1264\setcounter{footnote}{0}
500851ab 1265\section{The TRD tracklet}\label{REC:Tracklet:}
1266{\it Author: A.~Bercuci (A.Bercuci@gsi.de)}\\
757c05c1 1267
1268\noindent
1269The tracking in TRD can be done in two major ways:
1270\begin{itemize}
ff89cbbd 1271\item[-] Track prolongation from TPC.
1272\item[-] Stand alone track finding.
757c05c1 1273\end{itemize}
1274The first mode is the main tracking mode for all barrel tracks while the second
1275is used to peak-up track segments fully contained in the TRD fiducial volume
1276like conversions. Another feature of the TRD tracking besides the relative high
1277thickness (conversions) is the spatial correlation of the signals in the radial
1278direction due to residual tails in the cluster signals. This feature asked for
1279an intermediate step between clusters and tracks, the tracklets. The TRD
1280tracklets are linear fits of the clusters from one chamber. They are implemented
1281in the class {\tt AliTRDseedV1} and they represent the core of the TRD offline
1282reconstruction. In the following the tracklets will be described independently
1283of the framework in which they are living (tracking) in the sections
1284\ref{REC:Tracking:TrackletAttach}, \ref{REC:Tracking:TrackletFit} and
1285\ref{REC:Tracking:TrackletErrors} and than their usage will be outlined in the
1286barrel (section \ref{REC:Tracking:Propagate}) and stand alone tracking (section
1287\ref{REC:Tracking:Clusters2TracksStack}).
1288
ff89cbbd 1289\subsection[Tracklet building]{Tracklet building - Attaching clusters to tracklet
1290\footnote{The procedures described in this section are implemented in the function
757c05c1 1291{\tt AliTRDseedV1::AttachClusters()}.}}\label{REC:Tracking:TrackletAttach}
1292
ff89cbbd 1293Projective algorithm to attach clusters to seeding tracks. The following steps are
1294performed:
1295\begin{enumerate}
1296\item[-] Collapse $x$ coordinate for the full detector along track direction $dy dx$.
1297\item[-] Truncated mean on $y$ ($r-\phi$) direction.
1298\item[-] Purge clusters.
1299\item[-] Truncated mean on $z$ direction.
1300\item[-] Purge clusters.
1301\end{enumerate}
1302Optionally one can use the $z$, $dz/dx$ information from the seeding track to
1303correct for tilting.
bb774328 1304
ff89cbbd 1305We start up by defining the track direction in the $xy$ plane and roads. The
1306roads are calculated based on tracking information (variance in the $r-\phi$
1307direction) and estimated variance of the standard clusters (see
1308{\tt AliTRDcluster::SetSigmaY2()}) corrected for tilt (see {\tt GetCovAt()}).
1309From this the road is:
bb774328 1310\begin{eqnarray}
ff89cbbd 1311r_{y} &=& 3*\sqrt{12*(\sigma^{2}_{Trk}(y) + \frac{\sigma^{2}_{cl}(y)
1312+ \tan^{2}(\alpha_{L})\sigma^{2}_{cl}(z)}{1+\tan^{2}(\alpha_{L})})}\\
bb774328 1313r_{z} &= &1.5*L_{pad}
1314\end{eqnarray}
1315
1316\subsection[Tracklet fitting]{Tracklet fitting\footnote{The procedures described in this
ff89cbbd 1317section are implemented in the function
1318{\tt AliTRDseedV1::Fit()}.}}\label{REC:Tracking:TrackletFit}
757c05c1 1319
ff89cbbd 1320\noindent
1321{\bf Fit in the $xy$ plane}
1322\\
757c05c1 1323
ff89cbbd 1324The fit is performed to estimate the $y$ position of the tracklet and the track
757c05c1 1325angle in the bending plane. The clusters are represented in the chamber coordinate
ff89cbbd 1326system (with respect to the anode wire - see
1327{\tt AliTRDtrackerV1::FollowBackProlongation()} on how this is set). The $x$ and $y$
1328position of the cluster and also their variances are known from clusterizer level
1329(see {\tt AliTRDcluster::GetXloc()},
757c05c1 1330{\tt AliTRDcluster::GetYloc()}, {\tt AliTRDcluster::GetSX()} and \\
1331{\tt AliTRDcluster::GetSY()}). If a Gaussian approximation is used to calculate
1332$y$ coordinate of the cluster the position is recalculated taking into account the
1333track angle.
1334
1335Since errors are calculated only in the $y$ directions, radial errors ($x$ direction)
1336are mapped to $y$ by projection i.e.
1337\begin{equation}
ff89cbbd 1338\sigma_{x|y} = \tan(\phi) \sigma_{x}
757c05c1 1339\end{equation}
ff89cbbd 1340and also by the Lorentz angle correction.
1341\\
757c05c1 1342
ff89cbbd 1343\noindent
1344{\bf Fit in the xz plane}
1345\\
757c05c1 1346
1347The "fit" is performed to estimate the radial position ($x$ direction) where pad
1348row cross happens. If no pad row crossing the $z$ position is taken from geometry
ff89cbbd 1349and radial position is taken from the $xy$ fit (see below).
757c05c1 1350
1351There are two methods to estimate the radial position of the pad row cross:\\
ff89cbbd 13521. leading cluster radial position: Here the lower part of the tracklet is
757c05c1 1353considered and the last cluster registered (at radial $x_{0}$) on this segment
1354is chosen to mark the pad row crossing. The error of the $z$ estimate is given by :
1355\begin{equation}
ff89cbbd 1356\sigma_{z} = \tan(\theta) \Delta x_{x_{0}}/\sqrt{12}
757c05c1 1357\end{equation}
1358The systematic errors for this estimation are generated by the following sources:
1359 - no charge sharing between pad rows is considered (sharp cross)
1360 - missing cluster at row cross (noise peak-up, under-threshold signal etc.).
1361\\
ff89cbbd 13622. charge fit over the crossing point: Here the full energy deposit along
757c05c1 1363the tracklet is considered to estimate the position of the crossing by a fit
ff89cbbd 1364in the $qx$ plane. The errors in the $q$ directions are parameterized as
757c05c1 1365$\sigma_q = q^2$. The systematic errors for this estimation are generated by the
1366following sources:
ff89cbbd 1367\begin{itemize}
1368\item[-] No general model for the $qx$ dependence.
1369\item[-] Physical fluctuations of the charge deposit.
1370\item[-] Gain calibration dependence.
1371\end{itemize}
757c05c1 1372
ff89cbbd 1373\noindent
757c05c1 1374{\bf Estimation of the radial position of the tracklet}\\
1375
ff89cbbd 1376For pad row cross the radial position is taken from the $xz$ fit (see above).
757c05c1 1377Otherwise it is taken as the interpolation point of the tracklet i.e. the
1378point where the error in $y$ of the fit is minimum. The error in the $y$
1379direction of the tracklet is (see {\tt AliTRDseedV1::GetCovAt()}):
1380\begin{equation}
1381\sigma_{y} = \sigma^{2}_{y_{0}} + 2x\:cov(y_{0}, dy/dx) + \sigma^{2}_{dy/dx}
1382\end{equation}
1383and thus the radial position is:
1384\begin{equation}
1385x = - cov(y_{0}, dy/dx)/\sigma^{2}_{dy/dx}
1386\end{equation}
ff89cbbd 1387\\
757c05c1 1388
ff89cbbd 1389\noindent
757c05c1 1390{\bf Estimation of tracklet position error}\\
1391
1392The error in $y$ direction is the error of the linear fit at the radial
1393position of the tracklet while in the $z$ direction is given by the cluster
1394error or pad row cross error. In case of no pad row cross this is given by:
1395\begin{eqnarray}
ff89cbbd 1396\sigma_{y} &=& \sigma^{2}_{y_{0}} - 2cov^{2}(y_{0}, dy/dx)/\sigma^{2}_{dy/dx}
1397 + \sigma^{2}_{dy/dx}\\
500851ab 1398\sigma_{z} &=& L_{pad}/\sqrt{12}
757c05c1 1399\end{eqnarray}
1400For pad row cross the full error is calculated at the radial position of the
1401crossing (see above) and the error in $z$ by the width of the crossing region -
1402being a matter of parameterization.
1403\begin{equation}
ff89cbbd 1404\sigma_{z} = \tan(\theta) \Delta x_{x_{0}}/\sqrt{12}
757c05c1 1405\end{equation}
1406In case of no tilt correction (default in the barrel tracking) the tilt is
1407taken into account by the rotation of the covariance matrix. See
1408{\tt AliTRDseedV1::GetCovAt()} or \ref{REC:Tracking:TrackletErrors} for details.
1409
bb774328 1410\subsection[Tracklet errors]{Tracklet errors\footnote{The procedures described in this
ff89cbbd 1411section are implemented in the function
1412{\tt AliTRDseedV1::GetCovAt()}.}}\label{REC:Tracking:TrackletErrors}
757c05c1 1413
500851ab 1414In general, for the linear transformation
757c05c1 1415\begin{equation}
1416Y = T_{x} X^{T}
1417\end{equation}
500851ab 1418the error propagation has the general form
757c05c1 1419\begin{equation}
1420C_{Y} = T_{x} C_{X} T_{x}^{T}
1421\end{equation}
1422We apply this formula 2 times. First to calculate the covariance of the tracklet
1423at point $x$ we consider:
1424\begin{eqnarray}
1425T_{x} &=& (1\; x)\\
1426X&=&(y0\; dy/dx)\\
1427C_{X}&=&
1428 \left( \begin{array}{cc}
1429 Var(y0) & Cov(y0, dy/dx)\\
1430 Cov(y0, dy/dx) & Var(dy/dx)
1431 \end{array} \right)
1432\end{eqnarray}
1433and secondly to take into account the tilt angle
1434\begin{eqnarray}
1435T_{\alpha}& = &
1436 \left( \begin{array}{cc}
1437 cos(\alpha)&sin(\alpha)\\
1438 -sin(\alpha)& cos(\alpha)
1439 \end{array} \right)\\
1440X&=&(y\; z)\\
1441C_{X}&=&
1442 \left( \begin{array}{cc}
1443 Var(y) &0\\
1444 0 &Var(z)
1445 \end{array} \right)
1446\end{eqnarray}
0fa1a8ee 1447using simple trigonometric one can write for this last case
757c05c1 1448\begin{equation}
ff89cbbd 1449C_{Y}=\frac{1}{1+\tan^{2}\alpha}
757c05c1 1450 \left( \begin{array}{cc}
ff89cbbd 1451 \sigma_{y}^{2}+\tan^{2}(\alpha)\sigma_{z}^{2} &
1452 \tan(\alpha)(\sigma_{z}^{2}-\sigma_{y}^{2})\\
1453 \tan(\alpha)(\sigma_{z}^{2}-\sigma_{y}^{2}) &
1454 \sigma_{z}^{2}+\tan^{2}(\alpha)\sigma_{y}^{2}
757c05c1 1455 \end{array} \right)
1456\end{equation}
0fa1a8ee 1457which can be approximated for small alphas (2 deg) with
757c05c1 1458\begin{equation}
1459C_{Y}=
1460 \left( \begin{array}{cc}
ff89cbbd 1461 \sigma_{y}^{2} & (\sigma_{z}^{2}-\sigma_{y}^{2})\tan(\alpha)\\
1462 ((\sigma_{z}^{2}-\sigma_{y}^{2})\tan(\alpha) & \sigma_{z}^{2}
757c05c1 1463 \end{array} \right)
1464\end{equation}
1465before applying the tilt rotation we also apply systematic uncertainties
1466to the tracklet position which can be tuned from outside via the
1467{\tt AliTRDrecoParam::SetSysCovMatrix()}. They might account for extra
1468misalignment/miscalibration uncertainties.
1469
ff89cbbd 1470\subsection[Tracklet dE/dx]{Energy loss calculations\footnote{The procedures
1471described in this section are implemented in the function
1472{\tt AliTRDseedV1::CookdEdx()} and
1473{\tt AliTRDseedV1::GetdQdl()}.}}\label{REC:Tracking:TrackletdEdx}
500851ab 1474
1475Using the linear approximation of the track inside one TRD chamber (TRD tracklet)
1476the charge per unit length can be written as:
1477\begin{equation}
ff89cbbd 1478\frac{dq}{dl}(x) = \frac{q_{c}}{dx(x)
1479 * \sqrt{1 + (\frac{dy}{dx})^{2}_{fit} + (\frac{dz}{dx})^{2}_{ref}}}
500851ab 1480\end{equation}
ff89cbbd 1481where $q_c$ is the total charge collected in the current time bin and $dx$ is the length
1482of the time bin (see Fig.~\ref{FIG_TRACKLET:dEdx} right). The representation of charge
1483deposit used for PID differs thus in principle from the measured $dQ/dt$ distribution
1484(see Fig.~\ref{FIG_TRACKLET:dEdx} left)
500851ab 1485\begin{figure}[htb]
1486\begin{center}
6ec1bbe7 1487\includegraphics[width=0.88\textwidth, height=0.45\textwidth]{plots/trackletDQDT.eps}
500851ab 1488\end{center}
1489\caption{
ff89cbbd 1490Energy loss measurement on the tracklet as a function of drift time [left] and
1491respectively drift length [right] for different particle species.}
500851ab 1492\label{FIG_TRACKLET:dEdx}
6ec1bbe7 1493\end{figure}
ff89cbbd 1494The following correction are applied:
1495\begin{itemize}
1496\item[-] Charge: pad row cross corrections [diffusion and TRF asymmetry] TODO.
1497\item[-] $dx$: anisochronity.
1498\end{itemize}
1499Due to the anisochronity of the TRD detector drift velocity varies as function of
1500drift length and distance to the anode wire. Thus
500851ab 1501\begin{eqnarray}
1502dx(x) &=& dx(\inf) + \delta_x(x,z)\\
1503 &=& dt*v_d^{\inf} + \delta_x(x,z)
1504\end{eqnarray}
ff89cbbd 1505the dependence of $\delta_x$ can be found in Fig.~\ref{FIG_CLUSTER:Xcorr}.
500851ab 1506
ff89cbbd 1507\subsection[Tracklet PID]{Particle identification\footnote{The procedures described
1508in this section are implemented in the function {\tt AliTRDtrackV1::CookPID()} and
1509{\tt AliTRDseedV1::CookPID()}.}}\label{REC:Tracking:TrackletPID}
6ec1bbe7 1510
ff89cbbd 1511Retrieve the PID probabilities for $e^\pm$, $\mu^\pm$, $K^\pm$, $\pi^\pm$ and $p^\pm$
1512from the OCDB according to tracklet information:
6ec1bbe7 1513\begin{itemize}
ff89cbbd 1514\item[-] Estimated momentum at tracklet reference point.
1515\item[-] $dE/dx$ measurements.
1516\item[-] Tracklet length.
1517\item[-] TRD layer.
1518\end{itemize}
1519According to the steering settings specified in the reconstruction one of the
1520following methods are used.
1521\begin{itemize}
1522\item[-] Neural Network [default] - option "nn".
1523\item[-] 2D Likelihood - option "!nn".
6ec1bbe7 1524\end{itemize}
6ec1bbe7 1525\begin{figure}[htb]
1526\begin{center}
1527\includegraphics[width=0.88\textwidth, height=0.45\textwidth]{plots/trackPID.eps}
1528\end{center}
1529\caption{
ff89cbbd 1530Pion efficiency capability of the TRD for tracks with 6 tracklets as a function of
1531momentum [left] and the corresponding threshold value for selecting $90\%$ of
1532electrons [right] for the two methods used.}
6ec1bbe7 1533\label{FIG_TRACK:PID}
1534\end{figure}
1535
ff89cbbd 1536At track level the PID information is calculated by delegating the function of
1537the tracklets. The number of tracklets used is also computed. The tracklet
1538information are considered independent. For the moment no global track measurement
1539of PID is performed as for example to estimate bremsstrahlung probability based on
1540global $\chi^2$ of the track. The status bit {\tt AliESDtrack::kTRDpid} is set
1541during the call of {\tt AliTRDtrackV1::UpdateESDtrack()}. The PID performance of
1542the TRD for tracks with 6 tacklets is displayed in Fig.~\ref{FIG_TRACK:PID}.
1543\\
6ec1bbe7 1544
500851ab 1545\setcounter{footnote}{0}
1546\section{Tracking}\label{REC:Tracking:}
1547{\it Author: A.~Bercuci (A.Bercuci@gsi.de)}\\
1548
1549The tracking procedures in TRD are responsible to attach clusters to tracks
1550and to estimate/update the track parameters accordingly. The main class involved
1551in this procedure is {\tt AliTRDtrackerV1} and the helper classes {\tt AliTRDcluster},
1552{\tt AliTRDseedV1} and {\tt AliTRDtrackV1}. Additionally, information from
1553{\tt AliTRDrecoParam} is mandatory to select the proper setup of the reconstruction.
1554\\
1555
bb774328 1556\subsection[Track propagation barrel]{Track propagation in barrel tracking\footnote{The
757c05c1 1557procedures described in this section are implemented in the function
1558{\tt AliTRDtrackerV1::PropagateBack()}.}}\label{REC:Tracking:Propagate}
1559
ff89cbbd 1560Propagate the ESD tracks from TPC to TOF detectors and building of the TRD track. For
1561building a TRD track an ESD track is used as seed. The informations obtained on the TRD
1562track (measured points, covariance, PID, etc.) are than used to update the corresponding
1563ESD track. Each track seed is first propagated to the geometrical limit of the TRD
1564detector. Its prolongation is searched in the TRD and if corresponding clusters are found
1565tracklets are constructed out of them (see {\tt AliTRDseedV1::AttachClusters()}) and the
1566track is updated. Otherwise the ESD track is left unchanged.
6ec1bbe7 1567
1568The following steps are performed:
1569\begin{itemize}
ff89cbbd 1570\item[1.] Selection of tracks based on the variance in the $y-z$ plane.
1571\item[2.] Propagation to the geometrical limit of the TRD volume. If track
1572 propagation fails the {\tt AliESDtrack::kTRDStop} is set.
1573\item[3.] Prolongation inside the fiducial volume (see
1574 {\tt AliTRDtrackerV1::FollowBackProlonga\-tion()}) and marking
1575 the following status bits:
1576 \begin{center}
1577 \begin{tabular}{|l|l|} \hline
1578 {\tt AliESDtrack::kTRDin} & Tracks enters the TRD fiducial volume. \\ \hline
1579 {\tt AliESDtrack::kTRDStop} & Tracks fails propagation. \\ \hline
1580 {\tt AliESDtrack::kTRDbackup} & Tracks fulfills the $\chi^{2}$
1581 conditions and qualifies for refitting. \\ \hline
1582 \end{tabular}
1583 \end{center}
1584\item[4.] Writting to friends, PID, MC label, quality etc. Setting the status bit
1585 {\tt AliESDtrack::kTRDout}.
1586\item[5.] Propagation to TOF. If track propagation fails the {\tt AliESDtrack::kTRDStop}
1587 is set.
6ec1bbe7 1588\end{itemize}
1589
ff89cbbd 1590
1591\noindent
757c05c1 1592{\bf TRD Tracklet initialization and Kalman fit}\footnote{The procedures
1593described in this section are implemented in the function
ff89cbbd 1594{\tt AliTRDtrackerV1::FollowBackProlongation()}.}
1595\\
757c05c1 1596
6ec1bbe7 1597Starting from the arbitrary radial position of the track this is
1598extrapolated through the 6 TRD layers. The following steps
1599are being performed for each layer:
1600\begin{itemize}
ff89cbbd 1601\item[1.] Propagate track to the entrance of the next chamber:
1602 \begin{itemize}
1603 \item[-] Get chamber limits in the radial direction.
1604 \item[-] Check crossing sectors.
1605 \item[-] Check track inclination.
1606 \item[-] Check track prolongation against boundary conditions (see exclusion
1607 boundaries on {\tt AliTRDgeometry::IsOnBoundary()}).
1608 \end{itemize}
1609\item[2.] Build tracklet (see {\tt AliTRDseed::AttachClusters()} for details) for
1610 this layer if needed. If only the Kalman filter is needed and tracklets
1611 are already linked to the track this step is skipped.
6ec1bbe7 1612\item[3.] Fit tracklet using the information from the Kalman filter.
1613\item[4.] Propagate and update track at reference radial position of the tracklet.
ff89cbbd 1614\item[5.] Register tracklet with the tracker and track. Update pulls monitoring.
6ec1bbe7 1615\end{itemize}
1616
ff89cbbd 1617During the propagation a bit map is filled detailing the status of the track in
1618each TRD chamber.
1619\begin{center}
1620\begin{tabular}{|l|l|} \hline
1621{\tt AliTRDtrackV1::kProlongation} & Track prolongation failed. \\ \hline
1622{\tt AliTRDtrackV1::kPropagation} & Track prolongation failed. \\ \hline
1623{\tt AliTRDtrackV1::kAdjustSector} & Failed during sector crossing. \\ \hline
1624{\tt AliTRDtrackV1::kSnp} & Too large bending. \\ \hline
1625{\tt AliTRDtrackV1::kTrackletInit} & Fail to initialize tracklet. \\ \hline
1626{\tt AliTRDtrackV1::kUpdate} & Fail to attach clusters or fit the tracklet. \\ \hline
1627{\tt AliTRDtrackV1::kUnknown} & Anything which is not covered before. \\ \hline
1628\end{tabular}
1629\end{center}
6ec1bbe7 1630By default the status of the track before first TRD update is saved.
1631
bb774328 1632\subsection[Stand alone track finding]{Stand alone track finding\footnote{The procedures
757c05c1 1633described in this section are implemented in the function
1634{\tt AliTRDtrackerV1::Clusters2TracksStack()}.}}\label{REC:Tracking:Clusters2TracksStack}
1635
ff89cbbd 1636Seeding tracklets and build candidate TRD tracks. The procedure is used during
1637barrel tracking to account for tracks which are either missed by TPC prolongation
1638or are conversions inside the TRD volume. For stand alone tracking the procedure
1639is used to estimate all tracks measured by TRD.
1640\\
6ec1bbe7 1641
ff89cbbd 1642\noindent
757c05c1 1643{\bf TRD track finding}\footnote{The procedures described in this section
1644are implemented in the function {\tt AliTRDtrackerV1::MakeSeeds()}.}
ff89cbbd 1645\\
6ec1bbe7 1646
1647The following steps are performed:
1648\begin{itemize}
ff89cbbd 1649\item[1.] Build seeding layers by collapsing all time bins from each of the four
1650 seeding chambers along the radial coordinate. See
1651 {\tt AliTRDtrackingChamber::GetSeedingLayer()} for details. The chambers
1652 selection for seeding is described in
1653 {\tt AliTRDtrackerV1::Clusters2\-TracksStack()}.
1654\item[2.] By using the seeding clusters from the seeding layer (step 1) build
1655 combinatorics using the following algorithm:
1656 \begin{itemize}
1657 \item[-] For each seeding cluster in the lower seeding layer find.
1658 \item[-] All seeding clusters in the upper seeding layer inside a road defined by
1659 a given $\phi$ angle. The angle is calculated on the minimum \pt\ of tracks
1660 from the main vertex, accessible by the stand alone tracker.
1661 \item[-] For each pair of two extreme seeding clusters select middle upper cluster
1662 using roads defined externally by the reco params.
1663 \item[-] Select last seeding cluster as the nearest to the linear approximation of
1664 the track described by the first three seeding clusters. The implementation
1665 of the road calculation and cluster selection can be found in the functions
1666 {\tt AliTRDchamberTimeBin::Build\-Cond()} and
1667 {\tt AliTRDchamberTimeBin::GetClusters()}.
1668 \end{itemize}
1669\item[3.] Helix fit to the set of eeding clusters
1670 (see {\tt AliTRDtrackerFitter::FitRieman(AliTRD\-cluster**)}). No tilt
1671 correction is performed at this level
6ec1bbe7 1672\item[4.] Initialize seeding tracklets in the seeding chambers.
ff89cbbd 1673\item[5.] {\bf Filter 0:} $\chi^{2}$ cut on the $y$ and $z$ directions. The threshold is
1674 set externally by the reco params.
1675\item[6.] Attach (true) clusters to seeding tracklets
1676 (see {\tt AliTRDseedV1::AttachClusters()}) and fit tracklet
1677 (see {\tt AliTRDseedV1::Fit()}). The number of used clusters used by current
1678 seeds should not exceed ... (25).
1679\item[7.] {\bf Filter 1:} Check if all 4 seeding tracklets are correctly constructed.
1680\item[8.] Helix fit to the clusters from the seeding tracklets with tilt correction.
1681 Refit tracklets using the new approximation of the track. The model of the
1682 Riemann tilt fit is based on solving simultaneously the equations:
1683 \begin{eqnarray}
1684 R^{2} &=& (x-x_{0})^{2} + (y^{*}-y_{0})^{2}\\
1685 y^{*} &=& y - \tan(h)(z - z_{t})\\
1686 z_{t} &=& z_{0}+dzdx*(x-x_{r})
1687 \end{eqnarray}
1688 with $(x, y, z)$ the coordinate of the cluster, $(x_0, y_0, z_0)$ the
1689 coordinate of the center of the Riemann circle, $R$ its radius, $x_r$ a
1690 constant reference radial position in the middle of the TRD stack and $dzdx$
1691 the slope of the track in the $x-z$ plane. Using the following transformations
1692 \begin{eqnarray}
1693 t &=& 1 / (x^{2} + y^{2})\\
1694 u &=& 2 * x * t\\
1695 v &=& 2 * \tan(h) * t\\
1696 w &=& 2 * \tan(h) * (x - x_{r}) * t
1697 \end{eqnarray}
1698 one gets the following linear equation
1699 \begin{equation}
1700 a + b * u + c * t + d * v + e * w = 2 * (y + \tan(h) * z) * t
1701 \end{equation}
1702 where the coefficients have the following meaning
1703 \begin{eqnarray}
1704 a &=& -1/y_{0}\\
1705 b &=& x_{0}/y_{0}\\
1706 c &=& (R^{2} -x_{0}^{2} - y_{0}^{2})/y_{0}\\
1707 d &=& z_{0}\\
1708 e &=& dz/dx
1709 \end{eqnarray}
1710 The error calculation for the free term is thus
1711 \begin{equation}
1712 \sigma = 2 * \sqrt{\sigma^{2}_{y}(tilt\ corr ...)
1713 + \tan^{2}(h) * \sigma^{2}_{z}} * t
1714 \end{equation}
1715 From this simple model one can compute $\chi^2$ estimates and a rough
1716 approximation of $1/p_t$ from the curvature according to the formula:
1717 \begin{equation}
1718 C = 1/R = a/(1 + b^{2} + c*a)
1719 \end{equation}
1720\item[9.] {\bf Filter 2:} Calculate likelihood of the track
1721 (see {\tt AliTRDtrackerV1::CookLikelihood()}). The following quantities are
1722 checked against the Riemann fit:
1723 \begin{itemize}
1724 \item[-] Position resolution in $y$.
1725 \item[-] Angular resolution in the bending plane.
1726 \item[-] Likelihood of the number of clusters attached to the tracklet.
1727 \end{itemize}
1728\item[10.] Extrapolation of the helix fit to the other 2 chambers *non seeding*
1729 chambers:
1730 \begin{itemize}
1731 \item[-] Initialization of extrapolation tracklets with the fit parameters.
1732 \item[-] Attach clusters to extrapolated tracklets.
1733 \item[-] Helix fit of tracklets
1734 \end{itemize}
1735\item[11.] Improve seeding tracklets quality by reassigning clusters based on the
1736 last parameters of the track (see {\tt AliTRDtrackerV1::ImproveSeedQuality()}
1737 for details).
1738\item[12.] Helix fit of all 6 seeding tracklets and $\chi^{2}$ calculation
1739\item[13.] Hyperplane fit and track quality calculation
1740 (see {\tt AliTRDtrackerFitter::FitHyperplane()} for details.
1741\item[14.] Cooking labels for tracklets. Should be done only for MC.
6ec1bbe7 1742\item[15.] Register seeds.
1743\end{itemize}
1744
883031eb 1745%
1746%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1747\newpage
1748\setcounter{chapter}{3}
1749\setcounter{section}{0}
1750\Chapter{Calibration}
1751%
1752{\it Author: R.~Bailhache (rbailhache@ikf.uni-frankfurt.de)}
1753\smallskip
1754\\
1755%
1756\section{Database Entries}
1757A local database with default parameters can be found in the AliRoot
1758installation directory. The official database is in Alien under the
1759directory
1760{\tt /alice/data/$\langle$year$\rangle$/$\langle$LHCPeriod$\rangle$/OCDB}.
1761The calibration objects are stored in root files named according to their
1762run validity range, their version and subversion number. For the TRD they
1763are in the subdirectory {\tt \$AliRoot/OCDB/TRD/Calib} and correspond to
1764a perfect TRD detector. The parameters are listed in Tab.\ref{entriesdatabase}.\\
1765\begin{table} [h]
1766 \begin{center}
1767 \begin{tabular}{|c|c|c|c|c|c|}
1768 \hline Parameter & Description & Number of & Data type & Unit & Default value \\
1769 & & channels & & & \\ \hline
1770 ChamberGainFactor & Mean gas gain & 540 & Float & $-$ & 1.0 \\
1771 $ $ & per chamber & & & & \\ \hline
1772 LocalGainFactor & Gas gain & 1181952 & UShort & $-$ & 1.0 \\
1773 & per pad & 1181952 & UShort & $-$ & 1.0 \\ \hline
1774 ChamberVdrift & Mean drift velocity & 540 & Float & cm$/$$\mu$s & 1.5 \\
1775 & per chamber & 540 & Float & cm$/$$\mu$s & 1.5 \\ \hline
1776 LocalVdrift & Drift velocity & 1181952 & UShort & $-$ & 1.0 \\
1777 & per pad & 1181952 & UShort & $-$ & 1.0 \\ \hline
1778 ChamberT0 & Minimum timeoffset & 540 & Float & timebin & 0.0 \\
1779 & in the chamber & 540 & Float & timebin & 0.0 \\ \hline
1780 LocalT0 & Timeoffset & 1181952 & UShort & timebin & 0.0 \\
1781 & per pad & & & & \\ \hline
1782 PRFWidth & Width of the PRF & 1181952 & UShort & pad width & 0.515 ( layer 0) \\
1783 $ $ & per pad & $ $ & $ $ & $ $ & 0.502 ( layer 1) \\
1784 $ $ & $ $ & $ $ & $ $ & $ $ & 0.491 ( layer 2) \\
1785 $ $ & $ $ & $ $ & $ $ & $ $ & 0.481 ( layer 3) \\
1786 $ $ & $ $ & $ $ & $ $ & $ $ & 0.471 ( layer 4) \\
1787 $ $ & $ $ & $ $ & $ $ & $ $ & 0.463 ( layer 5) \\ \hline
1788 DetNoise & Scale factor & 540 & Float & $-$ & 0.1 \\ \hline
1789 PadNoise & Noise & 1181952 & UShort & ADC & 12 \\
1790 & per pad & & & counts & \\ \hline
1791 PadStatus & Status & 1181952 & char & $-$ & $-$ \\
1792 & per pad & & & & \\ \hline
1793 \end{tabular}
1794 \end{center}
1795\caption{\label{entriesdatabase}Entries in the database}
1796\end{table}
1797%
1798They are related to the calibration of:
1799\begin{itemize}
1800\item the gas gain: {\tt ChamberGainFactor} and {\tt LocalGainFactor}
1801\item the electron drift velocity: {\tt ChamberVdrift} and {\tt LocalVdrift}
1802\item the timeoffset: {\tt ChamberT0} and {\tt LocalT0}
1803\item the width of the Pad Response Function: {\tt PRFWidth}
1804\item the noise per channel: {\tt DetNoise}, {\tt PadNoise} and {\tt PadStatus}.
1805\end{itemize}
1806To save disk space the values per pad are stored in UShort (2 Bytes)
1807format in AliTRDCalROC objects, one per chamber, that are members of
1808a general {\tt AliTRDCalPad} object. The final constants have a
1809numerical precision of 10$^{-4}$. They are computed by
1810multiplication (gain, drift velocity and noise) or addition (timeoffset)
1811of the detector and pad coefficients. From the pad noise level a status
1812is determined for each pad ( masked, bridgedleft, bridgedright, read by
1813the second MCM, not connected). One example macro ({\tt AliTRDCreate.C})
1814to produce a local database is given in the {\tt \$AliRoot/TRD/Macros}
1815directory.\\
1816During the simulation of the detector response and the reconstruction
1817of the events the parameters are used to compute the amplitude of the
1818signal and its position inside the detector. The database has to be
1819first choosen with the help of the {\tt AliCDBManager}. The parameters
1820are then called by an {\tt AliTRDcalibDB} instance. The macro
1821{\tt \$AliRoot/TRD/Macros/ReadCDD.C} shows how to read a local database
1822and plot the gas gain or drift velocity as function of the detector
1823number or pad number.
1824%
1825\section{DAQ Calibration}
1826Calibration procedures are performed online during data-taking on
1827different systems. The principal role of the Data AcQuisition System is
1828to build the events and archive the data to permanent storage tapes. In
1829addition it also provides an efficient access to the data. Nevertheless
1830the complete reconstruction of the events with tracks is not available.
1831Two algorithms are executed on DAQ for the TRD: a pedestal algorithm and
1832an algorithm for the drift velocity and timeoffset. They are implemented
1833as rpm packages, that can be easily built inside AliRoot compiled with
1834the DATE software \cite{DATE}. The outputs of the algorithms are stored
1835in root files and put on the DAQ File Exchange Server (FXS). At the end
1836of the run they are picked up by the so called SHUTTLE and further
1837processed in the Preprocessor to fill finally the OCDB.
1838\begin{figure}[h]
1839 \centering\mbox{\epsfig{file=plots/baselinenoisedet0run34510ex.eps,width=0.45\textwidth}}
1840 \caption{\label{baselinenoisedet0run34510ex}2D histogram of the
1841detector 0 (SM 0, S0, L0) with the ADC value distributions around
1842the baseline (10 ADC counts) for each pad (PEDESTAL run 34510).}
1843\end{figure}
1844\subsection{Pedestal algorithm}
1845During a pedestal run empty events without zero suppression are taken
1846with the TRD alone and a random trigger. They are used to determine
1847the noise in ADC counts of each pad. The algorithm can be found in the
1848{\tt TRDPEDESTALda.cxx} file of the AliRoot TRD directory. It is
1849executed on the Local Data Concentrators (LDCs), which are part of the
1850dataflow and gives access to sub-events. The TRD has three LDCs
1851corresponding to the following blocks of supermodules (SMs):
1852\begin{itemize}
1853\item 0-1-2-9-10-11
1854\item 3-4-5-12-13-14
1855\item 6-7-8-15-16-17
1856\end{itemize}
1857Three algorithms are therefore executed in parallel during a PEDESTAL
1858run for a full installed TRD. After about 100 events, the data-taking
1859stops automatically and a 2D histogram is filled for each chamber with
1860the ADC amplitude distributions around the baseline for each pad. Such
1861a histogram is shown in Fig.\ref{baselinenoisedet0run34510ex} for
1862chamber 0 (SM 0 Stack 0 Layer 0).
1863\begin{figure}[h]
1864 \centering\mbox{\epsfig{file=plots/run38125sm0nounfold.eps,width=0.88\textwidth,height=0.55\textwidth}}
1865 \caption{\label{run38125sm0nounfold}Noise in the six planes of
1866SM 0 (PEDESTAL run 38125). The five stacks in each layer are in
1867the {\it{z}} direction.}
1868\end{figure}
1869The chambers should be so configured that the data is without zero
1870suppression otherwise an error message appears on the DAQ online
1871Logbook. The container class is called {\tt AliTRDCalibPadStatus}
1872and allows to further fit the distributions with a Gaussian to
1873determine the baseline and noise of each pad. The function is called
1874{\tt AliTRDCalibPadStatus::AnalyseHisto()}. In
1875Fig.\ref{run38125sm0nounfold} the noise in SM 0 is plotted for the
1876PEDESTAL run 38125. It shows stripe patterns of higher noise in the
1877$z$-direction (beam direction) correlated to the static pad capacitance
1878of the pad plane. The noise distributions has to be first corrected
1879for the expected noise variations induced by the pad capacitance
1880before a status can be given to each pad. This is not done on the DAQ
1881but just before storing the parameters inside the Offline Condition
1882Database (OCDB) in the Preprocessor.
1883
1884\subsection{Drift velocity and timeoffset algorithm}
1885The drift velocity and timeoffset are calibrated with physics events,
1886$pp$ or $PbPb$ collisions. The algorithm is called
1887{\tt TRDVDRIFTda.cxx} and can be found in the AliRoot TRD directory.
1888It is executed on a dedicated monitoring server, which is not part
1889of the dataflow and gives access to full events of the TRD. The
1890physics events are used to fill continuously during data-taking an
1891average pulse height for each detector. They are stored in a
1892{\tt TProfile2D}, which is a member of a { \tt AliTRDCalibraFillHisto}
1893object. The {\tt TProfile2D} is written at the end of the run in a
1894root file put on the DAQ FXS.\\
1895\begin{figure}[h]
1896 \centering\mbox{\epsfig{file=plots/referenceph2d.eps,width=0.6\textwidth,,height=0.5\textwidth}}
1897 \caption{\label{referenceph2d}2D histogram containing the average
1898pulse height distributions of each calibration group (here detector),
1899produced with decalibrated simulated $pp$ events.}
1900\end{figure}
1901
1902Fig.\ref{referenceph2d} shows an output {\tt TProfile2D} obtained
1903from simulated decalibrated $pp$ collisions at 14\,TeV. The first
1904peak in time corresponds to the amplification region, where the
1905contributions of ionization electrons, which come from both sides
1906of the anode wire plane, are overlapping. The flat plateau results
1907from the electrons in the drift region. The tail is caused by the
1908Time Response Function. From this average signal as function of time
1909the drift velocity and timeoffset can be extracted by fit procedures.
1910This last step is performed in the Preprocessor.\\
1911Since no tracking is available on DAQ, a simple tracklet finder is
1912used. It was optimized for a low charged particle multiplicity
1913environment. The algorithm looks for a maximum of the signal
1914amplitudes in the chamber after integration over all timebins. The
1915average pulse height is then filled for a spot of two pad rows
1916($z$ direction) and four pad columns ($r\phi$ direction) around the
1917maximum. Further details can be found in the function
1918{\tt AliTRDCalibraFillHisto::ProcessEventDAQ}.
1919%
1920\section{HLT Calibration}
1921The High Level Trigger has the big advantage to provide an online
1922reconstruction of the events. The idea is then to run the calibration
1923procedures in a transparent way, independent whether online or
1924offline. The same function
1925\\{\tt AliTRDCalibraFillHisto::UpdateHistogramsV1(AliTRDtrackV1 *t)}
1926is used to fill the $dE/dx$ distributions (gain), the average pulse
1927height (drift velocity and timeoffset) and the Pad Response Function
1928for each detector in respectively one {\tt TH2I} and two
1929{\tt TProfile2Ds}. The calibration is nevertheless done per chamber,
1930whereas by integrating statistics it will be possible to get the gain,
1931drift velocity and timeoffset distributions inside the chambers offline.
1932Therefore the class {\tt AliTRDCalibraFillHisto} contains a flag
1933({\tt fIsHLT}) to avoid extra calculations not needed at the detector
1934level.\\
1935\begin{figure}[hbt]
1936 \centering\mbox{\epsfig{file=plots/referencech2d.eps,width=0.55\textwidth,,height=0.45\textwidth}}
1937 \caption{\label{referencech2d}A 2D histogram containing the
1938$dE$$/$$dx$ distributions of each detector. These were produced
1939with decalibrated simulated $pp$ events.}
1940\end{figure}
1941
1942Fig.\ref{referencech2d} shows one example of a {\tt TH2I} histogram,
1943where the $dE/dx$ distributions of each detector is stored for $pp$
1944collisions at 14\,TeV. No minimal $p_{T}$ cut was applied on the
1945TRD tracks. Assuming that the charged particles are uniformy
1946distributed over the TRD chambers, the position of the Most Probable
1947Value of the $dE/dx$ distribution is used to calibrate the gain.\\
1948At the beginning of each run, a local copy of the OCDB is updated
1949on the HLT cluster: the HCDB (HLT Condition Database). The last set
1950of calibration objects are used to reconstruct the events. The gain
1951correction preformed during the tracking has to be taken into account
1952when filling the $dE/dx$ distributions. That is why the calibration
1953algorithm has to know which database was used during the
1954reconstruction. The TRD HLT code can be found in the {\tt HLT/TRD}
1955subdirectory of the AliRoot installation. The calibration is
1956implemented as an {\tt AliHLTTRDCalibrationComponent}, whose members
1957are an {\tt AliCDBManager} together with the path for the current
1958database used, and an {\tt AliTRDCalibraFillHisto} object. The main
1959functions are:
1960\begin{itemize}
1961\item {\tt AliHLTCalibrationComponent::InitCalibration}, where the
1962{\tt TH2I} and {\tt TProfile2Ds} are created.
1963\item {\tt AliHLTCalibrationComponent::ProcessCalibration}, where
1964the function\\
1965{\tt AliTRDCalibraFillHisto::UpdateHistogramsV1(AliTRDtrackV1 *t)}
1966is called to fill the histograms.
1967\item {\tt AliHLTCalibrationComponent::FormOutput}, which returns
1968a {\tt TObjArray} with the histograms.
1969\end{itemize}
1970The histograms are shipped at the end of each run to the HLT File
1971Exchange Server to be picked up by the SHUTTLE and further processed
1972by the Preprocessor, exactly as the data from the calibration on DAQ.
1973%
1974\section{Preprocessor}
1975%
1976The online systems, like the Detector Control System (DCS), the DAQ
1977and the HLT, are protected from outside by a firewall. A special
1978framework, called the SHUTTLE, has been developped to retrieve offline
1979data in the online systems or store relevant information from the
1980online systems in the OCDB. The SHUTTLE has access to the DCS, DAQ
1981and HLT FXS. At the end of each run the reference data, outputs of
1982the calibration algorithms on DAQ and HLT, are retrieved and further
1983processed to determine the calibration constants (gain, drift velocity,
1984timeoffset and width of the Pad Response Function). The reference
1985data are finally stored in the Grid reference Data Base, whereas the
1986results of the fit procedures are stored in the OCDB.\\
1987The code is contained in the {\tt AliTRDPreprocessor} class. The
1988Process function is executed for the run types: PEDESTAL, STANDALONE,
1989DAQ and PHYSICS.
1990\begin{itemize}
1991\item The PEDESTAL run are dedicated to the calibration of the noise
1992on DAQ. Only the output of the DAQ pedestal algorithm is retrieved at
1993the SHUTTLE. From the noise and baseline of each pad, a pad status is
1994determined. Disconnected pads are recognizable by a small noise.
1995Bridged pads have the same noise and baseline. The noise and
1996padstatus of the previous pedestal run in the OCDB are taken for half
1997chambers, which were not On. Finally the database entries
1998{\tt DetNoise}, {\tt PadNoise} and {\tt PadStatus} are populated in
1999the OCDB. More informations can be found in the function
2000\\{\tt AliTRDPreprocessor::ExtractPedestals}.
2001\item The STANDALONE runs are used to check the data integrity or the
2002correlated noise. The data are taken with the TRD alone and a random
2003trigger. Only the DCS data are retrieved.
2004\item The DAQ run are test runs for the DAQ people. Only the DCS data
2005are retrieved.
2006\item The PHYSICS run are global runs including more than one detector
2007and different trigger clusters. They are used for the calibration of
2008the gain, driftvelocity and timeoffset, and width of the PRF. Therefore
2009the output of the calibration algorihms running on HLT are retrieved.
2010If the procedure is not successful the output of the
2011driftvelocity$/$timeoffset algorithm on DAQ is also retrieved. The
2012reference data, the histograms, are fitted using an
2013{\tt ALiTRDCalibraFit} instance:
2014\begin{itemize}
2015\item {\tt AliTRDCalibraFit::AnalyseCH(const TH2I *ch)} determines
2016the MPVs of the $dE/dx$ distributions and compares them to a reference
2017value.
2018\item {\tt AliTRDCalibraFit::AnalysePH(const TProfile2D *ph)} fits
2019the average pulse height and determines the position of the amplification
2020region peak and the end of the drift region for each chamber. Knowing
2021the length of the drift region one can deduce the drift velocity. The
2022amplification peak gives also information on the timeoffset.
2023\item {\tt AliTRDCalibraFit::AnalysePRFMarianFit(const TProfile2D *prf)}
2024determines the spread of the clusters as function of azimuthal angle of
2025the track. The minimum gives the width of the PRF.
2026\end{itemize}
2027The results of each fit procedure are stored in a {\tt TObjArray} of
2028\\{\tt AliTRDCalibraFit::AliTRDFitInfo} objects, one per chamber, which
2029is a member of the {\tt AliTRDCalibraFit} instance. The functions
2030{\tt AliTRDCalibratFit::CreateDetObject*} and {\tt ::CreatePadObject*}
2031allow to create from the {\tt TObjArray} the final calibration objects,
2032that have to be put in the OCDB.
2033\end{itemize}
2034Tab.\ref{taskruntype} summarizes the tasks executed by the prepocessor
2035for each run type.
2036\begin{table}[h]
2037\begin{center}
2038\begin{tabular} {|c|c|c|c|c|}
2039\hline run type & DCS data points & DCS FXS & DAQ FXS & HLT FXS \\
2040 & temperatures & electronic & calibration DA & calibration DA \\
2041 & voltages, etc $\cdots$ & configuration & noise/($v_{dE}$$/$$t_{0}$)
2042& $g$/($v_{dE}$$/$$t_{0}$)/$\sigma_{PRF}$ \\
2043\hline DAQ & yes & yes & no & no \\\hline
2044\hline PEDESTAL & no & no & yes (noise) & no \\\hline
2045\hline STANDALONE & yes & yes & no & no \\\hline
2046\hline PHYSICS & yes & yes & yes ($v_{dE}$$/$$t_{0}$) & yes \\\hline
2047\end{tabular}
2048\caption{\label{taskruntype} Tasks performed by the TRD preprocessor
2049for every run type.}
2050\end{center}
2051\end{table}
2052The DCS data points are measurements of the currents, voltages,
2053temperatures and other variables of the chambers as function of time.
2054They are saved in the DCS Archive DB during the run and made available
2055at the SHUTTLE by AMANDA.
2056%
2057\section{Offline Calibration}
2058The offline calibration of the gain, driftvelocity$/$timeoffset and
2059width of the PRF is meant to improve the first calibration online.
2060It follows the following steps:
2061\begin{itemize}
2062\item Fill reference data (the $dE/dx$ distributions, the average
2063pulse heights $\cdots$) during the reconstruction of the events offline.
2064\item Store the reference data in root files in AliEn.
2065\item Merge the reference data of different runs and$/$or calibration groups.
2066\item Fit the reference data to extract the calibration constants and
2067create the calibration objects.
2068\item Store the calibration objects according to their run validity in
2069the OCDB.
2070\end{itemize}
2071The calibration procedure is not performed per detector anymore but per
2072pad, at least for the first step, the filling of the reference data.
2073Depending on the available statics the reference data of different pads
2074(calibration groups) can be merged together to determine a mean
2075calibration coefficient over these pads.
2076\subsection{AliTRDCalibraVector container}
2077The high granularity of the calibration, with a total number of 1181952
2078pads, implies that the size of the reference data has to be reduced to
2079the strict minimum needed.
2080\begin{table}[h]
2081\begin{center}
2082\begin{tabular} {|c|c|c|}
2083\hline reference data & Number of & size \\
2084 for & calibration groups & in MB \\\hline
2085 gain & 1181952 & 225 \\\hline
2086 driftvelocity$/$timeoffset & 1181952 & 271 \\\hline
2087 PRF & 131328 & 200 \\\hline
2088 All together & & 696 \\\hline
2089\end{tabular}
2090\caption{\label{sizeofAliTRDCalibraVector} Size of the
2091{\tt AliTRDCalibraVector} object for a given granularity.}
2092\end{center}
2093\end{table}
2094
2095The {\tt TH2I} and {\tt TProfile2D} objects are not a good option
2096anymore. Therefore a container class, {\tt AliTRDCalibraVector}, was
2097developped. The {\tt TH2I} corresponds to an array of UShort (2 Bytes)
2098for the number of entries in each bin, the {\tt TProfile2D} to an array
2099of UShort for the number of entries in each bin and two arrays of Float
2100for the sum of the weights and the sum of the squared weights in each
2101bin. The mean value and its error are computed per hand in the functions
2102{\tt AliTRDCalibraVector::UpdateVector*}, where the object is filled
2103with new data. The size of the {\tt AliTRDCalibraVector} object is
2104summarized in Tab.\ref{sizeofAliTRDCalibraVector}.\\
2105%
2106\subsection{Additional method to calibrate the drift velocity}
2107In addition an other method is available for the calibration of the
2108drift velocity. It is based on the comparison of the slope of the TRD
2109tracklet in the azimuthal plane $xy$ with the $\phi$ angle of the
2110global track. It can be shown that the slope $dy/dt$ of a TRD tracklet
2111depends linearly on its global track parameters,
2112$\tan(\phi)+(dz/dx)\tan(\beta_{tilt})$ \cite{THESISR}. The slope
2113parameter is the drift velocity in the electric field direction,
2114whereas the constant gives the tangent of the Lorentz angle. If the
2115TRD tracklet crosses two different pads in the $z$ direction (the
2116beam direction), the relation is not true anymore. Therefore such
2117tracklets are rejected in the calibration procedure. The reference
2118data are a {\tt TObjArray} of one {\tt TH2F} histogram for each
2119detector.\\
2120\begin{figure}[hbt]
2121 \centering\mbox{\epsfig{file=plots/crossrow.eps,width=0.5\textwidth,height=0.45\textwidth}}
2122 \caption{\label{crossrow}The correlation between $dy/dt$ and
2123$\tan(\phi)+(dz/dx)\tan(\beta_{tilt})$ for the reconstructed track
2124in one chamber. The tracks crossing at least two pad rows are in
2125red crosses and those crossing one pad row in blue points.}
2126\end{figure}
2127
2128Fig.\ref{crossrow} shows one example of such a histogram. They are
2129filled in the function
2130\\{\tt AliTRDCalibraFillHisto: :UpdateHistogramsV1(AliTRDtrackV1 *t)},
2131like the reference data for other calibration constants, if the
2132flag {\tt fLinearFitterDebugOn} is true.\\
2133The histograms are stored in the container class,
2134\\{\tt AliTRDCalibraVdriftLinearFit}, for which a {\tt Merge} and
2135{\tt Add} function have been implemented. In a second step, the
2136{\tt AliTRDCalibraVdriftLinearFit} objects can be merged together
2137for different runs. In a third step, the {\tt TH2F} histograms are
2138fitted in the function \\{\tt AliTRDCalibraVdriftLinearFit::FillPEArray}.
2139The result parameters are members of the
2140{\tt AliTRDCalibraVdriftLinearFit} object, as well as their error
2141coming from the fit procedures. Finally the
2142{\tt AliTRDCalibraVdriftLinearFit} object is passed to an
2143{\tt AliTRDCalibraFit} instance through the function
2144{\tt AliTRDCalibraFit::AnalyseLinearFitters}, in which the Lorentz
2145angle is computed from the fit parameters and stored together with
2146the drift velocity in a {\tt TObjArray}, member of the
2147{\tt AliTRDCalibraFit} instance. As for the other calibration
2148constants the functions {\tt AliTRDCalibratFit::CreateDetObject*}
2149and {\tt ::CreatePadObject*} allows to create the final calibration
2150objects, that have to be put in the OCDB. Since the Lorentz angle
2151is not a OCDB entries, it is only used for debugging.
2152%
2153\subsection{The calibration AliAnalysisTask}
2154The reference data of the calibration are filled in an AliAnalysisTask
2155during the reconstruction or after the reconstruction. Since it needs
2156some informations only stored in the AliESDfriends, they have to be
2157written if one wants to run the calibration. This will be the case
2158only for TRD track above a given $p_{T}$ since the size of the events
2159is otherwise to big.
2160%
2161%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2162\newpage
2163\setcounter{chapter}{4}
2164\setcounter{section}{0}
2165\Chapter{Alignment}
2166\thispagestyle{empty}
2167%
2168\section{???}
2169%
2170%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2171\newpage
2172\setcounter{chapter}{5}
2173\setcounter{section}{0}
2174\Chapter{Quality Assurance (QA)}
2175\thispagestyle{empty}
2176%
2177\section{???}
2178%
2179%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2180\newpage
2181\setcounter{chapter}{6}
2182\setcounter{section}{0}
2183\Chapter{High Level Trigger (HLT)}
2184\thispagestyle{empty}
2185%
2186\section{???}
2187%
2188%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2189\newpage
2190\setcounter{chapter}{7}
2191\setcounter{section}{0}
2192\Chapter{References}
2193\thispagestyle{empty}
2194%
2195\begin{thebibliography}{99}
2196%
2197\bibitem{ALIROOT} {\it The ALICE Offline Bible}\\
2198 http://aliceinfo.cern.ch/export/sites/AlicePortal/Offline/galleries/Download/OfflineDownload/ \\
2199 OfflineBible.pdf.
2200%
2201\bibitem{CLEMENS} C.~Adler,
2202 {\it Radiation length of the ALICE TRD}
2203%
2204\bibitem{DAVID} D.~Emschermann,
2205 {\it Numbering Convention for the ALICE TRD Detector.},
2206 http://www.physi.uni-heidelberg.de/\~demscher/alice/numbering/more/TRD\_numbering\_v04.pdf.
2207%
2208\bibitem{TRPHOT} M.~Castellano et al.,
2209 Comp. Phys. Comm. {\bf 55}, 431 (1988),
2210 Comp. Phys. Comm. {\bf 61}, 395 (1990),
2211%
2212\bibitem{DATE} K.~Schossmaier et al.,
2213 {\it The Alice Data Acquisition and Test Environment DATE V5},
2214 CHEP06.
2215%
2216\bibitem{THESISR} R.~Bailhache,
2217 {\it Calibration of the ALICE Transition Radiation Detector
2218 and a study of $Z^{0}$ and heavy quark production in $pp$
2219 collisions at the LHC},
2220 PhD thesis, University of Darmstadt (Germany), 2009.
2221%
2222\end{thebibliography}
2223%
2224%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2225%
2226\end{document}
2227%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%