]>
Commit | Line | Data |
---|---|---|
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 | % | |
101 | This document is supposed to provide a description of the offline | |
102 | software components that are specific to the TRD. It is an attempt | |
103 | to collect useful informations on the design and usage of the TRD | |
104 | software, in order to facilitate newcomers the introduction to the | |
105 | code. The most important classes and procedures are described and | |
0fa1a8ee | 106 | several examples and use cases are given. |
883031eb | 107 | However, this writeup is not meant to be a basic AliRoot introduction. |
108 | For this purpose the reader is referred to the general AliRoot users | |
109 | guide \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 | % | |
125 | The TRD geometry, as implemented in {\tt AliTRDgeometry}, consists of | |
126 | several components: The readout chambers (ROC), the services, and the | |
127 | supermodule frame. All these parts are placed inside the TRD mother | |
128 | volumes, which in turn are part of the space frame geometry | |
129 | ({\tt AliFRAMEv2}). Therefore, the space frame geometry has to be | |
130 | present to build the TRD geometry. For each of the 18 supermodules | |
131 | one single mothervolume is provided (BTRDxx). This allows to configure | |
132 | the TRD geometry in {\tt Config.C} such that it only contains a subset | |
133 | of supermodules in the total ALICE geometry via | |
134 | {\tt AliTRDgeometry::SetSMstatus()}. An incomplete detector setup, as | |
135 | it exists for first data taking, can thus be modelled. The class | |
136 | {\tt AliTRDgeometry} also serves as the central place to collect all | |
137 | geometry relevant numbers and the definitions of various numbering | |
138 | schemes of detector components (e.g. sector numbers). However, all | |
139 | geometric 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{ | |
150 | A TRD read out chamber as implemented in the AliRoot geometry. The | |
151 | various material layers are visible. Also, the MCMs on top of the | |
152 | chamber, as well as the cooling pipes are shown. | |
153 | } | |
154 | \label{FIG_GEO:roc_geom} | |
155 | \end{figure} | |
156 | % | |
157 | All ROCs are modelled in the same way, only their dimensions vary. | |
158 | They consist of an aluminum frame, which contains the material for | |
159 | the radiator and the gas of the drift region, a Wacosit frame (whose | |
160 | material is represented by carbon), that surrounds the amplification | |
161 | region, and the support structure, consisting of its aluminum frame, | |
162 | material for the read out pads, back panel, and readout boards). The | |
163 | material inside the active parts of the chambers (radiator, gas, wire | |
164 | planes, pad planes, glue, read out boards, etc.) is introduced by | |
165 | uniform layers of the corresponding material, whose thicknesses were | |
166 | chosen such to result in the correct radiation length. On top of the | |
167 | individual ROCs the multi chip modules (MCM) as well as the cooling | |
168 | pipes and cables are placed. One obvious simplification, already visible | |
169 | in Fig.~\ref{FIG_GEO:roc_geom}, is that in the AliRoot geometry the pipes | |
170 | run straight across the chambers instead of following the meandering path | |
171 | as 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{ | |
190 | A TRD supermodule, as implemented in the AliRoot geometry. The left | |
191 | panel shows only the support structures of the aluminum frame, together | |
192 | with some service elements. The right panel shows a complete | |
193 | supermodule including some surrounding parts of the space frame. | |
194 | } | |
195 | \label{FIG_GEO:sm_geom} | |
196 | \end{figure} | |
197 | % | |
198 | The supermodule frames consist of the aluminum sheets on the sides, top, | |
199 | and bottom of a supermodule together with the traversing support structures. | |
200 | The left panel of Fig.~\ref{FIG_GEO:sm_geom} shows the structures that are | |
201 | implemented in the TRD geometry. Also, parts of the services like the LV | |
0fa1a8ee | 202 | power bus bars and cooling arteries can be seen. Additional electronics |
883031eb | 203 | equipment (e.g. ``Sch\"utten-Box``) is represented by aluminum boxes that |
204 | contain corresponding copper layers to mimic the present material. The | |
205 | services also include e.g. gas distribution boxes, cooling pipes, power and | |
206 | readout cables, and power connection panels. Part of the services extend | |
207 | into the baby and the back frame. Therefore, additional mother volumes | |
0fa1a8ee | 208 | have been introduced in order to accommodate this material. All supermodules |
883031eb | 209 | have inserts of carbon fiber sheets in the bottom part of the aluminum |
210 | casing, for the ones in front of the PHOS detector (sectors 11--15) also | |
211 | the top part includes carbon fiber inserts. The supermodules in the sectors | |
212 | 13--15 do not contain any ROCs in the middle stack in order to provide the | |
213 | holes for the PHOS detector. Instead, gas tubes of stainless steel have | |
214 | been built in. | |
215 | % | |
216 | Generally, the TRD volumina start with the letter ``{\bf U}''. The geometry | |
217 | is defined by the function {\tt AliTRDgeometry::CreateGeometry()}, which | |
218 | generates the TRD mother volumes ({\bf UTI1}, {\bf UTI2}, {\bf UTI3}) and the | |
219 | volumes 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 | |
223 | volumes for a single ROC ({\bf UTxx}, where {\bf xx} is the detector | |
224 | number {\bf DET-SEC}, defined inside a single super module, see below). The | |
225 | materials, together with their tracking parameters, that are assigned to | |
226 | the volumina, are defined in {\tt AliTRD::CreateMaterials()}. | |
227 | In 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} | |
232 | Name & 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{ | |
252 | The radiation length map in units of $X/X_{0}$ in part of the active | |
253 | detector area of super module 0 as a function of the pseudorapidity | |
254 | $\eta$ and the azimuth angle $\phi$, calculated from the geometry in | |
255 | AliRoot. Visible are the positions of the MCMs and the cooling pipes | |
256 | as hot spots. | |
257 | } | |
258 | \label{FIG_GEO:mat_budget} | |
259 | \end{figure} | |
260 | % | |
261 | The volumina defining a ROC contain several layers that represent the | |
262 | different materials present inside a chamber and which therefore define | |
263 | the material budget inside the sensitive areas: | |
264 | \begin{center} | |
265 | \begin{tabular}{l|l|l|l|c|c|c} | |
266 | Name & 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} | |
287 | This material budget has been adjusted to match the estimate given | |
288 | in~\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 | |
290 | glue that has been applied to fix the gas leaks. Figure~\ref{FIG_GEO:mat_budget} | |
291 | shows the resulting radiation length map in the active detector area for | |
292 | super module 0, which has only carbon fiber inserts at the bottom and is | |
293 | thus one of the super modules with the largest material budget. It is | |
0fa1a8ee | 294 | clearly visible that the MCMs and the cooling pipes introduce hot spots |
883031eb | 295 | in $X/X_{0}$. However, after averaging over the shown area, the mean |
296 | value is found to be $\langle X/X_{0}\rangle =$~24.7~\%. For a supermodule | |
297 | with 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. | |
299 | in the middle stack of supermodules 13--15) it is only | |
300 | $\langle X/X_{0}\rangle =$~1.9~\%. | |
301 | ||
302 | The total weight of a single TRD super module in the AliRoot geometry, | |
303 | including all services, is currently 1595kg, which is ca. 5\% short of its | |
304 | real weight. A single ROC of the type L0C1 with electronics and cooling | |
305 | pipes 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{ | |
325 | Illustration of the TRD numbering scheme for super modules, defined in | |
326 | the 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 | % | |
332 | The numbering schemes and the orientations of coordinate systems generally | |
333 | follow the official ALICE-TRD definition \cite{DAVID}. Therefore, the | |
334 | whole geometry is defined in the global ALICE coordinate system. | |
335 | % | |
336 | Inside the code we use the following nomenclature (see | |
337 | Fig.~\ref{FIG_GEO:sm_numbering}), which should be used consistently | |
338 | throughout the TRD code: | |
339 | % | |
340 | \begin{center} | |
341 | \begin{tabular}{l|l|l} | |
342 | Name & 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 | % | |
351 | Due to the holes in front of the PHOS detector, naturally not all {\bf DET} | |
352 | numbers correspond to existing ROCs. A single ROC can thus be uniquely | |
353 | addressed by either using the three numbers | |
354 | ({\bf LAYER}, {\bf STACK}, {\bf SECTOR}) or the single {\bf DET} number. | |
355 | The 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} | |
359 | Additionally, there is a number that is unique inside a given super module (i.e. | |
360 | sector) 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} | |
364 | The class {\tt AliTRDgeometry} provides a set of functions that could/should | |
365 | be 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 | % | |
374 | All geometric parameters relevant to the pad planes are handled via the | |
375 | class {\tt AliTRDpadPlane}. This comprises the dimensions of the pad planes | |
376 | and the pad themselves, the number of padrows, padcolumns, and their tilting angle. | |
377 | The 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, | |
380 | the numbering convention follows the definition given in \cite{DAVID}. Thus, | |
381 | the 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, | |
384 | with alternating signs at different layers, beginning with +2~degrees for layer~0. | |
385 | The class {\tt AliTRDpadPlane} provides a variety of functions that allow to assign | |
386 | a pad number (row/column) to signals generated at a given hit position and which | |
387 | are 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 | % | |
395 | In the case of the TRD a single hit corresponds to a cluster of electrons | |
396 | resulting from the ionization of the detector gas. This ionization can be due | |
397 | to the normal energy loss process of a charged particle or due to the | |
398 | absorption of a transition radiation (TR) photon. A single TRD hit, as | |
399 | defined 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 | % | |
413 | On top of this, it is also stored in the {\tt TObject} bit field status word | |
414 | whether a hit is inside the drift or the amplification region | |
415 | (see {\tt AliTRDhit::FromDrift()} and {\tt AliTRDhit::FromAmplification()}). | |
416 | The creation of hits is steered by {\tt AliTRDv1::StepManager()}. | |
417 | % | |
418 | \subsection{Energy loss} | |
419 | % | |
420 | A charged particle, traversing the gas volume of the TRD chambers, will release | |
421 | charge proportional to its specific energy loss. In the TRD code this process | |
422 | is implemented in \\{\tt AliTRDv1::StepManager()}. This implementation used a | |
423 | fixed step size. The standard value here is 0.1~cm, but other values can be | |
424 | set via {\tt AliTRDv1::SetStepSize()}. The energy deposited in a given step is | |
425 | then calculated by the chosen MC program (typically Geant3.21), which after | |
426 | division by the ionization energy gives the number of electrons of the new hit. | |
427 | The version 2) will also work for an Ar/CO$_{2}$ mixture, which can be selected | |
428 | by \\{\tt AliTRDSimParam::SetArgon()}. | |
429 | % | |
430 | \subsection{Photons from transition radiation} | |
431 | % | |
0fa1a8ee | 432 | Additionally to the hits from energy loss, also hits from the absorption of |
883031eb | 433 | TR photons are generated. This is done in {\tt AliTRDv1::CreateTRhit()}, which |
434 | in turn is called by the chosen step manager for electrons and positrons | |
435 | entering the entering the drift volume. The process consists of two steps: | |
436 | first the number and energies of the TR photons have to be determined and then | |
0fa1a8ee | 437 | their absorption position inside the gas volume has to be calculated. The |
883031eb | 438 | corresponding procedures, used by {\tt AliTRDv1::CreateTRhit()}, are |
439 | implemented in {\tt AliTRDsimTR()}. This class contains a parametrization | |
440 | of TR photons generated by a regular foil stack radiator \cite{TRPHOT}. This | |
441 | parametrization has been tuned such that the resulting spectrum matches the | |
442 | one of the fiber radiator that used in reality. Since the TR production | |
443 | depends also on the momentum of the electron, the parameters have been | |
444 | adjusted in several momentum bins. After a TR photon has been generated and put | |
445 | on the particle stack, it is assumed that it follows a straight trajectory | |
446 | whose direction is determined by the momentum vector of the generating electron. | |
447 | Since the emission angle for TR photons is very small ($\sim 1/\gamma$) this | |
0fa1a8ee | 448 | is a valid approximation. The absorption length, which thus determines the |
449 | TR hit position, is randomly chosen according to the absorption cross sections | |
883031eb | 450 | in the gas mixture. These energy dependent cross sections are also included |
451 | in {\tt AliTRDsimTR}. | |
452 | % | |
453 | \subsection{Track references} | |
454 | % | |
455 | The TRD simulation produces track references ({\tt AliTrackReference}) each time | |
456 | a charged particle is entering the drift region and exiting the amplification | |
457 | region. These track references thus provide information on the position where | |
458 | the MC particle was entering and existing the sensitive region of a ROC, as well | |
459 | as on its momentum components at this positions. Also, the index to the MC particle | |
460 | in 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 | % | |
468 | The second step in the simulation chain is the translation of the hit information, | |
469 | i.e. position and amount of deposited charge, into the final detector response | |
470 | that 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 | 483 | However, in practice {\tt AliTRDdigits} is not used to store the digits |
883031eb | 484 | information. Instead the data containers described in \ref{DIGITS:containers} |
485 | are used for this purpose. The digitization process includes as an | |
486 | intermediate step between hit and digits the so-called summable digits, or | |
487 | sdigits: | |
488 | \begin{center} | |
489 | \mbox{{\bf HITS} $\Longrightarrow$ {\bf SDIGITS} $\Longrightarrow$ {\bf DIGITS}} | |
490 | \end{center} | |
491 | They sdigits contain the detector signals before discretization and the addition | |
492 | of noise and are used to merge several events into a single one. | |
493 | % | |
494 | \subsection{Digitizer} | |
495 | % | |
496 | The class {\tt AliTRDdigitizer} contains all the necessary procedures to convert | |
497 | hits into sdigits and subsequently sdigits into digits. The standard sequence to | |
498 | produce 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 | % | |
521 | The first function {\tt SortHits()} sorts the simulated hits according to | |
522 | their {\bf DET} number, so that the digitization procedures can be called | |
523 | for a single ROCs in the following loop. The function {\tt ConvertHits()} | |
524 | does the conversion of the hit information into a detector signal. In this | |
525 | procedure each electron of a given hit is in principle followed along its | |
526 | path from the position of the primary ionization towards the anode wire. | |
527 | The position of this electron can be modified by diffusion in the gas | |
528 | ({\tt AliTRDdigitizer::Diffusion()}), ExB effect ({\tt AliTRDdigitizer::ExB()}), | |
0fa1a8ee | 529 | and absorption ({\tt AliTRDdigitizer::Absorbtion()}, off per default). |
883031eb | 530 | The drift time of the electrons is also modified according to their distance |
531 | to the corresponding anode wire position ({\tt AliTRDdigitizer::TimeStruct()}), | |
532 | since the electric field lines are not uniform inside the amplification region. | |
533 | This results in a non-isochronity of the drift time, which has been | |
534 | simulated with the GARFIELD program and the tabulated results of this | |
535 | simulation are used in the digitizing process to adjust the drift times | |
536 | accordingly. Once the position and the drift time of the electron at the | |
537 | anode wire plane are know, the signal induced on the pads can be calculated. | |
538 | This involves three effects: the pad response, which distributes the charge | |
0fa1a8ee | 539 | on several pads ({\tt AliTRDdigitizer::PadResponse()}), the time response due |
883031eb | 540 | to the slow ion drift and the PASA response function, which distributes the |
541 | charge onto the following time bins, ({\tt AliTRDdigitizer::TimeResponse()}), | |
ff89cbbd | 542 | and the cross talk between neighboring pads {\tt AliTRD\-digitizer::CrossTalk()}). |
883031eb | 543 | At the end of this procedure, the charge seen by each pad in each time bin |
544 | is available. Also, the indices of maximally three MC particles in the kine | |
545 | tree contributing to a given pad signal are stored, so that in a later | |
546 | analysis it can be tested which particle generated what signal. | |
547 | As a next step the signals could either directly be converted into {\bf DIGITS}, | |
548 | or, which is the default procedure, they are stored as {\bf SDIGITIS}. | |
0fa1a8ee | 549 | The corresponding functions ({\tt AliTRDdigitizer::Signal2SDigits()} and |
883031eb | 550 | {\tt AliTRDdigitizer::Signal2ADC()}) are called from |
0fa1a8ee | 551 | {\tt AliTRDdigitizer::ConvertSignals()}, depending on the configuration. |
883031eb | 552 | The function {\tt AliTRDdigitizer::Signal2SDigits()} stores the signals as |
553 | {\bf SDIGITS} in data structures of the type {\tt AliTRDarraySignal} (see | |
554 | section \ref{DIGITS:containers}). | |
555 | ||
556 | If desired, the {\bf SDIGITS} can now be added to the {\bf SDIGITS} from other | |
557 | simulated events, e.g. in order to embed a specific signal into a background | |
558 | event ({\tt AliTRDdigitizer::MergeSDigits()}). After this optional step, the | |
559 | {\bf SDIGITS} are finally being converted into {\bf DIGITS}. This process is | |
560 | steered 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 | % | |
583 | The essential step in the final {\bf SDIGITS} $\Longrightarrow$ {\bf DIGITS} | |
584 | conversion is performed by the function {\tt AliTRDdigitizer::Signal2ADC()}. | |
585 | Here pad signals, that are stored as floats, are finally translated into | |
586 | integer ADC values. This conversion involves a number of parameters: the pad | |
587 | coupling and time coupling factors, the gain of the PASA and of the | |
588 | amplification at the anode wire, and the input range and baseline of the ADCs. | |
589 | The coupling factors take into account that only a fraction of the incoming | |
590 | signal is sampled in the digitization process. At this point also the relative | |
591 | gain factors derived from the calibration procedures for a given dataset will | |
592 | be used to distort the simulated data correspondingly. The noise is generated | |
593 | according to a Gaussian distribution of a given width and added to the output. | |
0fa1a8ee | 594 | Finally, the converted signals are discretize into the ADC values of the |
883031eb | 595 | defined resolution. At this stage also the zero suppression mechanism is applied |
596 | to the simulated ADC values ({\tt AliTRDdigitizer::ZS()}), in order to reduce | |
597 | the output volume (see section \ref{DIGITS:zs}). These {\bf DIGITS} can then | |
598 | serve as input to the raw data simulation (see section \ref{RAWSIM}). | |
599 | % | |
600 | \subsection{Simulation parameter} | |
601 | % | |
602 | The parameters that are needed to configure the digitization, are either | |
603 | read from the OCDB (e.g. calibration gain factors) or are taken from the | |
604 | parameter class {\tt AliTRDSimParam}. This class contains the default values | |
605 | of these parameters, but it can be configured in order to test different | |
606 | scenarios. The following table lists the available parameters: | |
607 | % | |
608 | \begin{center} | |
609 | \begin{tabular}{lll} | |
610 | Parameter & 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 | % | |
637 | The class {\tt AliTRDdigitsManager} handles arrays of data container | |
638 | objects in the form of ROOT's {\tt TObjArray}. Its main functionality | |
639 | is 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{ | |
646 | Data 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 | % | |
654 | During simulation different kinds of information are created and stored | |
655 | in various data containers depending on their characteristics. | |
656 | These containers were designed with the idea of keeping the code as | |
657 | simple as possible and to ease its maintenance. | |
658 | The simulated signals or sdigits for a given row, column and time bin | |
659 | of each detector, as generated by \\ {\tt AliTRDdigitizer::ConvertHits()}, | |
660 | are stored in an object of the class {\tt AliTRDarraySignal}. This | |
661 | class stores the data in an array of floating point values. In this | |
662 | case, the compression method takes as an argument a threshold. All the | |
663 | values equal or below that threshold will be set to zero during | |
664 | compression. The threshold can take any value greater or equal to zero. | |
665 | The sdigits data is used during event merging. | |
666 | ||
667 | In the simulation the information about the particles that generated the | |
668 | hits (index in kine tree) is stored for each detector in an object | |
669 | of the class {\tt AliTRDarrayDictionary}. In this case the information | |
670 | is stored in an array of integer values, which is initialized to -1. | |
671 | ||
672 | In the digitizer, the signals stored in the sdigits are converted | |
673 | afterwards into ADC values and kept in objects of the class | |
674 | {\tt AliTRDarrayADC}. This class saves the ADC values in an array of | |
675 | short values. The ADC range uses only the first 9 bits, bits 10 to 12 | |
676 | are used to set the pad status. An uncompressed object of the class | |
677 | {\tt AliTRDarrayADC} should only contain values that are equal or | |
678 | greater than -1, because the compression algorithm of this class uses | |
679 | all the other negative values in the range of the short data type. The | |
680 | value -1 in the data array is used in the simulation to indicate where | |
681 | an ADC value was ``zero suppressed''. This is done in this way so we | |
682 | are be able to discriminate between real zeroes and suppressed zeroes. | |
683 | For 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 | % | |
693 | The zero suppression algorithm was applied at the end of digitization | |
694 | in order to decrease the size of the digits file. The code is implemented | |
695 | in the class {\tt AliTRDmcmSim}. This algorithm is based on testing | |
696 | three conditions on the ADC values of three neighboring pads as seen | |
697 | in Fig.~\ref{FIG_DIG:zs} (for more information see the Data Indication | |
698 | subsection in the TRAP User Manual). The conditions are the following:\\ | |
699 | ||
700 | 1) Peak center detection:\\ | |
701 | ||
702 | ADC-1(t) $\leq$ ADC(t) $\geq$ ADC+1(t)\\ | |
703 | ||
704 | 2) Cluster:\\ | |
705 | ||
706 | ADC-1(t)+ADC(t)+ADC+1(t) $>$ Threshold\\ | |
707 | ||
708 | 3) Absolute Large Peak:\\ | |
709 | ||
710 | ADC(t) $>$ Threshold\\ | |
711 | ||
712 | If a given combination of these conditions is not fulfilled, the value ADC(t) | |
713 | is 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{ | |
720 | Zero 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 | ||
733 | The trigger generation chain of the TRD can be simulated within | |
734 | AliRoot as well. It contains several stages as in the real | |
735 | hardware (s. Fig.~\ref{fig:trgsim}). | |
736 | ||
737 | For each event the hits in the active volume are converted to | |
738 | digitized signals in the AliTRDdigitizer. The digital processing as | |
739 | done 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 | |
742 | tracklet calculation. Here the same integer arithmetics is used as in | |
743 | the real TRAP. The trigger-relevant preprocessed data, i.e. the | |
744 | tracklets, are stored using a dedicated loader. From there they are | |
745 | accessed by the GTU simulation which runs the stackwise tracking. The | |
746 | individual stages are discussed in more detail in the following | |
747 | sections. | |
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} | |
758 | The MCM simulation is contained in {\tt AliTRDmcmSim}. This class | |
0fa1a8ee | 759 | mimics the digital part of an MCM. It can be used for the simulation |
757c05c1 | 760 | after digitization has been performed. |
761 | ||
762 | Internally, an object of {\tt AliTRDmcmSim} can hold the data of | |
763 | 21~ADC channels both raw and filtered. After the instantiation {\tt | |
764 | Init()} has to be called to define the position of the MCM. Then, | |
765 | the 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 | ||
780 | After loading of the data the processing stages can be run | |
781 | individually: | |
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 | ||
798 | The 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} | |
815 | The TRAP configuration is kept in {\tt AliTRDtrapConfig} which is | |
816 | implemented as singleton. After obtaining a pointer to the class by a | |
817 | call 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 | ||
835 | The calculated tracklets can be stored by a call to {\tt AliTRDmcmSim::StoreTracklets()}. | |
836 | ||
837 | \subsection{Tracklet classes} | |
838 | In order to unify the different sources of tracklets, e.g. real data | |
839 | or simulation, all implementations of tracklets derive from the | |
840 | abstract base class {\tt AliTRDtrackletBase}. The following | |
841 | implementations 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 | ||
855 | The simulation of the TRD global tracking on tracklets is steered by | |
856 | AliTRDgtuSim. This class provides all the interface. The following | |
857 | classes 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 | ||
866 | The 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 | |
869 | event. The latter can be omitted in which case the output is not | |
870 | written to the ESD. The tracklets are automatically retrieved via the | |
871 | loader and the found tracks of type {\tt AliTRDtrackGTU} are | |
872 | internally stored in a tree for which a getter exists to access. If a | |
873 | pointer to an {\tt AliESDEvent} is given, the tracks are also written | |
874 | to 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 | ||
881 | The interface to the central trigger is defined in {\tt | |
882 | AliTRDTrigger}. This class is called automatically during simulation | |
883 | and produces the trigger inputs for TRD (in {\tt | |
884 | CreateInputs()}). They are only considered if they are part of the | |
885 | used trigger configuration (e.g. GRP/CTP/p-p.cfg). | |
886 | ||
887 | The actual trigger generation has to be contained in {\tt | |
888 | Trigger()}. Currently, the GTU simulation is run from here using the | |
889 | previously calculated tracklets. The generated tracks are stored and | |
890 | the trigger inputs are propagated to CTP. Which trigger classes make | |
891 | use 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 | |
912 | coordinates (with respect to the anode wire position) is using the following | |
913 | parameters:\\ | |
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 | 919 | The estimation of the radial position is based on calculating the drift time |
920 | and the drift velocity at the point of estimation. The drift time can be | |
921 | estimated according to the expression: | |
bb774328 | 922 | \begin{equation} |
923 | t_{drift} = t_{bin} - t_{0} - t_{cause}(x) - t_{TC}(q_{i-1}, q_{i-2}, ...) | |
924 | \end{equation} | |
ff89cbbd | 925 | where $t_0$ is the delay of the trigger signal. $t_{cause}$ is the causality |
926 | delay between ionization electrons hitting the anode and the registration of | |
927 | the mean signal by the electronics - due to the rising time of the TRF. A | |
928 | second order correction here comes from the fact that the time spreading of | |
929 | charge at anode is the convolution of TRF with the diffusion and thus | |
930 | cross-talk between clusters before and after local clusters changes with drift | |
931 | length. $t_{TC}$ is the residual charge from previous (in time) clusters due | |
932 | to residual tails after tail cancellation. This tends to push cluster forward | |
933 | and depends on the magnitude of their charge. | |
934 | ||
935 | The drift velocity varies with the drift length (and distance to anode wire) | |
936 | as described by cell structure simulation. Thus one, in principle, can calculate | |
937 | iteratively the drift length from the expression: | |
bb774328 | 938 | \begin{equation} |
939 | x = t_{drift}(x)*v_{drift}(x) | |
940 | \end{equation} | |
ff89cbbd | 941 | In practice we use a numerical approach (see {\tt AliTRDcluster::GetXcorr()} |
942 | and Figure \ref{FIG_CLUSTER:Xcorr} left) to correct for anisochronity obtained | |
943 | from a MC comparison (see {\tt AliTRDclusterResolution\-::ProcessSigma()} for | |
944 | the implementation). Also the calibration of the 0th approximation (no $x$ | |
945 | dependence) for $t_{cause}$ is obtained from MC comparisons and is impossible | |
946 | to 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{ | |
953 | Correction of the radial and $r-\phi$ position of the TRD cluster.} | |
954 | \label{FIG_CLUSTER:Xcorr} | |
955 | \end{figure} | |
ff89cbbd | 956 | \\ |
957 | \\ | |
958 | For {\bf the calculation of the $r-\phi$ offset} of the cluster from the middle | |
959 | of 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} | |
965 | In 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 | 968 | One may calculate the $r-\phi$ offset, based on the Gaussian approximation of |
969 | the PRF, from the signals $q_{i-1}$, $q_i$ and $q_{i+1}$ in the 3 adjacent pads | |
970 | by: | |
bb774328 | 971 | \begin{equation} |
ff89cbbd | 972 | y = \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 | 979 | where $W$ is the pad width, $y_0$ is the position of the middle of the center |
980 | pad and $s^2$ is given by | |
bb774328 | 981 | \begin{equation} |
ff89cbbd | 982 | s^{2} = s^{2}_{0} + s^{2}_{diff} (x,B) + \frac{\tan^{2}(\phi-\alpha_{L})*l^{2}}{12} |
bb774328 | 983 | \end{equation} |
ff89cbbd | 984 | with $s_0$ being the PRF for 0 drift and track incidence $\phi$ equal to the Lorentz |
985 | angle $\alpha_L$ and the diffusion term being described by: | |
bb774328 | 986 | \begin{equation} |
ff89cbbd | 987 | s_{diff} (x,B) = \frac{D_{L}\sqrt{x}}{1+({\omega\tau}^{2})} |
bb774328 | 988 | \end{equation} |
ff89cbbd | 989 | with $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 | 997 | The 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})\\ | |
1001 | w &=& y_{cl}^{'} + h*(z_{MC}(x_{cl})-z_{cl})\\ | |
1002 | y_{MC}(x_{cl}) &=& y_{0} - dy/dx*x_{cl}\\ | |
1003 | z_{MC}(x_{cl}) &=& z_{0} - dz/dx*x_{cl}\\ | |
ff89cbbd | 1004 | y_{cl}^{'} &=& y_{cl}-x_{cl}*\tan(\alpha_{L}) |
bb774328 | 1005 | \end{eqnarray} |
ff89cbbd | 1006 | where $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 | |
1008 | and $y_0$ and $z_0$ are MC reference points (as example the track references at | |
1009 | entrance/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} |
1012 | x_{cl} &=& x_{cl}^{*} + \delta x\\ | |
1013 | y_{cl} &=& y_{cl}^{*} + \delta y | |
1014 | \end{eqnarray} | |
ff89cbbd | 1015 | where the starred components are the corrected values. Thus by definition the |
1016 | following quantity | |
bb774328 | 1017 | \begin{equation} |
1018 | \Delta y^{*}= w^{*} - y_{MC}(x_{cl}^{*}) | |
1019 | \end{equation} | |
1020 | has 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} |
1025 | which 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 | 1029 | if expressed as function of $dy/dx-h*dz/dx$. Furtheremore this expression can |
1030 | be plotted for various clusters i.e. we can explicitely introduce the diffusion | |
1031 | ($x_{cl}$) and drift cell - anisochronity ($z_{cl}$) dependences. From | |
bb774328 | 1032 | plotting 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} | |
1036 | the 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} |
1041 | In 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{ | |
1048 | Linear relation to estimate radial and $r-\phi$ cluster shifts and error.} | |
1049 | \label{FIG_CLUSTER:shift} | |
1050 | \end{figure} | |
ff89cbbd | 1051 | \\ |
1052 | \\ | |
1053 | The 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} | |
1065 | The numerical results for ideal simulations for the radial are displayed in | |
1066 | Figure \ref{FIG_CLUSTER:Xcorr}. | |
1067 | \\ | |
1068 | \\ | |
1069 | The representation of $dy=f(y_cen, x_drift| layer, \phi=\tan(\alpha_L))$ can be | |
1070 | also used to estimate the systematic shift in the $r-\phi$ coordinate resulting | |
1071 | from an imperfection in the cluster shape parameterization. From | |
1072 | Eq.~\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} | |
1077 | where 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} | |
1084 | The 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 | 1100 | The error of TRD cluster is represented by the variance in the $r-\phi$ and radial |
1101 | direction. 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 | 1106 | The 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 | ||
1117 | The 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 | ||
1132 | The last 2 contributions to cluster error can be estimated only during tracking | |
1133 | when the track angle is known ($\tan(p)$). For this reason the errors (and | |
1134 | optional position) of TRD clusters are recalculated during tracking and thus | |
1135 | clusters attached to tracks might differ from bare clusters. | |
1136 | ||
1137 | Taking into account all contributions one can write the the TRD cluster error | |
1138 | parameterization 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 | 1145 | From this formula one can deduce that the simplest calibration method for PRF and |
1146 | diffusion contributions is by measuring resolution at $B = 0$~T and $\phi = 0$. | |
1147 | To disentangle further the two remaining contributions one has to represent $s^2$ | |
1148 | as a function of drift length. | |
bb774328 | 1149 | |
ff89cbbd | 1150 | In 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 | 1154 | thus resulting the PRF contribution. For the case of the LUT model both contributions |
1155 | have to be determined from the fit (see {\tt AliTRDclusterResolution::ProcessCenterPad()} | |
1156 | for 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 | 1163 | If $\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 | 1167 | where we have explicitely marked the remaining term in case of absence of magnetic |
1168 | field. Thus one can use the previous equation to estimate $s_y$ for B~=~0 and than | |
1169 | by comparing in magnetic field conditions one can get the $s_x$. This is a simplified | |
1170 | method to determine the error parameterization for $s_x$ and $s_y$ as compared to the one | |
1171 | implemented in {\tt ProcessSigma()}. For more details on cluster error | |
1172 | parameterization 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 | ||
1179 | As the $r-\phi$ coordinate is the only one which is measured by the TRD detector we | |
1180 | have to rely on it to estimate both the radial ($x$) and $r-\phi$ ($y$) errors. This | |
1181 | method is based on the following assumptions. The measured error in the $y$ | |
1182 | direction is the sum of the intrinsic contribution of the $r-\phi$ measurement | |
1183 | with the contribution of the radial measurement - because $x$ is not a parameter of | |
1184 | Alice track model (Kalman). | |
500851ab | 1185 | \begin{equation} |
1186 | \sigma^{2}|_{y} = \sigma^{2}_{y*} + \sigma^{2}_{x*} | |
1187 | \end{equation} | |
1188 | In 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 | 1194 | where we have explicitely show the Lorentz angle correction on $y$ and the projection |
1195 | of 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 | |
1197 | terms, the drift and the misalignment ($x_0$). For ideal geometry or known misalignment | |
1198 | one 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} |
1204 | by 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} |
1208 | the 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} |
1214 | In Figure \ref{FIG_CLUSTER:shift} left, there is an example of such dependency. | |
1215 | ||
ff89cbbd | 1216 | The error parameterization obtained by this method are implemented in the functions |
1217 | {\tt AliTRD\-cluster::GetSX()} and {\tt AliTRDcluster::GetSYdrift()}. | |
500851ab | 1218 | |
ff89cbbd | 1219 | An independent method to determine $s_y$ as a function of drift length (see |
1220 | {\tt AliTRDcluster\-Resolution::ProcessCenterPad()}) is to plot cluster resolution as | |
1221 | a function of drift length at $\phi = \alpha_L$ as seen in | |
1222 | Eq.~\ref{EQ_CLUSTER:errorPhiAlpha}. Thus one can use directly the previous equation | |
1223 | to estimate $s_y$ for $B = 0$ and than by comparing in magnetic field conditions one | |
1224 | can get the $s_x$. | |
500851ab | 1225 | |
ff89cbbd | 1226 | One has to keep in mind that while the first method returns the mean $s_y$ over the |
1227 | distance to the middle of center pad ($y_{center}$) distribution the second method | |
1228 | returns the *STANDARD* value at $y_{center}=0$ (maximum). To recover the standard | |
1229 | value 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 | 1233 | with "$<s_y>$" being the value calculated in first method and "sigma" the width of |
1234 | the $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 | 1241 | In 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} | |
1245 | which 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 | 1250 | The 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{ | |
1258 | Cluster error parameterization for different components.} | |
1259 | \label{FIG_CLUSTER:errorCharge} | |
1260 | \end{figure} | |
0fa1a8ee | 1261 | The 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 | |
1269 | The 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} |
1274 | The first mode is the main tracking mode for all barrel tracks while the second | |
1275 | is used to peak-up track segments fully contained in the TRD fiducial volume | |
1276 | like conversions. Another feature of the TRD tracking besides the relative high | |
1277 | thickness (conversions) is the spatial correlation of the signals in the radial | |
1278 | direction due to residual tails in the cluster signals. This feature asked for | |
1279 | an intermediate step between clusters and tracks, the tracklets. The TRD | |
1280 | tracklets are linear fits of the clusters from one chamber. They are implemented | |
1281 | in the class {\tt AliTRDseedV1} and they represent the core of the TRD offline | |
1282 | reconstruction. In the following the tracklets will be described independently | |
1283 | of 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 | |
1286 | barrel (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 | 1293 | Projective algorithm to attach clusters to seeding tracks. The following steps are |
1294 | performed: | |
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} | |
1302 | Optionally one can use the $z$, $dz/dx$ information from the seeding track to | |
1303 | correct for tilting. | |
bb774328 | 1304 | |
ff89cbbd | 1305 | We start up by defining the track direction in the $xy$ plane and roads. The |
1306 | roads are calculated based on tracking information (variance in the $r-\phi$ | |
1307 | direction) and estimated variance of the standard clusters (see | |
1308 | {\tt AliTRDcluster::SetSigmaY2()}) corrected for tilt (see {\tt GetCovAt()}). | |
1309 | From this the road is: | |
bb774328 | 1310 | \begin{eqnarray} |
ff89cbbd | 1311 | r_{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 | 1313 | r_{z} &= &1.5*L_{pad} |
1314 | \end{eqnarray} | |
1315 | ||
1316 | \subsection[Tracklet fitting]{Tracklet fitting\footnote{The procedures described in this | |
ff89cbbd | 1317 | section 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 | 1324 | The fit is performed to estimate the $y$ position of the tracklet and the track |
757c05c1 | 1325 | angle in the bending plane. The clusters are represented in the chamber coordinate |
ff89cbbd | 1326 | system (with respect to the anode wire - see |
1327 | {\tt AliTRDtrackerV1::FollowBackProlongation()} on how this is set). The $x$ and $y$ | |
1328 | position 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 | |
1333 | track angle. | |
1334 | ||
1335 | Since errors are calculated only in the $y$ directions, radial errors ($x$ direction) | |
1336 | are mapped to $y$ by projection i.e. | |
1337 | \begin{equation} | |
ff89cbbd | 1338 | \sigma_{x|y} = \tan(\phi) \sigma_{x} |
757c05c1 | 1339 | \end{equation} |
ff89cbbd | 1340 | and also by the Lorentz angle correction. |
1341 | \\ | |
757c05c1 | 1342 | |
ff89cbbd | 1343 | \noindent |
1344 | {\bf Fit in the xz plane} | |
1345 | \\ | |
757c05c1 | 1346 | |
1347 | The "fit" is performed to estimate the radial position ($x$ direction) where pad | |
1348 | row cross happens. If no pad row crossing the $z$ position is taken from geometry | |
ff89cbbd | 1349 | and radial position is taken from the $xy$ fit (see below). |
757c05c1 | 1350 | |
1351 | There are two methods to estimate the radial position of the pad row cross:\\ | |
ff89cbbd | 1352 | 1. leading cluster radial position: Here the lower part of the tracklet is |
757c05c1 | 1353 | considered and the last cluster registered (at radial $x_{0}$) on this segment |
1354 | is 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} |
1358 | The 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 | 1362 | 2. charge fit over the crossing point: Here the full energy deposit along |
757c05c1 | 1363 | the tracklet is considered to estimate the position of the crossing by a fit |
ff89cbbd | 1364 | in 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 |
1366 | following 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 | 1376 | For pad row cross the radial position is taken from the $xz$ fit (see above). |
757c05c1 | 1377 | Otherwise it is taken as the interpolation point of the tracklet i.e. the |
1378 | point where the error in $y$ of the fit is minimum. The error in the $y$ | |
1379 | direction 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} | |
1383 | and thus the radial position is: | |
1384 | \begin{equation} | |
1385 | x = - 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 | ||
1392 | The error in $y$ direction is the error of the linear fit at the radial | |
1393 | position of the tracklet while in the $z$ direction is given by the cluster | |
1394 | error 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} |
1400 | For pad row cross the full error is calculated at the radial position of the | |
1401 | crossing (see above) and the error in $z$ by the width of the crossing region - | |
1402 | being a matter of parameterization. | |
1403 | \begin{equation} | |
ff89cbbd | 1404 | \sigma_{z} = \tan(\theta) \Delta x_{x_{0}}/\sqrt{12} |
757c05c1 | 1405 | \end{equation} |
1406 | In case of no tilt correction (default in the barrel tracking) the tilt is | |
1407 | taken 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 | 1411 | section are implemented in the function |
1412 | {\tt AliTRDseedV1::GetCovAt()}.}}\label{REC:Tracking:TrackletErrors} | |
757c05c1 | 1413 | |
500851ab | 1414 | In general, for the linear transformation |
757c05c1 | 1415 | \begin{equation} |
1416 | Y = T_{x} X^{T} | |
1417 | \end{equation} | |
500851ab | 1418 | the error propagation has the general form |
757c05c1 | 1419 | \begin{equation} |
1420 | C_{Y} = T_{x} C_{X} T_{x}^{T} | |
1421 | \end{equation} | |
1422 | We apply this formula 2 times. First to calculate the covariance of the tracklet | |
1423 | at point $x$ we consider: | |
1424 | \begin{eqnarray} | |
1425 | T_{x} &=& (1\; x)\\ | |
1426 | X&=&(y0\; dy/dx)\\ | |
1427 | C_{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} | |
1433 | and secondly to take into account the tilt angle | |
1434 | \begin{eqnarray} | |
1435 | T_{\alpha}& = & | |
1436 | \left( \begin{array}{cc} | |
1437 | cos(\alpha)&sin(\alpha)\\ | |
1438 | -sin(\alpha)& cos(\alpha) | |
1439 | \end{array} \right)\\ | |
1440 | X&=&(y\; z)\\ | |
1441 | C_{X}&=& | |
1442 | \left( \begin{array}{cc} | |
1443 | Var(y) &0\\ | |
1444 | 0 &Var(z) | |
1445 | \end{array} \right) | |
1446 | \end{eqnarray} | |
0fa1a8ee | 1447 | using simple trigonometric one can write for this last case |
757c05c1 | 1448 | \begin{equation} |
ff89cbbd | 1449 | C_{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 | 1457 | which can be approximated for small alphas (2 deg) with |
757c05c1 | 1458 | \begin{equation} |
1459 | C_{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} | |
1465 | before applying the tilt rotation we also apply systematic uncertainties | |
1466 | to the tracklet position which can be tuned from outside via the | |
1467 | {\tt AliTRDrecoParam::SetSysCovMatrix()}. They might account for extra | |
1468 | misalignment/miscalibration uncertainties. | |
1469 | ||
ff89cbbd | 1470 | \subsection[Tracklet dE/dx]{Energy loss calculations\footnote{The procedures |
1471 | described in this section are implemented in the function | |
1472 | {\tt AliTRDseedV1::CookdEdx()} and | |
1473 | {\tt AliTRDseedV1::GetdQdl()}.}}\label{REC:Tracking:TrackletdEdx} | |
500851ab | 1474 | |
1475 | Using the linear approximation of the track inside one TRD chamber (TRD tracklet) | |
1476 | the 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 | 1481 | where $q_c$ is the total charge collected in the current time bin and $dx$ is the length |
1482 | of the time bin (see Fig.~\ref{FIG_TRACKLET:dEdx} right). The representation of charge | |
1483 | deposit 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 | 1490 | Energy loss measurement on the tracklet as a function of drift time [left] and |
1491 | respectively drift length [right] for different particle species.} | |
500851ab | 1492 | \label{FIG_TRACKLET:dEdx} |
6ec1bbe7 | 1493 | \end{figure} |
ff89cbbd | 1494 | The 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} | |
1499 | Due to the anisochronity of the TRD detector drift velocity varies as function of | |
1500 | drift length and distance to the anode wire. Thus | |
500851ab | 1501 | \begin{eqnarray} |
1502 | dx(x) &=& dx(\inf) + \delta_x(x,z)\\ | |
1503 | &=& dt*v_d^{\inf} + \delta_x(x,z) | |
1504 | \end{eqnarray} | |
ff89cbbd | 1505 | the 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 |
1508 | in this section are implemented in the function {\tt AliTRDtrackV1::CookPID()} and | |
1509 | {\tt AliTRDseedV1::CookPID()}.}}\label{REC:Tracking:TrackletPID} | |
6ec1bbe7 | 1510 | |
ff89cbbd | 1511 | Retrieve the PID probabilities for $e^\pm$, $\mu^\pm$, $K^\pm$, $\pi^\pm$ and $p^\pm$ |
1512 | from 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} | |
1519 | According to the steering settings specified in the reconstruction one of the | |
1520 | following 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 | 1530 | Pion efficiency capability of the TRD for tracks with 6 tracklets as a function of |
1531 | momentum [left] and the corresponding threshold value for selecting $90\%$ of | |
1532 | electrons [right] for the two methods used.} | |
6ec1bbe7 | 1533 | \label{FIG_TRACK:PID} |
1534 | \end{figure} | |
1535 | ||
ff89cbbd | 1536 | At track level the PID information is calculated by delegating the function of |
1537 | the tracklets. The number of tracklets used is also computed. The tracklet | |
1538 | information are considered independent. For the moment no global track measurement | |
1539 | of PID is performed as for example to estimate bremsstrahlung probability based on | |
1540 | global $\chi^2$ of the track. The status bit {\tt AliESDtrack::kTRDpid} is set | |
1541 | during the call of {\tt AliTRDtrackV1::UpdateESDtrack()}. The PID performance of | |
1542 | the 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 | ||
1549 | The tracking procedures in TRD are responsible to attach clusters to tracks | |
1550 | and to estimate/update the track parameters accordingly. The main class involved | |
1551 | in 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 | 1557 | procedures described in this section are implemented in the function |
1558 | {\tt AliTRDtrackerV1::PropagateBack()}.}}\label{REC:Tracking:Propagate} | |
1559 | ||
ff89cbbd | 1560 | Propagate the ESD tracks from TPC to TOF detectors and building of the TRD track. For |
1561 | building a TRD track an ESD track is used as seed. The informations obtained on the TRD | |
1562 | track (measured points, covariance, PID, etc.) are than used to update the corresponding | |
1563 | ESD track. Each track seed is first propagated to the geometrical limit of the TRD | |
1564 | detector. Its prolongation is searched in the TRD and if corresponding clusters are found | |
1565 | tracklets are constructed out of them (see {\tt AliTRDseedV1::AttachClusters()}) and the | |
1566 | track is updated. Otherwise the ESD track is left unchanged. | |
6ec1bbe7 | 1567 | |
1568 | The 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 |
1593 | described in this section are implemented in the function | |
ff89cbbd | 1594 | {\tt AliTRDtrackerV1::FollowBackProlongation()}.} |
1595 | \\ | |
757c05c1 | 1596 | |
6ec1bbe7 | 1597 | Starting from the arbitrary radial position of the track this is |
1598 | extrapolated through the 6 TRD layers. The following steps | |
1599 | are 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 | 1617 | During the propagation a bit map is filled detailing the status of the track in |
1618 | each 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 | 1630 | By 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 | 1633 | described in this section are implemented in the function |
1634 | {\tt AliTRDtrackerV1::Clusters2TracksStack()}.}}\label{REC:Tracking:Clusters2TracksStack} | |
1635 | ||
ff89cbbd | 1636 | Seeding tracklets and build candidate TRD tracks. The procedure is used during |
1637 | barrel tracking to account for tracks which are either missed by TPC prolongation | |
1638 | or are conversions inside the TRD volume. For stand alone tracking the procedure | |
1639 | is 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 |
1644 | are implemented in the function {\tt AliTRDtrackerV1::MakeSeeds()}.} | |
ff89cbbd | 1645 | \\ |
6ec1bbe7 | 1646 | |
1647 | The 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} | |
1757 | A local database with default parameters can be found in the AliRoot | |
1758 | installation directory. The official database is in Alien under the | |
1759 | directory | |
1760 | {\tt /alice/data/$\langle$year$\rangle$/$\langle$LHCPeriod$\rangle$/OCDB}. | |
1761 | The calibration objects are stored in root files named according to their | |
1762 | run validity range, their version and subversion number. For the TRD they | |
1763 | are in the subdirectory {\tt \$AliRoot/OCDB/TRD/Calib} and correspond to | |
1764 | a 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 | % | |
1798 | They 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} | |
1806 | To save disk space the values per pad are stored in UShort (2 Bytes) | |
1807 | format in AliTRDCalROC objects, one per chamber, that are members of | |
1808 | a general {\tt AliTRDCalPad} object. The final constants have a | |
1809 | numerical precision of 10$^{-4}$. They are computed by | |
1810 | multiplication (gain, drift velocity and noise) or addition (timeoffset) | |
1811 | of the detector and pad coefficients. From the pad noise level a status | |
1812 | is determined for each pad ( masked, bridgedleft, bridgedright, read by | |
1813 | the second MCM, not connected). One example macro ({\tt AliTRDCreate.C}) | |
1814 | to produce a local database is given in the {\tt \$AliRoot/TRD/Macros} | |
1815 | directory.\\ | |
1816 | During the simulation of the detector response and the reconstruction | |
1817 | of the events the parameters are used to compute the amplitude of the | |
1818 | signal and its position inside the detector. The database has to be | |
1819 | first choosen with the help of the {\tt AliCDBManager}. The parameters | |
1820 | are then called by an {\tt AliTRDcalibDB} instance. The macro | |
1821 | {\tt \$AliRoot/TRD/Macros/ReadCDD.C} shows how to read a local database | |
1822 | and plot the gas gain or drift velocity as function of the detector | |
1823 | number or pad number. | |
1824 | % | |
1825 | \section{DAQ Calibration} | |
1826 | Calibration procedures are performed online during data-taking on | |
1827 | different systems. The principal role of the Data AcQuisition System is | |
1828 | to build the events and archive the data to permanent storage tapes. In | |
1829 | addition it also provides an efficient access to the data. Nevertheless | |
1830 | the complete reconstruction of the events with tracks is not available. | |
1831 | Two algorithms are executed on DAQ for the TRD: a pedestal algorithm and | |
1832 | an algorithm for the drift velocity and timeoffset. They are implemented | |
1833 | as rpm packages, that can be easily built inside AliRoot compiled with | |
1834 | the DATE software \cite{DATE}. The outputs of the algorithms are stored | |
1835 | in root files and put on the DAQ File Exchange Server (FXS). At the end | |
1836 | of the run they are picked up by the so called SHUTTLE and further | |
1837 | processed 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 | |
1841 | detector 0 (SM 0, S0, L0) with the ADC value distributions around | |
1842 | the baseline (10 ADC counts) for each pad (PEDESTAL run 34510).} | |
1843 | \end{figure} | |
1844 | \subsection{Pedestal algorithm} | |
1845 | During a pedestal run empty events without zero suppression are taken | |
1846 | with the TRD alone and a random trigger. They are used to determine | |
1847 | the 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 | |
1849 | executed on the Local Data Concentrators (LDCs), which are part of the | |
1850 | dataflow and gives access to sub-events. The TRD has three LDCs | |
1851 | corresponding 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} | |
1857 | Three algorithms are therefore executed in parallel during a PEDESTAL | |
1858 | run for a full installed TRD. After about 100 events, the data-taking | |
1859 | stops automatically and a 2D histogram is filled for each chamber with | |
1860 | the ADC amplitude distributions around the baseline for each pad. Such | |
1861 | a histogram is shown in Fig.\ref{baselinenoisedet0run34510ex} for | |
1862 | chamber 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 | |
1866 | SM 0 (PEDESTAL run 38125). The five stacks in each layer are in | |
1867 | the {\it{z}} direction.} | |
1868 | \end{figure} | |
1869 | The chambers should be so configured that the data is without zero | |
1870 | suppression otherwise an error message appears on the DAQ online | |
1871 | Logbook. The container class is called {\tt AliTRDCalibPadStatus} | |
1872 | and allows to further fit the distributions with a Gaussian to | |
1873 | determine the baseline and noise of each pad. The function is called | |
1874 | {\tt AliTRDCalibPadStatus::AnalyseHisto()}. In | |
1875 | Fig.\ref{run38125sm0nounfold} the noise in SM 0 is plotted for the | |
1876 | PEDESTAL run 38125. It shows stripe patterns of higher noise in the | |
1877 | $z$-direction (beam direction) correlated to the static pad capacitance | |
1878 | of the pad plane. The noise distributions has to be first corrected | |
1879 | for the expected noise variations induced by the pad capacitance | |
1880 | before a status can be given to each pad. This is not done on the DAQ | |
1881 | but just before storing the parameters inside the Offline Condition | |
1882 | Database (OCDB) in the Preprocessor. | |
1883 | ||
1884 | \subsection{Drift velocity and timeoffset algorithm} | |
1885 | The 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. | |
1888 | It is executed on a dedicated monitoring server, which is not part | |
1889 | of the dataflow and gives access to full events of the TRD. The | |
1890 | physics events are used to fill continuously during data-taking an | |
1891 | average pulse height for each detector. They are stored in a | |
1892 | {\tt TProfile2D}, which is a member of a { \tt AliTRDCalibraFillHisto} | |
1893 | object. The {\tt TProfile2D} is written at the end of the run in a | |
1894 | root 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 | |
1898 | pulse height distributions of each calibration group (here detector), | |
1899 | produced with decalibrated simulated $pp$ events.} | |
1900 | \end{figure} | |
1901 | ||
1902 | Fig.\ref{referenceph2d} shows an output {\tt TProfile2D} obtained | |
1903 | from simulated decalibrated $pp$ collisions at 14\,TeV. The first | |
1904 | peak in time corresponds to the amplification region, where the | |
1905 | contributions of ionization electrons, which come from both sides | |
1906 | of the anode wire plane, are overlapping. The flat plateau results | |
1907 | from the electrons in the drift region. The tail is caused by the | |
1908 | Time Response Function. From this average signal as function of time | |
1909 | the drift velocity and timeoffset can be extracted by fit procedures. | |
1910 | This last step is performed in the Preprocessor.\\ | |
1911 | Since no tracking is available on DAQ, a simple tracklet finder is | |
1912 | used. It was optimized for a low charged particle multiplicity | |
1913 | environment. The algorithm looks for a maximum of the signal | |
1914 | amplitudes in the chamber after integration over all timebins. The | |
1915 | average pulse height is then filled for a spot of two pad rows | |
1916 | ($z$ direction) and four pad columns ($r\phi$ direction) around the | |
1917 | maximum. Further details can be found in the function | |
1918 | {\tt AliTRDCalibraFillHisto::ProcessEventDAQ}. | |
1919 | % | |
1920 | \section{HLT Calibration} | |
1921 | The High Level Trigger has the big advantage to provide an online | |
1922 | reconstruction of the events. The idea is then to run the calibration | |
1923 | procedures in a transparent way, independent whether online or | |
1924 | offline. The same function | |
1925 | \\{\tt AliTRDCalibraFillHisto::UpdateHistogramsV1(AliTRDtrackV1 *t)} | |
1926 | is used to fill the $dE/dx$ distributions (gain), the average pulse | |
1927 | height (drift velocity and timeoffset) and the Pad Response Function | |
1928 | for each detector in respectively one {\tt TH2I} and two | |
1929 | {\tt TProfile2Ds}. The calibration is nevertheless done per chamber, | |
1930 | whereas by integrating statistics it will be possible to get the gain, | |
1931 | drift velocity and timeoffset distributions inside the chambers offline. | |
1932 | Therefore the class {\tt AliTRDCalibraFillHisto} contains a flag | |
1933 | ({\tt fIsHLT}) to avoid extra calculations not needed at the detector | |
1934 | level.\\ | |
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 | |
1939 | with decalibrated simulated $pp$ events.} | |
1940 | \end{figure} | |
1941 | ||
1942 | Fig.\ref{referencech2d} shows one example of a {\tt TH2I} histogram, | |
1943 | where the $dE/dx$ distributions of each detector is stored for $pp$ | |
1944 | collisions at 14\,TeV. No minimal $p_{T}$ cut was applied on the | |
1945 | TRD tracks. Assuming that the charged particles are uniformy | |
1946 | distributed over the TRD chambers, the position of the Most Probable | |
1947 | Value of the $dE/dx$ distribution is used to calibrate the gain.\\ | |
1948 | At the beginning of each run, a local copy of the OCDB is updated | |
1949 | on the HLT cluster: the HCDB (HLT Condition Database). The last set | |
1950 | of calibration objects are used to reconstruct the events. The gain | |
1951 | correction preformed during the tracking has to be taken into account | |
1952 | when filling the $dE/dx$ distributions. That is why the calibration | |
1953 | algorithm has to know which database was used during the | |
1954 | reconstruction. The TRD HLT code can be found in the {\tt HLT/TRD} | |
1955 | subdirectory of the AliRoot installation. The calibration is | |
1956 | implemented as an {\tt AliHLTTRDCalibrationComponent}, whose members | |
1957 | are an {\tt AliCDBManager} together with the path for the current | |
1958 | database used, and an {\tt AliTRDCalibraFillHisto} object. The main | |
1959 | functions 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 | |
1964 | the function\\ | |
1965 | {\tt AliTRDCalibraFillHisto::UpdateHistogramsV1(AliTRDtrackV1 *t)} | |
1966 | is called to fill the histograms. | |
1967 | \item {\tt AliHLTCalibrationComponent::FormOutput}, which returns | |
1968 | a {\tt TObjArray} with the histograms. | |
1969 | \end{itemize} | |
1970 | The histograms are shipped at the end of each run to the HLT File | |
1971 | Exchange Server to be picked up by the SHUTTLE and further processed | |
1972 | by the Preprocessor, exactly as the data from the calibration on DAQ. | |
1973 | % | |
1974 | \section{Preprocessor} | |
1975 | % | |
1976 | The online systems, like the Detector Control System (DCS), the DAQ | |
1977 | and the HLT, are protected from outside by a firewall. A special | |
1978 | framework, called the SHUTTLE, has been developped to retrieve offline | |
1979 | data in the online systems or store relevant information from the | |
1980 | online systems in the OCDB. The SHUTTLE has access to the DCS, DAQ | |
1981 | and HLT FXS. At the end of each run the reference data, outputs of | |
1982 | the calibration algorithms on DAQ and HLT, are retrieved and further | |
1983 | processed to determine the calibration constants (gain, drift velocity, | |
1984 | timeoffset and width of the Pad Response Function). The reference | |
1985 | data are finally stored in the Grid reference Data Base, whereas the | |
1986 | results of the fit procedures are stored in the OCDB.\\ | |
1987 | The code is contained in the {\tt AliTRDPreprocessor} class. The | |
1988 | Process function is executed for the run types: PEDESTAL, STANDALONE, | |
1989 | DAQ and PHYSICS. | |
1990 | \begin{itemize} | |
1991 | \item The PEDESTAL run are dedicated to the calibration of the noise | |
1992 | on DAQ. Only the output of the DAQ pedestal algorithm is retrieved at | |
1993 | the SHUTTLE. From the noise and baseline of each pad, a pad status is | |
1994 | determined. Disconnected pads are recognizable by a small noise. | |
1995 | Bridged pads have the same noise and baseline. The noise and | |
1996 | padstatus of the previous pedestal run in the OCDB are taken for half | |
1997 | chambers, which were not On. Finally the database entries | |
1998 | {\tt DetNoise}, {\tt PadNoise} and {\tt PadStatus} are populated in | |
1999 | the 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 | |
2002 | correlated noise. The data are taken with the TRD alone and a random | |
2003 | trigger. Only the DCS data are retrieved. | |
2004 | \item The DAQ run are test runs for the DAQ people. Only the DCS data | |
2005 | are retrieved. | |
2006 | \item The PHYSICS run are global runs including more than one detector | |
2007 | and different trigger clusters. They are used for the calibration of | |
2008 | the gain, driftvelocity and timeoffset, and width of the PRF. Therefore | |
2009 | the output of the calibration algorihms running on HLT are retrieved. | |
2010 | If the procedure is not successful the output of the | |
2011 | driftvelocity$/$timeoffset algorithm on DAQ is also retrieved. The | |
2012 | reference data, the histograms, are fitted using an | |
2013 | {\tt ALiTRDCalibraFit} instance: | |
2014 | \begin{itemize} | |
2015 | \item {\tt AliTRDCalibraFit::AnalyseCH(const TH2I *ch)} determines | |
2016 | the MPVs of the $dE/dx$ distributions and compares them to a reference | |
2017 | value. | |
2018 | \item {\tt AliTRDCalibraFit::AnalysePH(const TProfile2D *ph)} fits | |
2019 | the average pulse height and determines the position of the amplification | |
2020 | region peak and the end of the drift region for each chamber. Knowing | |
2021 | the length of the drift region one can deduce the drift velocity. The | |
2022 | amplification peak gives also information on the timeoffset. | |
2023 | \item {\tt AliTRDCalibraFit::AnalysePRFMarianFit(const TProfile2D *prf)} | |
2024 | determines the spread of the clusters as function of azimuthal angle of | |
2025 | the track. The minimum gives the width of the PRF. | |
2026 | \end{itemize} | |
2027 | The results of each fit procedure are stored in a {\tt TObjArray} of | |
2028 | \\{\tt AliTRDCalibraFit::AliTRDFitInfo} objects, one per chamber, which | |
2029 | is a member of the {\tt AliTRDCalibraFit} instance. The functions | |
2030 | {\tt AliTRDCalibratFit::CreateDetObject*} and {\tt ::CreatePadObject*} | |
2031 | allow to create from the {\tt TObjArray} the final calibration objects, | |
2032 | that have to be put in the OCDB. | |
2033 | \end{itemize} | |
2034 | Tab.\ref{taskruntype} summarizes the tasks executed by the prepocessor | |
2035 | for 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 | |
2049 | for every run type.} | |
2050 | \end{center} | |
2051 | \end{table} | |
2052 | The DCS data points are measurements of the currents, voltages, | |
2053 | temperatures and other variables of the chambers as function of time. | |
2054 | They are saved in the DCS Archive DB during the run and made available | |
2055 | at the SHUTTLE by AMANDA. | |
2056 | % | |
2057 | \section{Offline Calibration} | |
2058 | The offline calibration of the gain, driftvelocity$/$timeoffset and | |
2059 | width of the PRF is meant to improve the first calibration online. | |
2060 | It follows the following steps: | |
2061 | \begin{itemize} | |
2062 | \item Fill reference data (the $dE/dx$ distributions, the average | |
2063 | pulse 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 | |
2067 | create the calibration objects. | |
2068 | \item Store the calibration objects according to their run validity in | |
2069 | the OCDB. | |
2070 | \end{itemize} | |
2071 | The calibration procedure is not performed per detector anymore but per | |
2072 | pad, at least for the first step, the filling of the reference data. | |
2073 | Depending on the available statics the reference data of different pads | |
2074 | (calibration groups) can be merged together to determine a mean | |
2075 | calibration coefficient over these pads. | |
2076 | \subsection{AliTRDCalibraVector container} | |
2077 | The high granularity of the calibration, with a total number of 1181952 | |
2078 | pads, implies that the size of the reference data has to be reduced to | |
2079 | the 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 | ||
2095 | The {\tt TH2I} and {\tt TProfile2D} objects are not a good option | |
2096 | anymore. Therefore a container class, {\tt AliTRDCalibraVector}, was | |
2097 | developped. The {\tt TH2I} corresponds to an array of UShort (2 Bytes) | |
2098 | for the number of entries in each bin, the {\tt TProfile2D} to an array | |
2099 | of UShort for the number of entries in each bin and two arrays of Float | |
2100 | for the sum of the weights and the sum of the squared weights in each | |
2101 | bin. The mean value and its error are computed per hand in the functions | |
2102 | {\tt AliTRDCalibraVector::UpdateVector*}, where the object is filled | |
2103 | with new data. The size of the {\tt AliTRDCalibraVector} object is | |
2104 | summarized in Tab.\ref{sizeofAliTRDCalibraVector}.\\ | |
2105 | % | |
2106 | \subsection{Additional method to calibrate the drift velocity} | |
2107 | In addition an other method is available for the calibration of the | |
2108 | drift velocity. It is based on the comparison of the slope of the TRD | |
2109 | tracklet in the azimuthal plane $xy$ with the $\phi$ angle of the | |
2110 | global track. It can be shown that the slope $dy/dt$ of a TRD tracklet | |
2111 | depends linearly on its global track parameters, | |
2112 | $\tan(\phi)+(dz/dx)\tan(\beta_{tilt})$ \cite{THESISR}. The slope | |
2113 | parameter is the drift velocity in the electric field direction, | |
2114 | whereas the constant gives the tangent of the Lorentz angle. If the | |
2115 | TRD tracklet crosses two different pads in the $z$ direction (the | |
2116 | beam direction), the relation is not true anymore. Therefore such | |
2117 | tracklets are rejected in the calibration procedure. The reference | |
2118 | data are a {\tt TObjArray} of one {\tt TH2F} histogram for each | |
2119 | detector.\\ | |
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 | |
2124 | in one chamber. The tracks crossing at least two pad rows are in | |
2125 | red crosses and those crossing one pad row in blue points.} | |
2126 | \end{figure} | |
2127 | ||
2128 | Fig.\ref{crossrow} shows one example of such a histogram. They are | |
2129 | filled in the function | |
2130 | \\{\tt AliTRDCalibraFillHisto: :UpdateHistogramsV1(AliTRDtrackV1 *t)}, | |
2131 | like the reference data for other calibration constants, if the | |
2132 | flag {\tt fLinearFitterDebugOn} is true.\\ | |
2133 | The 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 | |
2137 | for different runs. In a third step, the {\tt TH2F} histograms are | |
2138 | fitted in the function \\{\tt AliTRDCalibraVdriftLinearFit::FillPEArray}. | |
2139 | The result parameters are members of the | |
2140 | {\tt AliTRDCalibraVdriftLinearFit} object, as well as their error | |
2141 | coming 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 | |
2145 | angle is computed from the fit parameters and stored together with | |
2146 | the drift velocity in a {\tt TObjArray}, member of the | |
2147 | {\tt AliTRDCalibraFit} instance. As for the other calibration | |
2148 | constants the functions {\tt AliTRDCalibratFit::CreateDetObject*} | |
2149 | and {\tt ::CreatePadObject*} allows to create the final calibration | |
2150 | objects, that have to be put in the OCDB. Since the Lorentz angle | |
2151 | is not a OCDB entries, it is only used for debugging. | |
2152 | % | |
2153 | \subsection{The calibration AliAnalysisTask} | |
2154 | The reference data of the calibration are filled in an AliAnalysisTask | |
2155 | during the reconstruction or after the reconstruction. Since it needs | |
2156 | some informations only stored in the AliESDfriends, they have to be | |
2157 | written if one wants to run the calibration. This will be the case | |
2158 | only for TRD track above a given $p_{T}$ since the size of the events | |
2159 | is 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 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |