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