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