]> git.uio.no Git - u/mrichter/AliRoot.git/blame - START/AliSTARTv1.cxx
reconstruction with new Digits
[u/mrichter/AliRoot.git] / START / AliSTARTv1.cxx
CommitLineData
bc46b572 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16
17/////////////////////////////////////////////////////////////////////
18// //
19// START ( T-zero) detector version 1 //
20//
21//Begin Html
22/*
23<img src="gif/AliSTARTv1Class.gif">
24*/
25//End Html
26// //
27// //
28//////////////////////////////////////////////////////////////////////
29
88cb7938 30#include <Riostream.h>
31#include <stdlib.h>
32
bc46b572 33#include <TGeometry.h>
0cc62300 34#include <TLorentzVector.h>
88cb7938 35#include <TMath.h>
36#include <TNode.h>
37#include <TTUBE.h>
38#include <TVirtualMC.h>
bc46b572 39
e4da63c2 40#include "AliLog.h"
94de3818 41#include "AliMagF.h"
88cb7938 42#include "AliRun.h"
bc46b572 43#include "AliSTARThit.h"
88cb7938 44#include "AliSTARTv1.h"
5d12ce38 45#include "AliMC.h"
bc46b572 46
47ClassImp(AliSTARTv1)
48
49//--------------------------------------------------------------------
50AliSTARTv1::AliSTARTv1(const char *name, const char *title):
51 AliSTART(name,title)
52{
53 //
54 // Standart constructor for START Detector version 0
55 //
56 fIdSens1=0;
e4da63c2 57 fIshunt = 2;
bc46b572 58// setBufferSize(128000);
59}
60//-------------------------------------------------------------------------
61void AliSTARTv1::CreateGeometry()
62{
63 //
64 // Create the geometry of START Detector version 0
65 //
66 // begin Html
67 /*
68 <img src="gif/AliSTARTv0.gif">
69 */
70 //
71
72
73 Int_t *idtmed = fIdtmed->GetArray();
74
75 Int_t is;
76 Int_t idrotm[999];
77 Float_t x,y,z;
78
304618a5 79 Float_t pstartR[18]={0., 360., 5.,
80 -76.5+0.00+69.7, 4.25, 10.,
81 -76.5+6.05+69.7, 4.5, 10.,
82 -76.5+8.05+69.7, 4.5, 10.,
83 -76.5+8.05+69.7, 5.1, 10.,
84 -62.9+0.00+69.7, 5.1, 10.};
85
e4da63c2 86 Float_t pstart[3]={4.3, 12.,6.8};
d65c9254 87 Float_t pinstart[3]={0.,1.6,6.5};
e4da63c2 88 Float_t ppmt[3]={0.,1.5,3.5};
60b0465d 89
90 Float_t preg[3]={0.,0.875,0.005}; //dobavil bogdanov
60b0465d 91
bc46b572 92 Float_t pdivider[3]={0.,1.2,1.75};
93 Float_t pdiv2[3]={0.,1.2,1.25};
94 Float_t pdiv1[3]={0.6,1.2,0.5};
e4da63c2 95 // Float_t ptop[3]={0.,1.3,1.5};
96 Float_t ptop[3]={0.,1.0,1.5};
bc46b572 97 Float_t pbot[3]={0.6,1.2,0.1};
98 Float_t pglass[3]={1.2,1.3,2.};
99 Float_t pcer[3]={0.9,1.1,0.09};
100 Float_t psteel[3]={0.9,1.1,0.01};
101 Float_t ppins[3]={0.6,1.2,0.014};
102 Float_t phole[3]={0.6,1.2,0.015};
103 Float_t pknob[3]={0.5,0.6,0.4};
104 Float_t pknob_vac[3]={0.,0.5,0.4};
105 Float_t pknob_bot[3]={0.,0.6,0.05};
106 Float_t pribber[3] = {0.,1.2,2.413/2.};
107 Float_t presist[3] = {0.,1.2,0.087/2.};
304618a5 108 Float_t psupport1[3] = {4.51,4.6,4.0};//C kozhuh vnutri
d65c9254 109 Float_t psupport2[3] = {9.4,9.5,4.0};// snaruzhi C
304618a5 110 Float_t psupport3[3] = {4.51,9.5,0.05};//kryshki C
e4da63c2 111 Float_t psupport5[3] = {1.44,1.5,6.5}; // stakanchik dlai feu C
69b30e0f 112 Float_t psupport6[3] = {0,1.5,0.05}; //kryshechka stakanchika Al
d65c9254 113 Float_t psupport7[3] = {1.5,1.6,0.6}; //kolechko snaruzhu stakanchika Al
114 // Mother Volume katushka dlia krepezha vokrug truby k Absorbru
2ad713c4 115 AliMatrix(idrotm[901], 90., 0., 90., 90., 180., 0.);
d65c9254 116 Float_t ppcon[70];
117 ppcon[0] = 0;
118 ppcon[1] = 360;
304618a5 119 ppcon[2] = 13;
d65c9254 120// 1:
121 ppcon[3] = 14.1/2;
122 ppcon[4] = 4.4;
304618a5 123 ppcon[5] = 4.5;
d65c9254 124// 2
304618a5 125 ppcon[6] = ppcon[3]+1.;
d65c9254 126 ppcon[7] = 4.4;
304618a5 127 ppcon[8] = 4.5;
d65c9254 128// 3
129 ppcon[9] = ppcon[6];
130 ppcon[10] = 4.4;
304618a5 131 ppcon[11] = 5.1;
d65c9254 132
133// 4
134
135 ppcon[12] = ppcon[9]+0.1;
136 ppcon[13] = 4.4;
304618a5 137 ppcon[14] = 5.1;
d65c9254 138// 5
139
140 ppcon[15] = ppcon[12];
304618a5 141 ppcon[16] = 4.9;
142 ppcon[17] = 5.1;
d65c9254 143
144// 6
304618a5 145 ppcon[18] = ppcon[15]+7.05;
146 ppcon[19] = 4.9;
147 ppcon[20] = 5.1;
d65c9254 148
149// 7
150 ppcon[21] = ppcon[18];
304618a5 151 ppcon[22] = 4.9;
152 ppcon[23] = 5.1;
153
304618a5 154/// 8
affef71b 155 ppcon[24] = ppcon[21]+0.01;
304618a5 156 ppcon[25] = 3.15;
157 ppcon[26] = 3.25;
d65c9254 158
affef71b 159/// 9
160 ppcon[27] = ppcon[24];
50063378 161 ppcon[28] = 3.15;
304618a5 162 ppcon[29] = 3.25;
affef71b 163
d65c9254 164// 10
affef71b 165 ppcon[30] = ppcon[27]+4.5;
d65c9254 166 ppcon[31] = 3.15;
304618a5 167 ppcon[32] = 3.25;
168
d65c9254 169// 11
affef71b 170 ppcon[33] = ppcon[30];
d65c9254 171 ppcon[34] = 3.15;
affef71b 172 ppcon[35] = 3.25;
304618a5 173
d65c9254 174// 12
affef71b 175 ppcon[36] = ppcon[33];
d65c9254 176 ppcon[37] = 3.15;
304618a5 177 ppcon[38] = 7.6;
178
d65c9254 179// 13
affef71b 180 ppcon[39] = ppcon[33]+0.4;
d65c9254 181 ppcon[40] = 3.15;
304618a5 182 ppcon[41] = 7.6;
183
affef71b 184// 14
185// ppcon[39] = ppcon[36];
186// ppcon[40] = 3.15;
187// ppcon[41] = 7.6;
188
304618a5 189 gMC->Gsvolu("0SUP", "PCON", idtmed[kAir], ppcon,42);
2ad713c4 190 z=-69.7;//-14.1/2;
191 gMC->Gspos("0SUP",1,"ALIC",0.,0.,z,idrotm[901],"ONLY");
bc46b572 192
50063378 193
194 Float_t zdetRight=69.7,zdetLeft=350;
bc46b572 195 //-------------------------------------------------------------------
196 // START volume
197 //-------------------------------------------------------------------
198
bc46b572 199
304618a5 200 gMC->Gsvolu("0STR","PCON",idtmed[kAir],pstartR,18);
d65c9254 201 gMC->Gsvolu("0STL","TUBE",idtmed[kAir],pstart,3);
2ad713c4 202 gMC->Gspos("0STR",1,"ALIC",0.,0.,-zdetRight-pstart[2],idrotm[901],"ONLY");
203 gMC->Gspos("0STL",1,"ALIC",0.,0.,zdetLeft+pstart[2],0,"ONLY");
bc46b572 204
205//START interior
d65c9254 206 gMC->Gsvolu("0INS","TUBE",idtmed[kAir],pinstart,3);
e4da63c2 207 gMC->Gsvolu("0PMT","TUBE",idtmed[kOpAir],ppmt,3);
d65c9254 208 gMC->Gsvolu("0DIV","TUBE",idtmed[kVac],pdivider,3);
209 gMC->Gsvolu("0SU1","TUBE",idtmed[kC],psupport1,3);//C kozhuh vnutri
210 gMC->Gsvolu("0SU2","TUBE",idtmed[kC],psupport2,3);// snaruzhi C
211 gMC->Gsvolu("0SU3","TUBE",idtmed[kC],psupport3,3);//kryshka perednaiai C
212 gMC->Gsvolu("0SU4","TUBE",idtmed[kC],psupport3,3);//kryshka zadnaiai C
e4da63c2 213 // gMC->Gsvolu("0SU5","TUBE",idtmed[kAir],psupport4,3);// dyrki dlia feu v zadnej kryshke Air
d65c9254 214 gMC->Gsvolu("0SU6","TUBE",idtmed[kC],psupport5,3);// stakanchik dlai feu C
215 gMC->Gsvolu("0SU7","TUBE",idtmed[kAl],psupport6,3);//kryshechka stakanchika Al
216 gMC->Gsvolu("0SU8","TUBE",idtmed[kAl],psupport7,3);//kolechko snaruzhu stakanchika Al
217
bc46b572 218// first ring: 12 units of Scintillator+PMT+divider
d65c9254 219 Float_t theta = (180 / TMath::Pi()) * TMath::ATan(6.5 / zdetRight);
e4da63c2 220 Float_t angle = 2 * TMath::Pi() / 12;
d65c9254 221 Float_t phi[3];
304618a5 222
d65c9254 223 for (is=0; is<12; is++)
bc46b572 224 {
ef51244a 225
e4da63c2 226 x = 6.5 * TMath::Sin(is * angle);
227 y = 6.5 * TMath::Cos(is * angle);
d65c9254 228
60b0465d 229 phi[0] = -30 * is;
230 phi[1] = 90 - is * 30;
231 phi[2] = 90 - is * 30;
232 for (Int_t j = 0; j < 3; j++)
233 if (phi[j] < 0) phi[j] += 360;
d65c9254 234
60b0465d 235 AliMatrix (idrotm[902 + is], 90., phi[0],
236 90. + theta, phi[1],
237 theta, phi[2]);
d65c9254 238 z=-pstart[2]+pinstart[2]+0.2;
60b0465d 239 gMC->Gspos ("0INS", is + 1, "0STR", x, y, z, idrotm[902 + is], "ONLY");
240 gMC->Gspos ("0INS", is + 13, "0STL", x, y, z, 0, "ONLY");
e4da63c2 241 /*
242 x = 9 * TMath::Sin(angle/2+is * angle);
243 y = 9 * TMath::Cos(angle/2+is * angle);
244
245 gMC->Gspos ("0INS", is + 25, "0STL", x, y, z, 0, "ONLY");
246 */
9436d88b 247 }
60b0465d 248
bc46b572 249
60b0465d 250 x=0;
251 y=0;
252 z=-pinstart[2]+ppmt[2]+2.*psupport6[2]+0.1;
253 gMC->Gspos("0PMT",1,"0INS",x,y,z,0,"ONLY");
254 z=z+pdivider[2]+ppmt[2];
255 gMC->Gspos("0DIV",1,"0INS",x,y,z,0,"ONLY");
304618a5 256
60b0465d 257 // PMT
258
259 // Entry window (glass)
e4da63c2 260 gMC->Gsvolu("0TOP","TUBE",idtmed[kOpGlass],ptop,3); //glass
60b0465d 261 // gMC->Gsvolu("0TOP","TUBE",idtmed[12],ptop,3); //lucite
262 z=-ppmt[2]+ptop[2];
263 gMC->Gspos("0TOP",1,"0PMT",0,0,z,0,"ONLY");
60b0465d 264
265 //Fotokatod
266
e4da63c2 267 gMC->Gsvolu ("0REG", "TUBE", idtmed[kOpGlass], preg, 3); //photocathode dobavil bogdanov(AliSTARTv2)
268 z = -ppmt[2] + 2 * ptop[2] + preg[2]; //photocathode dobavil bogdanov
269 gMC->Gspos ("0REG", 1, "0PMT", 0, 0, z, 0, "ONLY"); //photocathode dobavil bogdanov(AliSTARTv2)
60b0465d 270
271 // Bottom glass
272 gMC->Gsvolu("0BOT","TUBE",idtmed[kGlass],pbot,3);
273 z=ppmt[2]-pbot[2];
274 if(fDebug) printf("%s: Z bottom %f\n",ClassName(),z);
275 gMC->Gspos("0BOT",1,"0PMT",0,0,z,0,"ONLY");
276 // Side cylinder glass
277 gMC->Gsvolu("0OUT","TUBE",idtmed[kGlass],pglass,3);
278 z=ppmt[2]-pglass[2];
60b0465d 279 gMC->Gspos("0OUT",1,"0PMT",0,0,z,0,"ONLY");
280 //PMT electrodes support structure
281 gMC->Gsvolu("0CER","TUBE",idtmed[kCer],pcer,3);
282 gMC->Gsvolu("0STE","TUBE",idtmed[kSteel],psteel,3);
283 z=-ppmt[2]+2*ptop[2]+0.3;;
60b0465d 284 for (is=1; is<=15; is++)
285 {
286 z=z+psteel[2]+pcer[2];
287 gMC->Gspos("0CER",is,"0PMT",0,0,z,0,"ONLY");
288 z=z+psteel[2]+pcer[2];
289 gMC->Gspos("0STE",is,"0PMT",0,0,z,0,"ONLY");
290 }
291
292 // Divider
293 // Knob at the bottom of PMT baloon
294
295 gMC->Gsvolu("0NB","TUBE",idtmed[6],pknob,3);
296 z=-pdivider[2]+pknob[2];
60b0465d 297 gMC->Gspos("0NB",1,"0DIV",0,0,z,0,"ONLY");
298 gMC->Gsvolu("0KB","TUBE",idtmed[kGlass],pknob_bot,3);
299 z=-pdivider[2]+2*pknob[2]+pknob_bot[2];
60b0465d 300 gMC->Gspos("0KB",1,"0DIV ",0,0,z,0,"ONLY");
301 gMC->Gsvolu("0VAC","TUBE",idtmed[kVac],pknob_vac,3);
302 z=-pdivider[2]+pknob_vac[2];
60b0465d 303 gMC->Gspos("0VAC",1,"0DIV",0,0,z,0,"ONLY");
304 //Steel pins + pin holes
305 gMC->Gsvolu("0PIN","TUBE",idtmed[kSteel],ppins,3);
306 z=-pdivider[2]+ppins[2];
307 gMC->Gspos("0PIN",1,"0DIV",0,0,z,0,"ONLY");
308 gMC->Gsvolu("0HOL","TUBE",idtmed[kBrass],phole,3);
309 z=-pdivider[2]+2*ppins[2]+phole[2];
310 gMC->Gspos("0HOL",1,"0DIV",0,0,z,0,"ONLY");
311
312 //Socket
313 gMC->Gsvolu("0V1","TUBE",idtmed[kCer],pdiv1,3);
314 z=-pdivider[2]+pdiv1[2];
315 gMC->Gspos("0V1",1,"0DIV",0,0,z,0,"ONLY");
316 //Resistors
317 gMC->Gsvolu("0V2","TUBE",idtmed[kAir],pdiv2,3);
318 z=pdivider[2]-pdiv2[2];
319 gMC->Gspos("0V2",1,"0DIV",0,0,z,0,"ONLY");
320 gMC->Gsvolu("0RS","TUBE",idtmed[kCer],presist,3);
321 z=-pdiv2[2]+presist[2];
322 gMC->Gspos("0RS",1,"0V2",0,0,z,0,"ONLY");
323 gMC->Gsvolu("0RB","TUBE",idtmed[kRibber],pribber,3);
324 z=pdiv2[2]-pribber[2];
325 gMC->Gspos("0RB",1,"0V2",0,0,z,0,"ONLY");
326
327
328 //Support left side
e4da63c2 329 /*
60b0465d 330 z=-pstart[2]+psupport1[2];
331 gMC->Gspos("0SU1",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh snaruzhi
332 gMC->Gspos("0SU2",2,"0STL",0,0,z,0,"ONLY"); //C kozhuh vnutri
333 z=-pstart[2]+psupport3[2];
334 gMC->Gspos("0SU3",2,"0STL",0,0,z,0,"ONLY"); //peredniaia kryshka
335 z=-pstart[2]+2.*psupport1[2];
e4da63c2 336 gMC->Gspos("0SU4",2,"0STL",0,0,z,0,"MANY"); //zadnaiai kryshka
337 */
60b0465d 338 z=-pstart[2]+psupport1[2]+0.1;
339 gMC->Gspos("0SU1",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh snaruzhi
340 gMC->Gspos("0SU2",1,"0STR",0,0,z,0,"ONLY"); //C kozhuh vnutri
341 z=-pstart[2]+psupport3[2]+0.1;
342 gMC->Gspos("0SU3",1,"0STR",0,0,z,0,"ONLY"); //peredniaia kryshka
343 z=-pstart[2]+2.*psupport1[2]+0.1;
e4da63c2 344 gMC->Gspos("0SU4",1,"0STR",0,0,z,0,"MANY"); //zadnaiai kryshka
60b0465d 345 gMC->Gspos("0SU6",1,"0INS",0,0,0,0,"ONLY");//C stakanchik dlia feu
346 z=-pinstart[2]+psupport6[2];
347 gMC->Gspos("0SU7",1,"0INS",0,0,z,0,"ONLY"); //Al kryshechka
348
349 z=pinstart[2]-psupport7[2];
350 gMC->Gspos("0SU8",1,"0INS",0,0,z,0,"ONLY"); //Al kolechko
351
352
353 Float_t par[3];
354 par[0]=4.4;
355 par[1]=4.5;
356 par[2]=0.5;
357 gMC->Gsvolu("0SC0","TUBE",idtmed[kC],par,3);
358 z=ppcon[3]+par[2];
359 gMC->Gspos("0SC0",1,"0SUP",0,0,z,0,"ONLY");
360 z += par[2];
361 par[0]=4.4;
362 par[1]=5.1;
363 par[2]=0.05;
364 gMC->Gsvolu("0SC1","TUBE",idtmed[kC],par,3);
365 z += par[2];
366 gMC->Gspos("0SC1",1,"0SUP",0,0,z,0,"ONLY");
367 z=z+par[2];
368 par[0]=4.9;
369 par[1]=5.0;
370 par[2]=6.9/2;
d65c9254 371 gMC->Gsvolu("0SC2","TUBE",idtmed[kC],par,3);
372 z += par[2];
373 gMC->Gspos("0SC2",1,"0SUP",0,0,z,0,"ONLY");
374 z += par[2];
304618a5 375 /*
d65c9254 376 Float_t parC[5];
377 parC[0]=0.25;
378 parC[1]=5.1;
379 parC[2]=5.2;
380 parC[3]=5.5;
381 parC[4]=5.6;
382 gMC->Gsvolu("0SC3","CONE",idtmed[kC],parC,5);
383 z += parC[0];
384 gMC->Gspos("0SC3",1,"0SUP",0,0,z,0,"ONLY");
385 z += parC[0];
e4da63c2 386 par[0]=5.5;
d65c9254 387 par[1]=5.6;
388 par[2]=1.2/2;
389 gMC->Gsvolu("0SC4","TUBE",idtmed[kC],par,3);
390 z += par[2];
391 gMC->Gspos("0SC4",1,"0SUP",0,0,z,0,"ONLY");
392 par[0]=5.1;
393 par[1]=5.5;
394 par[2]=1.2/2;
395 gMC->Gsvolu("0SA0","TUBE",idtmed[kAl],par,3);
396 gMC->Gspos("0SA0",1,"0SUP",0,0,z,0,"ONLY");
397 //gvozdi dlia skruchivaniia Al i C parts
398 par[0]=5.75;
399 par[1]=5.78;
400 gMC->Gsvolu("0SN1","TUBE",idtmed[kSteel],par,3);
401 gMC->Gspos("0SN1",1,"0SUP",0,0,z,0,"ONLY");
402 z += par[2];
304618a5 403 */
d65c9254 404 par[0]=3.15;
304618a5 405 par[1]=4.9;
406 par[2]=0.1/2;
d65c9254 407 gMC->Gsvolu("0SA1","TUBE",idtmed[kAl],par,3);
304618a5 408
d65c9254 409 z += par[2];
410 gMC->Gspos("0SA1",1,"0SUP",0,0,z,0,"ONLY");
411 z=z+par[2];
412 par[0]=3.15;
413 par[1]=3.16;
304618a5 414 par[2]=4.5/2;
d65c9254 415 gMC->Gsvolu("0SA2","TUBE",idtmed[kAl],par,3);
416 z += par[2];
417 gMC->Gspos("0SA2",1,"0SUP",0,0,z,0,"ONLY");
418 z=z+par[2];
419 par[0]=3.16; // eta chast' prikruchena k absorberu
420 par[1]=7.5;
304618a5 421 par[2]=0.2;
d65c9254 422 gMC->Gsvolu("0SA3","TUBE",idtmed[kAl],par,3);
423 z += par[2];
424 gMC->Gspos("0SA3",1,"0SUP",0,0,z,0,"ONLY");
425 par[0]=3.16; // gvozdi eta chast' prikruchena k absorberu
426 par[1]=7.5;
427 par[2]=0.01;
428 gMC->Gsvolu("0SN2","TUBE",idtmed[kSteel],par,3);
429 gMC->Gspos("0SN2",1,"0SUP",0,0,z,0,"ONLY");
304618a5 430
d65c9254 431
bc46b572 432}
433//------------------------------------------------------------------------
434void AliSTARTv1::CreateMaterials()
435{
ef51244a 436 Int_t isxfld = gAlice->Field()->Integ();
437 Float_t sxmgmx = gAlice->Field()->Max();
bc46b572 438 Float_t a,z,d,radl,absl,buf[1];
439 Int_t nbuf;
60b0465d 440 Int_t *idtmed = fIdtmed->GetArray();
441
442// AIR
443
444 Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
445 Float_t zAir[4]={6.,7.,8.,18.};
446 Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
447 Float_t dAir = 1.20479E-3;
448
bc46b572 449// Scintillator CH
450 Float_t ascin[2]={1.01,12.01};
451 Float_t zscin[2]={1,6};
452 Float_t wscin[2]={1,1};
453 Float_t denscin=1.03;
a94466c5 454//Lucite C(CH3)CO2CH3
455 Float_t alucite[3]={1.01,12.01,15.999};
456 Float_t zlucite[3]={1,6,8};
457 Float_t wlucite[3]={8,5,2};
458 Float_t denlucite=1.16;
459 // PMT glass SiO2
bc46b572 460 Float_t aglass[2]={28.0855,15.9994};
461 Float_t zglass[2]={14.,8.};
462 Float_t wglass[2]={1.,2.};
463 Float_t dglass=2.65;
464// Ceramic 97.2% Al2O3 , 2.8% SiO2
465 Float_t acer[2],zcer[2],wcer[2]={0.972,0.028};
e4da63c2 466 Float_t aCeramic[2] = { 26.981539,15.9994 };
467 Float_t zCeramic[2] = { 13.,8. };
468 Float_t wCeramic[2] = { 2.,3. };
bc46b572 469 Float_t denscer = 3.6;
470
471// Brass 80% Cu, 20% Zn
472 Float_t abrass[2] = {63.546,65.39};
473 Float_t zbrass[2] = {29,30};
474 Float_t wbrass[2] = {0.8,0.2};
475 Float_t denbrass=8.96;
476
477//Ribber C6H12S
478 Float_t aribber[3] = {12.,1.,32.};
479 Float_t zribber[3] = {6.,1.,16.};
480 Float_t wribber[3] = {6.,12.,1.};
481 Float_t denribber=0.8;
d65c9254 482// Support inside
483 Float_t asupport[2] = {12.,1.};
484 Float_t zsupport[2] = {6.,1.};
485 Float_t wsupport[2] = {1.,1.};
486 Float_t densupport=0.1;
bc46b572 487
488//*** Definition Of avaible START materials ***
489 AliMaterial(0, "START Steel$", 55.850,26.,7.87,1.76,999);
490 AliMaterial(1, "START Vacuum$", 1.e-16,1.e-16,1.e-16,1.e16,999);
60b0465d 491 AliMixture(2, "START Air$", aAir, zAir, dAir,4,wAir);
d65c9254 492 AliMaterial(10, "CarbonPlastic$", 12.01, 6.0, 2.26, 18.8,999);
493 AliMaterial(11, "Aliminium$", 26.98, 13.0, 2.7, 8.9,999);
bc46b572 494
e4da63c2 495 AliMixture( 3, "Ceramic $",aCeramic, zCeramic, denscer, -2, wCeramic);
bc46b572 496 AliMixture( 4, "PMT glass $",aglass,zglass,dglass,-2,wglass);
00d6d986 497 char namate[21]="";
bc46b572 498 gMC->Gfmate((*fIdmate)[3], namate, a, z, d, radl, absl, buf, nbuf);
499 acer[0]=a;
500 zcer[0]=z;
501 gMC->Gfmate((*fIdmate)[4], namate, a, z, d, radl, absl, buf, nbuf);
502 acer[1]=a;
503 zcer[1]=z;
60b0465d 504
bc46b572 505
506 AliMixture( 9, "Ceramic $", acer, zcer, denscer, 2, wcer);
507 AliMixture( 5, "Scintillator$",ascin,zscin,denscin,-2,wscin);
508 AliMixture( 6, "Brass $", abrass, zbrass, denbrass, 2, wbrass);
bc46b572 509 AliMixture( 7, "Ribber $",aribber,zribber,denribber,-3,wribber);
a94466c5 510 AliMixture( 8, "Lucite$",alucite,zlucite,denlucite,-3,wlucite);
d65c9254 511 AliMixture( 9, "Penoplast$",asupport,zsupport,densupport,-2,wsupport);
bc46b572 512
ef51244a 513 AliMedium(1, "START Air$", 2, 0, isxfld, sxmgmx, 10., .1, 1., .003, .003);
514 AliMedium(2, "Scintillator$", 5, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003);
515 AliMedium(3, "Vacuum$", 1, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
516 AliMedium(4, "Ceramic$", 9, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
d65c9254 517 AliMedium(6, "Glass$", 4, 1, isxfld, sxmgmx, 10., .01, .1, .003, .003);
ef51244a 518 AliMedium(8, "Steel$", 0, 0, isxfld, sxmgmx, 1., .001, 1., .001, .001);
519 AliMedium(9, "Ribber $", 7, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
520 AliMedium(11, "Brass $", 6, 0, isxfld, sxmgmx, 10., .01, .1, .003, .003);
a94466c5 521 AliMedium(12, "Lucite$", 8, 1, isxfld, sxmgmx, 10., .01, 1., .003, .003);
d65c9254 522 AliMedium(13, "CarbonPlastic$", 10, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);
523 AliMedium(14, "PenoPlast$", 9, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);
524 AliMedium(15, "Aluminium$", 11, 0, isxfld, sxmgmx, 10., .01, 1., .003, .003);
e4da63c2 525 AliMedium(16, "OpticalGlass$", 4, 1, isxfld, sxmgmx, 10., .01, .1, .003, .003);
526 AliMedium(17, "START OpAir$", 2, 0, isxfld, sxmgmx, 10., .1, 1., .003, .003);
527
a94466c5 528
e4da63c2 529// Definition Cherenkov parameters
530 int i;
531 const Int_t kNbins=30;
532
533 Float_t aPckov[kNbins];
534 Float_t aRindexSiO2[kNbins], rindexAir[kNbins], efficAll[kNbins], absorAir[kNbins];
535
536 Float_t aAbsSiO2[kNbins]={//New values from A.DiMauro 28.10.03 total 31
537 34.4338, 30.5424, 30.2584, 31.4928, 31.7868, 17.8397, 9.3410, 6.4492, 6.1128, 5.8128,
538 5.5589, 5.2877, 5.0162, 4.7999, 4.5734, 4.2135, 3.7471, 2.6033, 1.5223, 0.9658,
539 0.4242, 0.2500, 0.1426, 0.0863, 0.0793, 0.0724, 0.0655, 0.0587, 0.0001, 0.0001};
540
541
542 // Float_t aAbsSiO2[kNbins]={30*2000.};
543 for(i=0;i<kNbins;i++)
544 {
545 aPckov[i]=(0.1*i+5.5)*1e-9;//Photons energy bins 5.5 eV - 8.5 eV step 0.1 eV
546 aRindexSiO2[i]=1.458; //refractive index for qwarts
547 rindexAir[i]=1.;
548 efficAll[i]=1.;
549
550 absorAir[i]=1.e-5;
551 }
552
553 gMC->SetCerenkov (idtmed[kOpGlass], kNbins, aPckov, aAbsSiO2, efficAll, aRindexSiO2 );
554 gMC->SetCerenkov (idtmed[kOpAir], kNbins , aPckov, absorAir, efficAll,
555rindexAir);
9e1a0ddb 556 if(fDebug) cout<<ClassName()<<": ++++++++++++++Medium set++++++++++"<<endl;
bc46b572 557
bc46b572 558}
559//---------------------------------------------------------------------
560void AliSTARTv1::DrawDetector()
561{
562//
563// Draw a shaded view of the Forward multiplicity detector version 0
564//
565
566 //Set ALIC mother transparent
567 gMC->Gsatt("ALIC","SEEN",0);
568 //
569 //Set volumes visible
e4da63c2 570 // gMC->Gsatt("0STR","SEEN",0);
571 // gMC->Gsatt("0INS","SEEN",0);
572 // gMC->Gsatt("0PMT","SEEN",1);
573 // gMC->Gsatt("0DIV","SEEN",1);
bc46b572 574 //
d65c9254 575 gMC->Gdopt("hide","off");
bc46b572 576 gMC->Gdopt("shad","on");
577 gMC->SetClipBox(".");
578 gMC->SetClipBox("*",0,1000,-1000,1000,-1000,1000);
579 gMC->DefaultRange();
affef71b 580 gMC->Gdraw("alic",90,0,0,-35,9.5,.6,0.6);
60b0465d 581 //gMC->Gdraw("alic",0,0,0,10,9.5,.8,0.8); //other side view
bc46b572 582 gMC->Gdhead(1111,"T-Zero detector");
583 gMC->Gdopt("hide","off");
584}
585
586//-------------------------------------------------------------------
587void AliSTARTv1::Init()
588{
589// Initialises version 0 of the Forward Multiplicity Detector
590//
591//Int_t *idtmed = gAlice->Idtmed();
592 AliSTART::Init();
60b0465d 593 fIdSens1=gMC->VolId("0REG");
e4da63c2 594
595 AliDebug(1,Form("%s: *** START version 1 initialized ***\n",ClassName()));
596
bc46b572 597}
598
599//-------------------------------------------------------------------
600
601void AliSTARTv1::StepManager()
602{
603 //
604 // Called for every step in the START Detector
605 //
606 Int_t id,copy,copy1;
e4da63c2 607 static Float_t hits[6];
bc46b572 608 static Int_t vol[2];
609 TLorentzVector pos;
610
611 TClonesArray &lhits = *fHits;
612
613 if(!gMC->IsTrackAlive()) return; // particle has disappeared
60b0465d 614
615// If particles is photon then ...
616
617 if (gMC->TrackPid() == 50000050)
e4da63c2 618 {
619 id=gMC->CurrentVolID(copy);
620
621
622 // Check the sensetive volume
623 if(id==fIdSens1 ) {
624 if(gMC->IsTrackEntering()) {
625 gMC->CurrentVolOffID(2,copy);
626 vol[1]=copy;
627 gMC->CurrentVolOffID(3,copy1);
628 vol[0]=copy1;
629
630 gMC->TrackPosition(pos);
631 hits[0] = pos[0];
632 hits[1] = pos[1];
633 hits[2] = pos[2];
634 if(pos[2]<0) vol[0]=2;
635 if(pos[2]>=0) vol[0]=1;
636
637 Float_t etot=gMC->Etot();
638 hits[3]=etot;
639 Int_t iPart= gMC->TrackPid();
640 Int_t partID=gMC->IdFromPDG(iPart);
641 hits[4]=partID;
642 // if (partID!=50) cout<<partID<<endl;
643 Float_t ttime=gMC->TrackTime();
644 hits[5]=ttime*1e9;
645 }
646
647 if(gMC->IsTrackExiting())
648 new(lhits[fNhits++]) AliSTARThit(fIshunt,gAlice->GetMCApp()->GetCurrentTrackNumber(),vol,hits);
649
650 }
724699e1 651 }
bc46b572 652//---------------------------------------------------------------------
653}
654
655
656
657
658
659
660
661
662