]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TOF/AliTOF.cxx
Add new background and header. D.Picard
[u/mrichter/AliRoot.git] / TOF / AliTOF.cxx
CommitLineData
fe4da5cc 1///////////////////////////////////////////////////////////////////////////////
2// //
3// Time Of Flight //
4// This class contains the basic functions for the Time Of Flight //
5// detector. Functions specific to one particular geometry are //
6// contained in the derived classes //
7// //
8//Begin_Html
9/*
10<img src="gif/AliTOFClass.gif">
11*/
12//End_Html
13// //
14// //
15///////////////////////////////////////////////////////////////////////////////
16
17#include "AliTOF.h"
18#include <TNode.h>
19#include <TTUBE.h>
20#include <TBRIK.h>
21#include "AliRun.h"
fe4da5cc 22#include "AliConst.h"
23
24ClassImp(AliTOF)
25
26//_____________________________________________________________________________
27AliTOF::AliTOF()
28{
29 //
30 // Default constructor
31 //
32 fIshunt = 0;
33}
34
35//_____________________________________________________________________________
36AliTOF::AliTOF(const char *name, const char *title)
37 : AliDetector(name,title)
38{
39 //
40 // AliTOF standard constructor
41 //
42 fHits = new TClonesArray("AliTOFhit", 405);
43 //
44 fIshunt = 0;
45 //
46 SetMarkerColor(7);
47 SetMarkerStyle(2);
48 SetMarkerSize(0.4);
49}
50
51//_____________________________________________________________________________
52void AliTOF::AddHit(Int_t track, Int_t *vol, Float_t *hits)
53{
54 //
55 // Add a TOF hit
56 //
57 TClonesArray &lhits = *fHits;
58 new(lhits[fNhits++]) AliTOFhit(fIshunt,track,vol,hits);
59}
60
61//_____________________________________________________________________________
62void AliTOF::BuildGeometry()
63{
64 //
65 // Build TOF ROOT geometry for the ALICE event viewver
66 //
67 TNode *Node, *Top;
68 const int kColorTOF = 27;
69 //
70 // Find top TNODE
71 Top=gAlice->GetGeometry()->GetNode("alice");
72 //
73 // Define rotation matrixes
74 new TRotMatrix("rot501","rot501",90,-18.94737,90,71.05263,0,0);
75 new TRotMatrix("rot502","rot502",90,-37.89474,90,52.10526,0,0);
76 new TRotMatrix("rot503","rot503",90,-56.84211,90,33.15789,0,0);
77 new TRotMatrix("rot504","rot504",90,-75.78947,90,14.21053,0,0);
78 new TRotMatrix("rot505","rot505",90,-94.73685,90,-4.736847,0,0);
79 new TRotMatrix("rot506","rot506",90,-113.6842,90,-23.68421,0,0);
80 new TRotMatrix("rot507","rot507",90,-132.6316,90,-42.63158,0,0);
81 new TRotMatrix("rot508","rot508",90,-151.5789,90,-61.57895,0,0);
82 new TRotMatrix("rot509","rot509",90,-170.5263,90,-80.52632,0,0);
83 new TRotMatrix("rot510","rot510",90,-189.4737,90,-99.47369,0,0);
84 new TRotMatrix("rot511","rot511",90,-208.4211,90,-118.4211,0,0);
85 new TRotMatrix("rot512","rot512",90,-227.3684,90,-137.3684,0,0);
86 new TRotMatrix("rot513","rot513",90,-246.3158,90,-156.3158,0,0);
87 new TRotMatrix("rot514","rot514",90,-265.2632,90,-175.2632,0,0);
88 new TRotMatrix("rot515","rot515",90,-284.2105,90,-194.2105,0,0);
89 new TRotMatrix("rot516","rot516",90,-303.1579,90,-213.1579,0,0);
90 new TRotMatrix("rot517","rot517",90,-322.1053,90,-232.1053,0,0);
91 new TRotMatrix("rot518","rot518",90,-341.0526,90,-251.0526,0,0);
92 new TRotMatrix("rot519","rot519",90,-360,90,-270,0,0);
93 //
151e057e 94 // Position the different copies
95 // const Float_t rtof=366;
96 // changed by Federico Carminati. TOF people should really look at this
97 const Float_t rtof=381;
98 const Int_t ntof=19;
99 const Float_t angle=2*kPI/ntof;
100 Float_t ang;
101 const Float_t xtof = rtof*TMath::Sin(kPI/ntof);
102 //
fe4da5cc 103 // Define TOF basic volume
151e057e 104 new TBRIK("S_TOF1","TOF box","void",xtof,6.,175.);
fe4da5cc 105 //
fe4da5cc 106 Top->cd();
151e057e 107 ang=2.75*angle;
108 Node = new TNode("FTO11","FTO11","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot502");
fe4da5cc 109 Node->SetLineColor(kColorTOF);
110 fNodes->Add(Node);
111 //
112 Top->cd();
151e057e 113 Node = new TNode("FTO111","FTO111","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot502");
fe4da5cc 114 Node->SetLineColor(kColorTOF);
115 fNodes->Add(Node);
116 //
fe4da5cc 117 //
118 Top->cd();
151e057e 119 ang=1.75*angle;
120 Node = new TNode("FTO12","FTO12","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot503");
fe4da5cc 121 Node->SetLineColor(kColorTOF);
122 fNodes->Add(Node);
123 //
124 Top->cd();
151e057e 125 Node = new TNode("FTO112","FTO112","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot503");
fe4da5cc 126 Node->SetLineColor(kColorTOF);
127 fNodes->Add(Node);
128 //
151e057e 129 //
fe4da5cc 130 Top->cd();
151e057e 131 ang=0.75*angle;
132 Node = new TNode("FTO13","FTO13","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot504");
fe4da5cc 133 Node->SetLineColor(kColorTOF);
151e057e 134 fNodes->Add(Node);
fe4da5cc 135 //
136 Top->cd();
151e057e 137 Node = new TNode("FTO113","FTO113","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot504");
fe4da5cc 138 Node->SetLineColor(kColorTOF);
139 fNodes->Add(Node);
140 //
151e057e 141 //
fe4da5cc 142 Top->cd();
151e057e 143 ang=-0.25*angle;
144 Node = new TNode("FTO14","FTO14","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot505");
fe4da5cc 145 Node->SetLineColor(kColorTOF);
146 fNodes->Add(Node);
147 //
148 Top->cd();
151e057e 149 Node = new TNode("FTO114","FTO114","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot505");
fe4da5cc 150 Node->SetLineColor(kColorTOF);
151 fNodes->Add(Node);
152 //
151e057e 153 //
fe4da5cc 154 Top->cd();
151e057e 155 ang=-1.25*angle;
156 Node = new TNode("FTO15","FTO15","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot506");
fe4da5cc 157 Node->SetLineColor(kColorTOF);
158 fNodes->Add(Node);
159 //
160 Top->cd();
151e057e 161 Node = new TNode("FTO115","FTO115","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot506");
162 Node->SetLineColor(kColorTOF);
163 fNodes->Add(Node);
164 //
165 //
166 Top->cd();
167 ang=kPI+1.25*angle;
168 Node = new TNode("FTO16","FTO16","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot513");
fe4da5cc 169 Node->SetLineColor(kColorTOF);
170 fNodes->Add(Node);
171 //
172 Top->cd();
151e057e 173 Node = new TNode("FTO116","FTO116","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot513");
fe4da5cc 174 Node->SetLineColor(kColorTOF);
175 fNodes->Add(Node);
176 //
151e057e 177 //
fe4da5cc 178 Top->cd();
151e057e 179 ang=kPI+0.25*angle;
180 Node = new TNode("FTO17","FTO17","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot514");
fe4da5cc 181 Node->SetLineColor(kColorTOF);
182 fNodes->Add(Node);
183 //
184 Top->cd();
151e057e 185 Node = new TNode("FTO117","FTO117","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot514");
fe4da5cc 186 Node->SetLineColor(kColorTOF);
187 fNodes->Add(Node);
188 //
151e057e 189 //
fe4da5cc 190 Top->cd();
151e057e 191 ang=kPI-0.75*angle;
192 Node = new TNode("FTO18","FTO18","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot515");
fe4da5cc 193 Node->SetLineColor(kColorTOF);
194 fNodes->Add(Node);
195 //
196 Top->cd();
151e057e 197 Node = new TNode("FTO118","FTO118","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot515");
fe4da5cc 198 Node->SetLineColor(kColorTOF);
199 fNodes->Add(Node);
200 //
151e057e 201 //
fe4da5cc 202 Top->cd();
151e057e 203 ang=kPI-1.75*angle;
204 Node = new TNode("FTO19","FTO19","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot516");
fe4da5cc 205 Node->SetLineColor(kColorTOF);
206 fNodes->Add(Node);
207 //
208 Top->cd();
151e057e 209 Node = new TNode("FTO119","FTO119","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot516");
fe4da5cc 210 Node->SetLineColor(kColorTOF);
211 fNodes->Add(Node);
212 //
151e057e 213 //
fe4da5cc 214 Top->cd();
151e057e 215 ang=kPI-2.75*angle;
216 Node = new TNode("FTO110","FTO110","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),175,"rot517");
fe4da5cc 217 Node->SetLineColor(kColorTOF);
218 fNodes->Add(Node);
219 //
220 Top->cd();
151e057e 221 Node = new TNode("FTO120","FTO120","S_TOF1",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-175,"rot517");
fe4da5cc 222 Node->SetLineColor(kColorTOF);
223 fNodes->Add(Node);
224 //
225 // Define second TOF volume
151e057e 226 new TBRIK("S_TOF2","TOF box","void",xtof,6.,100.);
fe4da5cc 227 //
228 // Position the volume
229 Top->cd();
151e057e 230 ang=-2.25*angle;
231 Node = new TNode("FTO21","FTO21","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot507");
fe4da5cc 232 Node->SetLineColor(kColorTOF);
233 fNodes->Add(Node);
234 //
235 Top->cd();
151e057e 236 Node = new TNode("FTO27","FTO27","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot507");
fe4da5cc 237 Node->SetLineColor(kColorTOF);
238 fNodes->Add(Node);
239 //
151e057e 240 //
fe4da5cc 241 Top->cd();
151e057e 242 ang=-3.25*angle;
243 Node = new TNode("FTO22","FTO22","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot508");
fe4da5cc 244 Node->SetLineColor(kColorTOF);
245 fNodes->Add(Node);
246 //
247 Top->cd();
151e057e 248 Node = new TNode("FTO28","FTO28","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot508");
fe4da5cc 249 Node->SetLineColor(kColorTOF);
250 fNodes->Add(Node);
251 //
151e057e 252 //
fe4da5cc 253 Top->cd();
151e057e 254 ang=-4.25*angle;
255 Node = new TNode("FTO23","FTO23","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot509");
fe4da5cc 256 Node->SetLineColor(kColorTOF);
257 fNodes->Add(Node);
258 //
259 Top->cd();
151e057e 260 Node = new TNode("FTO29","FTO29","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot509");
fe4da5cc 261 Node->SetLineColor(kColorTOF);
262 fNodes->Add(Node);
263 //
151e057e 264 //
fe4da5cc 265 Top->cd();
151e057e 266 ang=kPI+4.25*angle;
267 Node = new TNode("FTO24","FTO24","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot510");
fe4da5cc 268 Node->SetLineColor(kColorTOF);
269 fNodes->Add(Node);
270 //
271 Top->cd();
151e057e 272 Node = new TNode("FTO210","FTO210","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot510");
fe4da5cc 273 Node->SetLineColor(kColorTOF);
274 fNodes->Add(Node);
275 //
151e057e 276 //
fe4da5cc 277 Top->cd();
151e057e 278 ang=kPI+3.25*angle;
279 Node = new TNode("FTO25","FTO25","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot511");
fe4da5cc 280 Node->SetLineColor(kColorTOF);
281 fNodes->Add(Node);
282 //
283 Top->cd();
151e057e 284 Node = new TNode("FTO211","FTO211","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot511");
fe4da5cc 285 Node->SetLineColor(kColorTOF);
286 fNodes->Add(Node);
287 //
151e057e 288 //
fe4da5cc 289 Top->cd();
151e057e 290 ang=kPI+2.25*angle;
291 Node = new TNode("FTO26","FTO26","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),250,"rot512");
fe4da5cc 292 Node->SetLineColor(kColorTOF);
293 fNodes->Add(Node);
294 //
295 Top->cd();
151e057e 296 Node = new TNode("FTO212","FTO212","S_TOF2",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-250,"rot512");
fe4da5cc 297 Node->SetLineColor(kColorTOF);
298 fNodes->Add(Node);
299 //
300 // Define third TOF volume
151e057e 301 new TBRIK("S_TOF3","TOF box","void",xtof,6.,75.);
fe4da5cc 302 //
303 // Position it
304 Top->cd();
151e057e 305 ang=3.75*angle;
306 Node = new TNode("FTO31","FTO31","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),275,"rot501");
fe4da5cc 307 Node->SetLineColor(kColorTOF);
308 fNodes->Add(Node);
309 //
310 Top->cd();
151e057e 311 Node = new TNode("FTO34","FTO34","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-275.,"rot501");
fe4da5cc 312 Node->SetLineColor(kColorTOF);
313 fNodes->Add(Node);
314 //
151e057e 315 //
fe4da5cc 316 Top->cd();
151e057e 317 ang=kPI-3.75*angle;
318 Node = new TNode("FTO32","FTO32","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),275,"rot518");
fe4da5cc 319 Node->SetLineColor(kColorTOF);
320 fNodes->Add(Node);
321 //
322 Top->cd();
151e057e 323 Node = new TNode("FTO35","FTO35","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-275,"rot518");
fe4da5cc 324 Node->SetLineColor(kColorTOF);
325 fNodes->Add(Node);
326 //
151e057e 327 //
fe4da5cc 328 Top->cd();
151e057e 329 ang=kPI/2;
330 Node = new TNode("FTO33","FTO33","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),275.,"rot519");
fe4da5cc 331 Node->SetLineColor(kColorTOF);
332 fNodes->Add(Node);
333 //
334 Top->cd();
151e057e 335 Node = new TNode("FTO36","FTO36","S_TOF3",rtof*TMath::Cos(ang),rtof*TMath::Sin(ang),-275.,"rot519");
fe4da5cc 336 Node->SetLineColor(kColorTOF);
337 fNodes->Add(Node);
338}
339
340//_____________________________________________________________________________
341void AliTOF::CreateGeometry()
342{
343 //
344 // Common geometry code for version 2 and version 3 of the TOF
345 //
346 //Begin_Html
347 /*
348 <img src="gif/AliTOFv23.gif">
349 */
350 //End_Html
351 //
352
353 AliMC* pMC = AliMC::GetMC();
354
355 const Double_t kPi=TMath::Pi();
356 const Double_t kDegrad=kPi/180;
357 const Double_t kRaddeg=180/kPi;
358 //
359 Float_t fil_rich;
360 Int_t lmax;
361 Float_t xtof, ytof, fil_step, phos_phi, phos_min, phos_max;
362 Int_t lmax1;
363 Float_t zcor1, zcor2, zcor3;
364 Float_t ztof0, ztof1, ztof2, xcor2, ycor2;
365 Int_t i;
366 Float_t dx, dz, zl, xm, ym, phos_r;
367 Int_t idrotm[101];
368 Float_t phos_x;
369 Float_t rp2, zm0, zm1, zm2;
370 Float_t par[10], fil_min, fil_max;
371 Float_t fil1;
372 //
373 Int_t *idtmed = gAlice->Idtmed();
374 //
375 phos_x = 214.6;
376 phos_r = 467.;
377 //phos_z = 260.;
378 //rich_z = 472.5;
379 xtof = 120.;
380 ytof = 12.;
381 ztof0 = 350.;
382 ztof1 = 200.;
383 ztof2 = 150.;
384 //
385 // frame thick along Z axis
386 dz = 0.;
387 //
388 // frame thick along X axis
389 dx = 0.;
390 //
391 // barrel length along Z axis
392 zl = 720.;
393 //
394 // PHOS openings
395 fil_rich = 30.;
396 phos_phi = TMath::ATan(phos_x / (phos_r * 2.));
397 phos_min = (kPi - phos_phi * 4.) * kRaddeg;
398 phos_max = (phos_phi * 4. + kPi) * kRaddeg;
399 //
400 // barrel radius in module contact point
151e057e 401 par[0] = 370;
402 par[1] = 390;
fe4da5cc 403 par[2] = zl / 2.;
404 pMC->Gsvolu("FBAR", "TUBE", idtmed[500], par, 3);
405 //
406 // --- Set module unseen ---
407 pMC->Gspos("FBAR", 1, "ALIC", 0., 0., 0., 0, "ONLY");
408 pMC->Gsatt("FBAR", "SEEN", 0);
409 //
410 // Number of TOF-block
411 lmax = 19;
412 //
413 // New size YTOF
414 par[0] = xtof / 2.;
415 par[1] = ytof / 2.;
416 par[2] = ztof0 / 2.;
417 pMC->Gsvolu("FTO1", "BOX ", idtmed[506], par, 3);
418 pMC->Gsatt("FTO1", "SEEN", -2);
419 par[2] = ztof1 / 2.;
420 pMC->Gsvolu("FTO2", "BOX ", idtmed[506], par, 3);
421 pMC->Gsatt("FTO2", "SEEN", -2);
422 par[2] = ztof2 / 2.;
423 pMC->Gsvolu("FTO3", "BOX ", idtmed[506], par, 3);
424 pMC->Gsatt("FTO3", "SEEN", -2);
425 //
426 // Subtraction of TOF module boundaries
427 xm = xtof - dx * 2.;
428 ym = ytof;
429 zm0 = ztof0 - dz * 2.;
430 zm1 = ztof1 - dz * 2.;
431 zm2 = ztof2 - dz * 2.;
432 //
433 // TOF module internal definitions
434 //
435 TOFpc(xm, ym, zm0, zm1, zm2);
436 //
437 //rp1 = 382.;
151e057e 438 rp2 = 381;
fe4da5cc 439 fil_step = 360. / lmax;
440 fil_min = phos_min - fil_step * .5;
441 fil_max = phos_max + fil_step * .5;
442 zcor1 = 175.;
443 zcor2 = ztof0 - ztof1 / 2.;
444 zcor3 = ztof0 - ztof2 / 2.;
445 for (i = 1; i <= lmax; ++i) {
446 fil1 = fil_step * i;
447 //xcor1 = rp1 * TMath::Sin(fil1 * kDegrad) + dx * TMath::Cos(fil1 * kDegrad);
448 //ycor1 = rp1 * TMath::Cos(fil1 * kDegrad) - dx * TMath::Sin(fil1 * kDegrad);
449 xcor2 = rp2 * TMath::Sin(fil1 * kDegrad);
450 ycor2 = rp2 * TMath::Cos(fil1 * kDegrad);
451 lmax1 = i + lmax;
452 AliMatrix(idrotm[i], 90., -fil1, 90., 90. - fil1, 0., 0.);
453 if (fil1 >= fil_min && fil1 <= fil_max) {
454 pMC->Gspos("FTO2", i, "FBAR", xcor2, ycor2, zcor2, idrotm[i], "ONLY");
455 pMC->Gspos("FTO2", lmax1, "FBAR", xcor2, ycor2, -zcor2, idrotm[i], "ONLY");
456 } else if (fil1 <= fil_rich || fil1 >= 360. - fil_rich) {
457 par[2] = ztof2 / 2.;
458 pMC->Gspos("FTO3", i, "FBAR", xcor2, ycor2, zcor3, idrotm[i], "ONLY");
459 pMC->Gspos("FTO3", lmax1, "FBAR", xcor2, ycor2, -zcor3, idrotm[i], "ONLY");
460 } else {
461 par[2] = ztof0 / 2.;
462 pMC->Gspos("FTO1", i, "FBAR", xcor2, ycor2, zcor1, idrotm[i], "ONLY");
463 pMC->Gspos("FTO1", lmax1, "FBAR", xcor2, ycor2, -zcor1, idrotm[i], "ONLY");
464 }
465 }
466}
467
468//_____________________________________________________________________________
8f72dc0c 469void AliTOF::DrawModule()
fe4da5cc 470{
471 //
472 // Draw a shaded view of the common part of the TOF geometry
473 // for versions 2 and 3
474 //
475
476 AliMC* pMC = AliMC::GetMC();
477
478 // Set everything unseen
479 pMC->Gsatt("*", "seen", -1);
480 //
481 // Set ALIC mother transparent
482 pMC->Gsatt("ALIC","SEEN",0);
483 //
484 // Set the volumes visible
485 pMC->Gsatt("FBAR","SEEN",0);
486 pMC->Gsatt("FTO1","SEEN",1);
487 pMC->Gsatt("FTO2","SEEN",1);
488 pMC->Gsatt("FTO3","SEEN",1);
489 //
490 pMC->Gdopt("hide", "on");
491 pMC->Gdopt("shad", "on");
492 pMC->Gsatt("*", "fill", 7);
493 pMC->SetClipBox(".");
494 pMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
495 pMC->DefaultRange();
496 pMC->Gdraw("alic", 40, 30, 0, 12, 9.5, .02, .02);
497 pMC->Gdhead(1111, "Time Of Flight");
498 pMC->Gdman(18, 4, "MAN");
499 pMC->Gdopt("hide","off");
500}
501
502//_____________________________________________________________________________
503void AliTOF::CreateMaterials()
504{
505 //
506 // Defines TOF materials for all versions
507 // Authors : Maxim Martemianov, Boris Zagreev (ITEP) 18/09/98
508 //
509 Int_t ISXFLD = gAlice->Field()->Integ();
510 Float_t SXMGMX = gAlice->Field()->Max();
511 //
512 Float_t ac[2] = { 12.,16. };
513 Float_t zc[2] = { 6.,8. };
514 Float_t wc[2] = { 1.,2. };
515 Float_t ag10[4] = { 12.,1.,16.,28. };
516 Float_t zg10[4] = { 6.,1.,8.,14. };
517 Float_t wmatg10[4] = { .259,.288,.248,.205 };
518 Float_t adme[5] = { 12.,1.,16.,19.,79. };
519 Float_t zdme[5] = { 6.,1.,8.,9.,35. };
520 Float_t wmatdme[5] = { .4056,.0961,.2562,.1014,.1407 };
521 Float_t aal[2] = { 27.,16. };
522 Float_t zal[2] = { 13.,8. };
523 Float_t wmatal[2] = { 2.,3. };
524 //
525 Int_t nlmatdme;
526 Float_t epsil, stmin, dc, densg10, densal, deemax, stemax;
527 Float_t densdme;
528 Int_t nlmatg10, nlmatal;
529 //
530 // --- Vacuum
531 AliMaterial(0, "Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
532 // --- Air
533 AliMaterial(1, "Air$",14.61,7.3,0.001205,30423.24,67500.);
534 // --- CO2
535 dc = .001977;
536 AliMixture(7, "CO2$", ac, zc, dc, -2, wc);
537 // --- G10
538 densg10 = 1.7;
539 nlmatg10 = -4;
540 AliMixture(5, "G10$", ag10, zg10, densg10, nlmatg10, wmatg10);
541 // --- DME
542 densdme = .00205;
543 nlmatdme = 5;
544 AliMixture(6, "DME ", adme, zdme, densdme, nlmatdme, wmatdme);
545 // ---- ALUMINA (AL203)
546 densal = 2.3;
547 nlmatal = -2;
548 AliMixture(8, "ALUMINA$", aal, zal, densal, nlmatal, wmatal);
549 // Previous data
550 // EPSIL = 0.1 ! Tracking precision,
551 // STEMAX = 0.1 ! Maximum displacement for multiple scattering
552 // DEEMAX = 0.1 ! Maximum fractional energy loss, DLS
553 // STMIN = 0.1
554 // New data from
555 epsil = .001;
556 stemax = -1.;
557 deemax = -.3;
558 stmin = -.8;
559 AliMedium(500, "Vacuum $", 0, 0, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
560 AliMedium(501, "Air $", 0, 0, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
561 AliMedium(505, "G10$", 5, 0, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
562 AliMedium(506, "DME$", 6, 0, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
563 AliMedium(507, "CO2$", 7, 0, ISXFLD, SXMGMX, 10., -.01, -.1, .01, -.01);
564 AliMedium(508, "ALUMINA$", 8, 0, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
565 AliMedium(510, "DME$", 6, 1, ISXFLD, SXMGMX, 10., stemax, deemax, epsil, stmin);
566}
567
568//_____________________________________________________________________________
569Int_t AliTOF::DistancetoPrimitive(Int_t , Int_t )
570{
571 //
572 // Returns distance from mouse pointer to detector, default version
573 //
574 return 9999;
575}
576
577//_____________________________________________________________________________
578void AliTOF::Init()
579{
580 //
581 // Initialise TOF detector after it has been built
582 //
583 Int_t i;
584 AliMC *pMC=AliMC::GetMC();
585 //
586 printf("\n");
587 for(i=0;i<35;i++) printf("*");
588 printf(" TOF_INIT ");
589 for(i=0;i<35;i++) printf("*");
590 printf("\n");
591 //
592 // Set id of TOF sensitive volume
593 fIdSens=pMC->VolId("FPG2");
594 //
595 for(i=0;i<80;i++) printf("*");
596 printf("\n");
597}
598
599
600ClassImp(AliTOFhit)
601
602//___________________________________________
603AliTOFhit::AliTOFhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
604 AliHit(shunt, track)
605{
606 //
607 // Store a TOF hit
608 //
609 Int_t i;
610 for (i=0;i<3;i++) fVolume[i] = vol[i];
611 //
612 // Position
613 fX=hits[0];
614 fY=hits[1];
615 fZ=hits[2];
616 //
617 // Momentum
618 fPx=hits[3];
619 fPy=hits[4];
620 fPz=hits[5];
621 fPmom=hits[6];
622 //
623 // Time Of Flight
624 fTof=hits[7];
625}
626
627