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