1 \chapter*{Introduction}
2 \section*{Purpose of this document}
4 This document is intended to both explain who to use the ALICE simulation and
5 reconstruction code with respect to or using the ITS detector as the
6 examples. This document is also to explain how to add new code to the ITS
7 simulation and reconstruction library, and who the existing ITS simulation and
8 reconstruction code works. All comments from every user is greatly encouraged.
10 \section*{How to Run AliRoot}
12 At this point, we will assume that AliRoot has been compiled and all the
13 necessary environment variables have been defined, including your path. We will
14 assume you are in an appropriate directory, for example \texttt{/data} or some
17 to start with type, at your shell prompt, aliroot to start the program.
22 Constant Field Map1 created: map= 1, factor= 1.000000
23 *******************************************
25 * W E L C O M E to R O O T *
27 * Version 2.26/00 10 November 2000 *
29 * You are welcome to visit our Web site *
30 * http://root.cern.ch *
32 *******************************************
34 FreeType Engine v1.x used to render TrueType fonts.
35 Compiled with thread support.
37 CINT/ROOT C/C++ Interpreter version 5.14.58, Oct 24 2000
38 Type ? for help. Commands must be C++ statements.
39 Enclose multiple statements between { }.
47 This will initialize ROOT and load all of the ALICE libraries. At this point
48 you can do anything you can do in ROOT in addition you have access to every
49 class defined in the ALICE libraries, including the ALICE global variables. One
50 very useful ALICE global variable is \texttt{gAlice} which is of type
51 \texttt{AliRun}. Of the many function defined in the class \texttt{AliRun} are
52 \texttt{Init(const char* setup="Config.C")} and
53 \texttt{Run(const char* setup="Config.C")}. \texttt{Run} both executes
54 \texttt{Init} and starts executing an ALICE detector simulation. Both of these
55 functions functions load and execute a configuration file. By default this
56 configuration file is called \texttt{Config.C}. If such a file exists in your
57 local directory, for example \texttt{/data}, or if there is no such file in
58 your local directory it will execute the file
59 \texttt{\$ALICE\_ROOT/macros/Config.C}. Some other configuration file can be
60 run simplely by entering that file's name as the argument, for example
61 \texttt{Init("MyConfig.C")} or \texttt{Run("MyConfig.C")} where
62 \texttt{MyConfig.C} is either in your local directory (\texttt{/data}) or in
63 \texttt{\$ALICE\_ROOT/macros}. Of course the full path of \texttt{MyConfig.C}
66 Now lets assume you just want to simulate one event using the standard
67 \texttt{Config.C} file. This is done simply as
70 root [0] gAlice->Run()
71 Warning in <AliRun::SetField>: Invalid magnetic field flag: -999; Helix trackin
74 Warning in <AliFRAMEv1::ReadEuclidMedia>: file: $(ALICE_ROOT)/Euclid/frame.tme i
77 Warning in <AliPIPEv0::ReadEuclidMedia>: file: $(ALICE_ROOT)/Euclid/pipe.tme is
80 Warning in <AliITSv5::ReadEuclidMedia>: file: /home/CERN/aliroot/dev/Euclid/ITSg
81 eometry_5.tme is now read in
84 MZSTOR. ZEBRA table base TAB(0) in /MZCC/ at adr 281557647 10C83A8F HEX
86 MZSTOR. Initialize Store 0 in /GCBANK/
87 with Store/Table at absolute adrs 33632021 281557647
90 relative adrs -247926182 0
91 with 1 Str. in 2 Links in 5300 Low words in 2999970 words.
92 This store has a fence of 16 words.
101 TOC1 0.171%; TSSW 0.001%; TSWC 0.083%; TSCE 0.000%; TWES 0.001%;
102 TSWB 0.009%; TPEL 2.240%; TPMW 0.901%; TPEW 0.128%; TESR 0.000%;
103 TESB 0.116%; TPLS 0.019%; TPUS 0.023%; TPSS 0.000%; THVM 0.012%;
104 TPSR 0.052%; THVL 0.025%; FLTA 0.003%; FLTB 0.000%; FLTC 0.005%;
105 FMYA 0.016%; FMYB 0.014%; FMYC 0.019%; FPLA 0.023%; FPLB 0.080%;
106 FPLC 0.025%; FSTR 0.138%; FNSF 0.012%; FMYX 0.002%; FGRL 0.004%;
107 FPAD 0.020%; FPEA 0.039%; FPEB 0.007%; FPEC 0.062%; FECA 0.058%;
108 FECB 0.058%; FECC 0.053%; FWAA 0.096%; FWAB 0.148%; FWAC 0.073%;
109 FBPA 0.057%; FBPB 0.018%; FBPC 0.085%; UAFI 0.109%; UAFM 0.018%;
110 UAFO 0.044%; UAII 0.001%; UAIM 0.001%; UAIO 0.001%; UCFI 0.259%;
111 UCFM 0.445%; UCFO 0.312%; UCII 0.000%; UCIM 0.000%; UCIO 0.000%;
112 UL01 0.022%; UL02 0.006%; UL03 0.226%; UL04 0.006%; UL05 0.012%;
113 UL06 0.001%; UL07 0.002%; UL08 0.081%; UL09 0.034%; UL10 0.038%;
114 UL11 0.013%; TRD1 0.003%; TRD2 0.004%; TRD3 0.000%; BR2_ 0.018%;
115 CB2_ 0.011%; R1R2 0.018%; R2R2 0.898%; R3R2 0.003%; R3L2 0.001%;
116 R1R1 0.414%; R2R1 0.010%; R3R1 0.009%; R1L1 0.036%; R3L1 0.001%;
117 CA02 0.016%; CG02 0.000%; CA03 0.042%; CG03 0.000%; EMCA 0.013%;
118 PTXW 0.013%; PUFP 0.005%; PTCB 0.008%; PPAP 0.005%; PXTL 0.072%;
119 PASP 0.026%; MPPS 0.004%; UAPP 0.000%; LCPP 0.037%; DW11 0.000%;
120 DV11 0.000%; DPPB 0.659%; DPFE 0.157%; DPMD 0.000%; DIQU 0.016%;
121 ***************************************************************************
126 At this point a file called \texttt{galice.root} is created in your present
127 directory. This file contains all of the ``hits'' produced by the simulation,
128 all of the particle information, all of the detectors that were defined in the
129 simulation, and a lot of other information.
131 One nice thing to do now is to run the hit display program so that you can see
132 the hits you have just produce in the file \texttt{galice.root}. Either from
133 your present \texttt{aliroot} session, a new \texttt{aliroot} session, or
134 from a new \texttt{root} session, you can run the standard macro
135 \texttt{display.C}. Because you should have \texttt{\$ALICE\_ROOT/macros} in
136 your path, this is easily done as follows.
140 root [1] .x display.C
144 You should see the following screen appear (Figure~\ref{ITSMan:ch0:display0}).
146 \begin{figure*}[htbp]
149 \epsfig{file=display_Canvas.eps,width=12cm}
150 \caption{Typical ALICE hit display output. Note that the geometry being
151 displayed is a simplified geometry, not that used by the AliRoot
153 \label{ITSMan:ch0:display0}
157 Just like from \texttt{root}, to exit from \texttt{aliroot} just type
158 \texttt{.q} at the prompt.
166 For a more interactive way of running \texttt{AliRoot}, instead of typing
167 \texttt{root[0] gAlice->Run()} you can run a very nice macro called
168 \texttt{menu.C} also located in \texttt{\$ALICE\_ROOT/macros}. Instead of
169 running a simulation, it create a menu that that will let you either run an
170 \texttt{AliRoot} simulation or do a number of other nice things, see
171 figure~\ref{ITSMan:ch0:menu0}. Please note, that if you want to display any
172 pictures, first they can take a lot of time and memory, second you have to run
173 \texttt{Init} first so that the detectors you want to display are defined.
175 \begin{figure*}[htbp]
178 \epsfig{file=menubar.eps,width=5cm}
179 \caption{This shows a number of ``Automated'' commands that can be
180 performed. Simply by clicking on one of these buttons the action will take
181 place. The ``Trees'' refers to the tree of geometric objects that make up
182 the defined AliRoot geometry as defined in \texttt{Config.C}. The
183 ``Pictures'' refer to pictures of the Alice geometry as defined in
184 \texttt{Config.C}. Since these are the detailed pictures they may require a
185 lot of time and memory to execute. ``Hide'', ``Shading'', and ``Box Clip''
186 refer to how the pictures will be displayed. ``Run Lego'' will produce a
187 radiation map of different parts of the defined Alice detector by creating
188 and transporting Geantinos~\cite{GeantMan:Geantino}, a non-interacting
189 particle used only to measure radiation length between points along it's
191 \label{ITSMan:ch0:menu0}
195 \section*{Controling your Run: The Config.C file}
197 There are basicly two files that control nearly every aspect of an
198 \texttt{AliRoot} simulations. The first and most important is the file
199 \texttt{\$ALICE\_ROOT/macros/Config.C}. This file will be described in more
200 detail below. The second file \texttt{\$ALICE\_ROOT/data/galice.cuts} sets the
201 non-default energy cuts for a large numbers of materials. For the ITS, Every
202 material has energy-loss via delta rays turned on. For each sensitive material
203 the lowest energy $\gamma$, $e^{\pm}$, bremsstrahlung, and $\delta$-ray have
204 their lowest energy set to $7.0\times 10^{-5}$ GeV or $70$ KeV. This is done to
205 assure that low enough energy $\delta$-rays are properly taken into account for
206 the signals produce in each detector.
208 The \texttt{Config.C} file\footnotemark determines just about every thing there
209 is to about how \texttt{AliRoot} will run. Lets take a look at the first part
212 \footnotetext{The name of the file isn't important. It can be specified either
213 as an argument to \texttt{gAlice->Run(``Another\_Config.C'')} or as an
214 argument to \texttt{gAlice->Init(``Another\_Config.C'')}. The default file
215 name is \texttt{Config.C} and is first looked for in your present directory and
216 if no such file is found then it uses the one in
217 \texttt{\$ALICE\_ROOT/macros}. }
224 0004 new AliGeant3("C++ Interface to Geant3");
226 0006 //=======================================================================
227 0007 // Create the output file
229 0009 TFile *rootfile = new TFile("galice.root","recreate");
230 0010 rootfile->SetCompressionLevel(2);
231 0011 TGeant3 *geant3 = (TGeant3*)gMC;
235 This file is a \texttt{C++} macro/program. The first line gives the routine
236 name which must be \texttt{Config()}. Line \texttt{0004} Creates the
237 \texttt{AliRoot} interface class to GEANT 3.12. Line \texttt{0009} creates the
238 root output file and its pointer \texttt{rootfile}. Line \texttt{0010} sets the
239 level of compression to be used in writing this file. Level 2 is a lot of
240 compression, level 0 is no compression\footnote{see \texttt{TFile} in the
241 \texttt{ROOT} documentation for a full description.}. Line \texttt{0011}
242 retrieves the basic transport Monte Carlo that was set at line
243 \texttt{0004}. Since this is GEANT3.21 this pointer is cast as
244 \texttt{TGeant3}. This will allow us to set and modify the simulation according
250 0013 // Set External decayer
251 0014 AliDecayer* decayer = new AliDecayerPythia();
252 0015 decayer->SetForceDecay(all);
253 0016 decayer->Init();
254 0017 gMC->SetExternalDecayer(decayer);
258 In this next section of the file, the default operation of GEANT 3.21 is
259 modified by replacing the particle decay mechanism with that of Pythia. This
260 has the advantage of treating all particle decays in the same way but also make
261 it easier to determine the parent particles from their decayed products. Line
262 \texttt{0014} creates the Pythia decay routines, \texttt{0015} sets a flag
263 in Pythia to decay all particles, and \texttt{0016} initiates the Pythia
264 package. Line \texttt{0017} replaces the default decay routine in the Monte
265 Carlo (GEANT 3.12 in this case) with that of Pythia. Next we set some flags
266 that are specific to GEANT 3.21.
271 0019 //=======================================================================
272 0020 // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
273 0021 geant3->SetTRIG(1); //Number of events to be processed
274 0022 geant3->SetSWIT(4,10);
275 0023 geant3->SetDEBU(0,0,1);
276 0024 //geant3->SetSWIT(2,2);
277 0025 geant3->SetDCAY(1);
278 0026 geant3->SetPAIR(1);
279 0027 geant3->SetCOMP(1);
280 0028 geant3->SetPHOT(1);
281 0029 geant3->SetPFIS(0);
282 0030 geant3->SetDRAY(0);
283 0031 geant3->SetANNI(1);
284 0032 geant3->SetBREM(1);
285 0033 geant3->SetMUNU(1);
286 0034 geant3->SetCKOV(1);
287 0035 geant3->SetHADR(1); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
288 0036 geant3->SetLOSS(2);
289 0037 geant3->SetMULS(1);
290 0038 geant3->SetRAYL(1);
291 0039 geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AU TO 0)
292 0040 geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks
293 0041 geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
294 0042 geant3->SetERAN(5.e-7);
296 0044 Float_t cut = 1.e-3; // 1MeV cut by default
297 0045 Float_t tofmax = 1.e10;
298 0046 // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
299 0047 geant3->SetCUTS(cut,cut, cut, cut, cut, cut, cut, cut, cut, cut, tofmax);
303 In lines \texttt{0021} through \texttt{0042} set different GEANT 3.21 specific
304 options and flags. I will not describe all of these, but will refer you to the
305 GEANT 3.21 manual. There are a few of possible interest. Line
306 \texttt{0021 geant3->SetTRIG(1);} sets the number of events that will be
307 processed. The default is one. Line \texttt{0022 geant3->SetSWIT(4,10);} sets
308 how often a line like
309 \texttt{GTREVE\_ROOT : Transporting primary track No 74130} will be
310 displayed. Here the 10 means every 10 primary tracks. Most of the rest turn on
311 or off different physics processes. These values apply to every material that
312 isn't listed in \texttt{\$ALICE\_ROOT/data/galice.cuts} or if that material has
313 its corresponding flag or value set to -1. Similarly line \texttt{0047} sets
314 the default lowest energy, largest time of flight, for different physics
315 processes that are not overwritten by the values in the \texttt{galice.cuts}
321 0049 //=======================================================================
322 0050 // ************* STEERING parameters FOR ALICE SIMULATION **************
323 0051 // --- Specify event type to be tracked through the ALICE setup
324 0052 // --- All positions are in cm, angles in degrees, and P and E in GeV
325 0053 AliGenHIJINGpara *gener = new AliGenHIJINGpara(84210);
326 0054 gener->SetMomentumRange(0,999);
327 0055 gener->SetPhiRange(0,360);
328 0056 gener->SetThetaRange(0.28,179.72);
329 0057 gener->SetOrigin(0,0,0); //vertex position
330 0058 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
333 0061 // Activate this line if you want the vertex smearing to happen
334 0062 // track by track
336 0064 //gener->SetVertexSmear(perTrack);
338 0066 gAlice->SetField(-999,2); //Specify maximum magnetic field in Tesla (neg. ==> default field)
342 In lines \texttt{0053} through \texttt{0059} setup the particle generator to be
343 used. Line \texttt{0053} defines the type of particle generator to be used. In
344 this case it will be the ALICE HIJING parameterized particle distribution.
345 This can be replace with many others~\footnote{See
346 \texttt{\$ALICE\_ROOT/macros/Config\_gener.C} for more examples.}. Its
347 parameter value $84210$ is the number of primary tracks that will be
348 generated. For simple testing this number it typically set to a value like
349 50. Lines \texttt{0054} through \texttt{0058} set different parameters for the
350 generator. Specifically line \texttt{0054 gener->SetMomentumRange(0,999);} set
351 the limits of the momentum range of the particles that will be generated. Line
352 \texttt{0055 gener->SetPhiRange(0,360);} sets the angular (degrees) range in
353 $\phi$ or around the barrel that the partials will be generated in. In this
354 case the full $\phi$ range will be used. The next line \texttt{0056
355 gener->SetThetaRanger(0.28,179.72);} sets the $\theta$ angular (degrees) range
356 for the primary tracks to be generated in. In this case $0.28^{\circ}$ to
357 $179.72^{\circ}$ covers the pseudorapidity range $-6.0\leq \eta \geq
358 +6.0$. With these values of $\theta$ and $\phi$, $84210$ primary tracks
359 represents about $8000$ primary particles in the central one unit of
360 pseudorapidity, the maximum track density that ALICE has been designed for.
362 Line \texttt{0057 gener->SetOrigin(0,0,0);} sets the central position of the
363 event origin. Line \texttt{0058 gener->SetSigma(0,0,0);} set the
364 $\sigma_{x,y,z}$ range over which multiple events will have their origins
365 distributed. The mean position being given by the \texttt{SetOrigin} command
366 above. It is also possible in one event, to distribute each primary track over
367 a region who's mean is set by the \texttt{SetOrigin} command and who's width is
368 set with the \texttt{SetSigma} command. If this is what you want then uncomment
369 out line \texttt{0064}. Line \texttt{0059 gener->Init();} initializes the
370 particle generation routine defined by \texttt{0053} with any and all
371 parameters defined later on. Lastly line \texttt{0066
372 gAlice->SetField(-999,2);} defines what kind, if any, magnetic field should be
373 used. These values instruct \texttt{AliRoot} to read a magnetic field map from
374 \texttt{\$ALICE\_ROOT/data/field02.dat}.
385 0074 Int_t iCASTOR=1;
402 In these following lines \texttt{0068} through \texttt{0086} a series of flags
403 are defined to make it easy to turn on or off different detectors. There is one
404 such flag for each detector/major structural element. A value of 1 turns on
405 that detector and a value of 0 turns it off. For example, Line
406 \texttt{0068 Int\_t iMAG=1;} turns on the magnetic field for all of
407 ALICE\footnotemark. Line \texttt{0069 Int\_t iITS=1;} turns on the ITS. Line
408 \texttt{0073 Int\_t iZDC=0;} turns off the ZDC\footnotemark. Note, in this
409 case the ZDC will not even be defined in ALIROOT. You will not be able to make
410 any fancy pictures of it or anything. It simply will not exist.
412 \addtocounter{footnote}{-1}
413 \footnotetext{Be car full, if a particular material was defined to have a
414 magnetic field this may over ride this flag. This should have been fixed, I
415 haven't confirmed that yet.}
417 \addtocounter{footnote}{1}
418 \footnotetext{Since the ZDC is outside of the range of produce primary
419 particle, in this example, there is no real use to keep it in the simulation.}
421 Now the following lines in the \texttt{Config.C} file, depending on the value
422 of the above flags, will create the specific detectors and structural
423 elements. Since this is an ITS manual, I will show and explain the ITS part of
430 0140 //=================== ITS parameters ============================
432 0142 // EUCLID is a flag to output (=1) both geometry and media to two ASCII files
433 0143 // (called by default ITSgeometry.euc and ITSgeometry.tme) in a format
434 0144 // understandable to the CAD system EUCLID. The default (=0) means that you
435 0145 // dont want to use this facility.
437 0147 AliITS *ITS = new AliITSv5("ITS","normal ITS");
438 0148 ITS->SetEUCLID(0);
444 This is the section of the \texttt{Config.C} file that defines what the ITS
445 is. You will note that if \texttt{iITS} = 0\footnote{A value of 0 is equivalent
446 to FALSE. A non-zero value is equivalent to TRUE.}, then this section of the
447 file will not be executed and no ITS will be defined. Line \texttt{0147}
448 creates the ITS. In this case it creates ITS version 5. There are two necessary
449 parameters. The first is the name of this detector ``ITS''. The second is a
450 brief description of the detector ``normal ITS''. Both of these are required so
451 that AliRoot knows what detector this is. AliRoot does not know about any
452 detectors and it is only via this detector name that we can later get access to
453 the information stored about the ITS. Line \texttt{0148 ITS-SetEUCLID(0);} sets
454 a flag for the ITS describing weather or not to create a file in the
455 EUCLID-GEANT3 compatible format. By default this should be 0. In the future we
456 may add additional flags and parameters as needed.
458 On line \texttt{0147 AliITS *ITS = new AliITSv5(``ITS'',''normal ITS'');} this
459 create an ITS of type v5. This is the detailed ITS TDR geometry. For a full
460 description of the possible ITS geometries see section
461 ~\ref{ITSMan:ch2:Detaile_geometry_section}. By default, every detailed geometry
462 is required to have a corresponding course geometry. In this case that is
463 v0. All course geometries are required not to generate ``hits'' and therefore
464 \texttt{AliITSv0} does not and therefore can not be used in any study where
465 signals from the ITS may be used or required.
467 \section*{Other things that can be done}
469 There are a number of macros that have been written to do different
470 things. Take a look at the files in ending in \texttt{.C} in
471 \texttt{\$ALICE\_ROOT/macros}. There you will find a number of macros to view
472 and/or draw different detector geometries. These are the geometries used by in
473 the simulation and so you will need to execute \texttt{gAlice->Init();}
474 first. In here are also kept general example macros to read hits and plot some
475 information, \texttt{newanal.C} for example. Typically each detector group
476 writes their own detector specific macros and places them in their directories,
477 \texttt{\$ALICE\_ROOT/ITS/AliITStest.C} which will simulate one event and then
478 do the ITS detector simulations and create what are called ``digits'' and also
479 reconstruct these ``digits'' into ``reconstructed points''.
481 There is also another nice macro, requiring Geant 3, that is menu driven and
482 lets you display all or part of the Alice geometry. This is located in
483 \texttt{\$ALICE\_ROOT/TGeant3} and is called \texttt{TGeant3GUI.C}, see
484 figure~\ref{ITSMan:ch0:TGeant3GUI}. As with the other macros, you will need to
485 execute \texttt{gAlice->Init();} first. Root also provides some nice features
486 that you can use. Either in \texttt{aliroot} or in \texttt{root} you can create
487 a root object called a \texttt{TBrowser}, see
488 figure~\ref{ITSMan:ch0:TBrowser}. This is a menu driven way to look at or even
489 histogram the contents of root files or even memory. These macros are always
490 being modified, deleted, changed, and new one added. Take a look at the Alice
491 off-line web page \texttt{http://AliSoft.cern.ch/offline/} for a more up to
492 date and complete description.
494 \begin{figure*}[htbp]
497 % \epsfig{file=TGeant3GUI_Canvas.eps,width=12cm}
498 \caption{This shows a typical menu from running \texttt{TGeant3GUI.C}.}
499 \label{ITSMan:ch0:TGeant3GUI}
503 \begin{figure*}[htbp]
506 % \epsfig{file=TBrower_Canvas.eps,width=12cm}
507 \caption{This shows a typical TBrowser window.}
508 \label{ITSMan:ch0:TBrowser}