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