]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSvPPRcoarsesymm.cxx
stdlib.h included to define exit()
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRcoarsesymm.cxx
CommitLineData
69efe7cb 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$Log$
1e9111db 18Revision 1.21 2001/04/04 07:02:16 barbera
19Position of the cylinders holding rails corrected
20
27c5763c 21Revision 1.20 2001/03/29 22:01:53 barbera
22New flag added to change the material for some service supports as asked by the PMD people. Some changes to the services due to the new drawings from the engineers
23
72923d44 24Revision 1.19 2001/03/29 05:28:56 barbera
25Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
26
31683195 27Revision 1.18 2001/03/28 06:40:21 barbera
28Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
29
e4f08ac3 30Revision 1.17 2001/03/13 18:13:30 barbera
31Some mother volumes sligthly modified to eliminate an overlap with the absorber
32
45725ec9 33Revision 1.16 2001/02/09 00:05:31 nilsen
34Added fMajor/MinorVersion variables and made other changes to better make
35use of the new code changes in AliITSgeom related classes.
36
bae7e562 37Revision 1.15 2001/01/30 09:23:13 hristov
38Streamers removed (R.Brun)
39
a8a6107b 40Revision 1.14 2001/01/17 07:41:29 barbera
41Some media parameters modified
42
9cd18c59 43Revision 1.13 2001/01/15 13:13:52 barbera
44Some comments added
45
faec2e21 46Revision 1.12 2000/12/10 16:00:44 barbera
47Added last definition of special media like end-ladder boxes and cones
48
89909db5 49Revision 1.11 2000/10/30 08:02:25 barbera
50PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
51
4ebc1b6a 52Revision 1.3.2.7 2000/10/27 17:20:00 barbera
53Position of rails w.r.t. the interaction point corrected.
54
acb52b3d 55Revision 1.9 2000/10/27 13:31:29 barbera
56Rails between ITS and TPC added.
57
c54243df 58Revision 1.8 2000/10/27 13:03:08 barbera
59Small changes in the SPD volumes and materials
60
6c251614 61Revision 1.6 2000/10/16 14:45:37 barbera
62Mother volume ITSD modified to avoid some overlaps
63
e8031268 64Revision 1.5 2000/10/16 13:49:15 barbera
65Services volumes slightly modified and material added following Pierluigi Barberis' information
66
e6892b92 67Revision 1.4 2000/10/07 15:33:07 barbera
68Small corrections to the ITSV mother volume
69
990d421f 70Revision 1.3 2000/10/07 13:06:50 barbera
71Some new materials and media defined
72
d12d92a5 73Revision 1.2 2000/10/07 10:42:43 barbera
74Mother volume ITSV corrected
75
c6e3abc5 76Revision 1.1 2000/10/06 23:09:12 barbera
77New coarse geometry (symmetric services
78
69efe7cb 79Revision 1.20 2000/10/02 21:28:08 fca
80Removal of useless dependecies via forward declarations
81
82Revision 1.19 2000/07/10 16:07:19 fca
83Release version of ITS code
84
85Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
86fix for bug with HP and Sun unix + fix for event display in ITS-working branch
87
88Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
89Fixed up the comments/documentation.
90
91Revision 1.14 1999/11/25 06:52:56 fca
92Correct value of drca
93
94Revision 1.13.2.1 1999/11/25 06:52:21 fca
95Correct value of drca
96
97Revision 1.13 1999/10/27 11:16:26 fca
98Correction of problem in geometry
99
100Revision 1.12 1999/10/22 08:25:25 fca
101remove double definition of destructors
102
103Revision 1.11 1999/10/22 08:16:49 fca
104Correct destructors, thanks to I.Hrivnacova
105
106Revision 1.10 1999/10/06 19:56:50 fca
107Add destructor
108
109Revision 1.9 1999/10/05 08:05:09 fca
110Minor corrections for uninitialised variables.
111
112Revision 1.8 1999/09/29 09:24:20 fca
113Introduction of the Copyright and cvs Log
114
115*/
116
117///////////////////////////////////////////////////////////////////////////////
118// //
119// Inner Traking System version PPR coarse symmetric //
120// This class contains the base procedures for the Inner Tracking System //
121// //
122// Authors: R. Barbera
123// version 6.
124// Created 2000.
125//
126// NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
127// THIS WILL NOT WORK
128// with the geometry or module classes or any analysis classes. You are
129// strongly encouraged to uses AliITSv5.
130// //
131///////////////////////////////////////////////////////////////////////////////
bae7e562 132#include <iostream.h>
69efe7cb 133#include <TMath.h>
134#include <TRandom.h>
135#include <TVector.h>
136#include <TGeometry.h>
137#include <TNode.h>
138#include <TTUBE.h>
139#include <TFile.h> // only required for Tracking function?
140#include <TCanvas.h>
141#include <TObjArray.h>
142#include <TClonesArray.h>
143
144
145#include "AliMC.h"
146#include "AliMagF.h"
147#include "AliConst.h"
148
149#include "AliITShit.h"
150#include "AliITSvPPRcoarsesymm.h"
151#include "AliRun.h"
152
153
154ClassImp(AliITSvPPRcoarsesymm)
155
156//_____________________________________________________________________________
157AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
158////////////////////////////////////////////////////////////////////////
159// Standard default constructor for the ITS version 7.
160////////////////////////////////////////////////////////////////////////
161
bae7e562 162 fIdN = 0;
163 fIdName = 0;
164 fIdSens = 0;
165 fMajorVersion = 8;
166 fMinorVersion = 0;
69efe7cb 167}
168//_____________________________________________________________________________
169AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
170////////////////////////////////////////////////////////////////////////
171// Standard constructor for the ITS version 7.
172////////////////////////////////////////////////////////////////////////
173
bae7e562 174 fIdN = 6;
175 fIdName = new TString[fIdN];
176 fIdName[0] = "ITS1";
177 fIdName[1] = "ITS2";
178 fIdName[2] = "ITS3";
179 fIdName[3] = "ITS4";
180 fIdName[4] = "ITS5";
181 fIdName[5] = "ITS6";
182 fIdSens = new Int_t[fIdN];
183 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
184 fMajorVersion = 9;
185 fMinorVersion = 0;
69efe7cb 186}
187//____________________________________________________________________________
188AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
189////////////////////////////////////////////////////////////////////////
190// Copy Constructor for ITS version 7.
191////////////////////////////////////////////////////////////////////////
192 if(&source == this) return;
bae7e562 193 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
69efe7cb 194 return;
195}
196//_____________________________________________________________________________
197AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
198////////////////////////////////////////////////////////////////////////
199// Assignment operator for the ITS version 7.
200////////////////////////////////////////////////////////////////////////
201 if(&source == this) return *this;
bae7e562 202 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
69efe7cb 203 return *this;
204}
205//_____________________________________________________________________________
206AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
207////////////////////////////////////////////////////////////////////////
208// Standard destructor for the ITS version 7.
209////////////////////////////////////////////////////////////////////////
210}
211
212//__________________________________________________________________________
213void AliITSvPPRcoarsesymm::BuildGeometry(){
214////////////////////////////////////////////////////////////////////////
215// Geometry builder for the ITS version 7.
216////////////////////////////////////////////////////////////////////////
217 TNode *node, *top;
218 const int kColorITS=kYellow;
219 //
220 top = gAlice->GetGeometry()->GetNode("alice");
221
222 new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
223 top->cd();
224 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
225 node->SetLineColor(kColorITS);
226 fNodes->Add(node);
227
228 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
229 top->cd();
230 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
231 node->SetLineColor(kColorITS);
232 fNodes->Add(node);
233
234 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
235 top->cd();
236 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
237 node->SetLineColor(kColorITS);
238 fNodes->Add(node);
239
240 new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
241 top->cd();
242 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
243 node->SetLineColor(kColorITS);
244 fNodes->Add(node);
245
246 new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
247 top->cd();
248 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
249 node->SetLineColor(kColorITS);
250 fNodes->Add(node);
251
252 new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
253 top->cd();
254 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
255 node->SetLineColor(kColorITS);
256 fNodes->Add(node);
257}
258//_____________________________________________________________________________
259void AliITSvPPRcoarsesymm::CreateGeometry(){
260////////////////////////////////////////////////////////////////////////
261// This routine defines and Creates the geometry for version 7 of the ITS.
262////////////////////////////////////////////////////////////////////////
263
264 //INNER RADII OF THE SILICON LAYERS
6c251614 265 Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
69efe7cb 266 //THICKNESSES OF LAYERS (in % radiation length)
6c251614 267 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
69efe7cb 268 //HALF LENGTHS OF LAYERS
6c251614 269 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
69efe7cb 270 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
89909db5 271 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
69efe7cb 272 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
89909db5 273 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
69efe7cb 274
275
276 Float_t dits[3], rlim, zmax;
277 Float_t zpos;
e4f08ac3 278 Float_t pcits[100], ztpc;
279 Int_t idrotm[1999], i;
280 Float_t dgh[100];
281
282 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
72923d44 283 Int_t suppmat = 0; // flag to change the material of the services
284 // supports (=0 copper, =1 aluminum, =2 carbon)
e4f08ac3 285 rails = GetRails();
286
287 if(rails != 0 && rails != 1) {
1e9111db 288 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
e4f08ac3 289 " The default value of 1 (rails in) will be used." << endl;
e4f08ac3 290 }
69efe7cb 291
72923d44 292 if (rails == 0 ) {
1e9111db 293 cout << "ITS: Rails are out." << endl;
e4f08ac3 294 } else {
1e9111db 295 cout << "ITS: Rails are in." << endl;
72923d44 296 }
297
298 suppmat = GetSupportMaterial();
299
300 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
1e9111db 301 cout << "ITS - WARNING: the flag for the material of services supports is not set neither to 0 (copper) nor to 1 (aluminum) nor to 2 (carbon)."
72923d44 302 " The default value of 0 (copper) will be used." << endl;
303 }
304
305 if (suppmat == 0) {
1e9111db 306 cout << "ITS: The material of the services supports is copper." << endl;
72923d44 307 } else if (suppmat == 1){
1e9111db 308 cout << "ITS: The material of the services supports is aluminum." << endl;
72923d44 309 } else {
1e9111db 310 cout << "ITS: The material of the services supports is carbon." << endl;
72923d44 311 }
312
e4f08ac3 313
69efe7cb 314 Int_t *idtmed = fIdtmed->GetArray()-199;
315
316 // CONVERT INTO CM (RL(SI)=9.36 CM)
317 for (i = 0; i < 6; ++i) {
318 drl[i] = drl[i] / 100. * 9.36;
319 }
320
321 // FIELD CAGE HALF LENGTH
322
1e9111db 323 rlim = 50.;
e4f08ac3 324 zmax = 74.;
325 ztpc = 284.;
69efe7cb 326
c6e3abc5 327 // --- Define ghost volume containing the whole ITS (including services)
328 // and fill it with air
329
330 dgh[0] = 0.;
331 dgh[1] = 360.;
e4f08ac3 332 dgh[2] = 16.;
333 dgh[3] = -ztpc-5.-0.1;
c6e3abc5 334 dgh[4] = 62.4;
335 dgh[5] = 85.;
e4f08ac3 336 dgh[6] = -ztpc;
337 dgh[7] = 62;
c6e3abc5 338 dgh[8] = 85.;
e4f08ac3 339 dgh[9] = -ztpc;
340 dgh[10] = 62;
341 dgh[11] = 62+4.;
342 dgh[12] = -97.5;
343 dgh[13] = 46;
1e9111db 344 dgh[14] = rlim+6;
e4f08ac3 345 dgh[15] = -zmax;
346 dgh[16] = 46;
1e9111db 347 dgh[17] = rlim+6;
e4f08ac3 348 dgh[18] = -48;
349 dgh[19] = 6;
1e9111db 350 dgh[20] = rlim+6;
e4f08ac3 351 dgh[21] = -28.6;
352 dgh[22] = 6;
1e9111db 353 dgh[23] = rlim+6;
e4f08ac3 354 dgh[24] = -27.6;
355 dgh[25] = 3.295;
1e9111db 356 dgh[26] = rlim+6;
e4f08ac3 357 dgh[27] = 27.6;
358 dgh[28] = 3.295;
1e9111db 359 dgh[29] = rlim+6;
e4f08ac3 360 dgh[30] = 28.6;
361 dgh[31] = 6;
1e9111db 362 dgh[32] = rlim+6;
e4f08ac3 363 dgh[33] = 48;
364 dgh[34] = 6;
1e9111db 365 dgh[35] = rlim+6;
e4f08ac3 366 dgh[36] = zmax;
367 dgh[37] = 46;
1e9111db 368 dgh[38] = rlim+6;
e4f08ac3 369 dgh[39] = 97.5;
370 dgh[40] = 46;
1e9111db 371 dgh[41] = rlim+6;
e4f08ac3 372 dgh[42] = ztpc;
373 dgh[43] = 62;
374 dgh[44] = 62+4.;
375 dgh[45] = ztpc;
376 dgh[46] = 62;
377 dgh[47] = 85.;
378 dgh[48] = ztpc+4.+0.1;
379 dgh[49] = 62.4;
380 dgh[50] = 85.;
381 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
c6e3abc5 382
383 // --- Place the ghost volume in its mother volume (ALIC) and make it
384 // invisible
385
386 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
387 //gMC->Gsatt("ITSV", "SEEN", 0);
388
69efe7cb 389
390 // --- Define ghost volume containing the six layers and fill it with air
e4f08ac3 391
69efe7cb 392 dgh[0] = 0.;
393 dgh[1] = 360.;
e4f08ac3 394 dgh[2] = 8.;
395 dgh[3] = -zmax;
45725ec9 396 dgh[4] = 46.;
e4f08ac3 397 dgh[5] = rlim;
398 dgh[6] = -47.5;
399 dgh[7] = 6.005;
400 dgh[8] = rlim;
401 dgh[9] = -28.5;
402 dgh[10] = 6.005;
403 dgh[11] = rlim;
404 dgh[12] = -27.5;
405 dgh[13] = 3.3;
406 dgh[14] = rlim;
407 dgh[15] = 27.5;
408 dgh[16] = 3.3;
409 dgh[17] = rlim;
410 dgh[18] = 28.5;
411 dgh[19] = 6.005;
412 dgh[20] = rlim;
413 dgh[21] = 47.5;
414 dgh[22] = 6.005;
415 dgh[23] = rlim;
416 dgh[24] = zmax;
417 dgh[25] = 46.;
418 dgh[26] = rlim;
419 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
69efe7cb 420
c6e3abc5 421 // --- Place the ghost volume in its mother volume (ALIC) and make it
69efe7cb 422 // invisible
423
c6e3abc5 424 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
e4f08ac3 425 //gMC->Gsatt("ITSD", "SEEN", 0);
69efe7cb 426
427 // ITS LAYERS (SILICON)
428
429 dits[0] = rl[0];
430 dits[1] = rl[0] + drl[0];
431 dits[2] = dzl[0];
432 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
c6e3abc5 433 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 434
435 dits[0] = rl[1];
436 dits[1] = rl[1] + drl[1];
437 dits[2] = dzl[1];
438 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
c6e3abc5 439 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 440
441 dits[0] = rl[2];
442 dits[1] = rl[2] + drl[2];
443 dits[2] = dzl[2];
444 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
c6e3abc5 445 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 446
447 dits[0] = rl[3];
448 dits[1] = rl[3] + drl[3];
449 dits[2] = dzl[3];
450 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
c6e3abc5 451 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 452
453 dits[0] = rl[4];
454 dits[1] = rl[4] + drl[4];
455 dits[2] = dzl[4];
456 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
c6e3abc5 457 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 458
459 dits[0] = rl[5];
460 dits[1] = rl[5] + drl[5];
461 dits[2] = dzl[5];
462 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
c6e3abc5 463 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 464
d12d92a5 465 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
69efe7cb 466
d12d92a5 467 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
468 for (i = 0; i < 2; i++) {
69efe7cb 469 dits[0] = rl[i];
470 dits[1] = dits[0] + drb[i];
471 dits[2] = dzb[i] / 2.;
472 zpos = dzl[i] + dits[2];
d12d92a5 473 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
474 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
69efe7cb 475 }
d12d92a5 476
477 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
478
479 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
89909db5 480 for (i = 2; i < 3; i++) {
481 dits[0] = rl[i]-2.5;
d12d92a5 482 dits[1] = dits[0] + drb[i];
483 dits[2] = dzb[i] / 2.;
484 zpos = dzl[i] + dits[2];
485 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
486 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
487 }
89909db5 488 for (i = 3; i < 4; i++) {
489 dits[0] = rl[i]-1.4;
490 dits[1] = dits[0] + drb[i];
491 dits[2] = dzb[i] / 2.;
492 zpos = dzl[i] + dits[2];
493 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
494 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
495 }
496
d12d92a5 497
498 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
499
500 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
89909db5 501 for (i = 4; i < 5; i++) {
502 dits[0] = rl[i]+1.4;
d12d92a5 503 dits[1] = dits[0] + drb[i];
504 dits[2] = dzb[i] / 2.;
505 zpos = dzl[i] + dits[2];
506 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
507 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
508 }
89909db5 509 for (i = 5; i < 6; i++) {
510 dits[0] = rl[i]+0.4235;
511 dits[1] = dits[0] + drb[i];
512 dits[2] = dzb[i] / 2.;
513 zpos = dzl[i] + dits[2];
514 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
515 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
516 }
69efe7cb 517
6c251614 518 // DEFINE THERMAL SCREEN FOR SPD
69efe7cb 519
6c251614 520 pcits[0] = 8.3;
521 pcits[1] = 8.5;
522 pcits[2] = 42.5;
523 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
524 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 525
69efe7cb 526 // DEFINE END CONES FOR SDD
527
4ebc1b6a 528 pcits[0] = (59.-42.5)/2.;
529 pcits[1] = 8.5;
89909db5 530 pcits[2] = 8.5+0.1;
4ebc1b6a 531 pcits[3] = 28.;
89909db5 532 pcits[4] = 28.+0.1;
9cd18c59 533 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
6c251614 534 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
4ebc1b6a 535 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
536 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
6c251614 537
538 // DEFINE CYLINDER BETWEEN SDD AND SSD
539
540 pcits[0] = (59.5-0.13/2.)/2.;
541 pcits[1] = (59.5+0.13/2.)/2.;
542 pcits[2] = 57.;
faec2e21 543 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
146fb996 544 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
69efe7cb 545
546 // DEFINE END CONES FOR SSD
547
4ebc1b6a 548 pcits[0] = (74.-59.)/2.;
549 pcits[1] = 28.;
89909db5 550 pcits[2] = 28.+0.1;
4ebc1b6a 551 pcits[3] = 47.;
89909db5 552 pcits[4] = 47.+0.1;
9cd18c59 553 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
4ebc1b6a 554 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
555 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
146fb996 556
69efe7cb 557
e4f08ac3 558 // **************************** SERVICES *********************************
559
72923d44 560
4ebc1b6a 561 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
72923d44 562 // UPPER PART
69efe7cb 563
72923d44 564 dgh[0] = 46.;
565 dgh[1] = 46.+1.0;
e8031268 566 dgh[2] = 9.5;
72923d44 567 dgh[3] = 12.;
568 dgh[4] = 168.;
569
570 if (suppmat == 0) {
571 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
572 } else if (suppmat == 1) {
573 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
574 } else {
575 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
576 }
577 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
578 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
579
580 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
581 // LOWER PART
e6892b92 582
72923d44 583 dgh[0] = 46.;
584 dgh[1] = 46.+1.0;
585 dgh[2] = 9.5;
586 dgh[3] = 192.;
587 dgh[4] = 348.;
e6892b92 588
72923d44 589 if (suppmat == 0) {
590 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
591 } else if (suppmat == 1) {
592 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
593 } else {
594 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
595 }
596 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
597 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
598
599
c54243df 600 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
72923d44 601 // UPPER PART
e6892b92 602
72923d44 603 dgh[0] = 46.+1.0;
604 dgh[1] = 46.+1.0+1.5;
e8031268 605 dgh[2] = 9.5;
72923d44 606 dgh[3] = 12.;
607 dgh[4] = 168.;
69efe7cb 608
72923d44 609 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
610 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
611 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
69efe7cb 612
72923d44 613 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
614 // LOWER PART
69efe7cb 615
72923d44 616 dgh[0] = 46.+1.0;
617 dgh[1] = 46.+1.0+1.5;
618 dgh[2] = 9.5;
619 dgh[3] = 192.;
620 dgh[4] = 348.;
621
622 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
623 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
624 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
625
626 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
627 // UPPER PART
628
629 dgh[0] = 46.;
69efe7cb 630 dgh[1] = 56.;
631 dgh[2] = 2.25;
72923d44 632 dgh[3] = 12.;
633 dgh[4] = 168.;
69efe7cb 634
72923d44 635 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
636 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
637 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
638
639
640 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
641 // LOWER PART
642
643 dgh[0] = 46.;
644 dgh[1] = 56.;
645 dgh[2] = 2.25;
646 dgh[3] = 192.;
647 dgh[4] = 348.;
69efe7cb 648
72923d44 649 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
650 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
651 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
652
4ebc1b6a 653 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
654
e4f08ac3 655 dgh[0] = (ztpc-97.5)/2.;
45725ec9 656 dgh[1] = 46.2;
657 dgh[2] = 46.2+1.0;
658 dgh[3] = 62.3;
659 dgh[4] = 62.3+1.0;
4ebc1b6a 660 dgh[5] = 12.;
661 dgh[6] = 168.;
662 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
e4f08ac3 663 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
664 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
4ebc1b6a 665
666 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
667
e4f08ac3 668 dgh[0] = (ztpc-97.5)/2.;
45725ec9 669 dgh[1] = 46.2;
670 dgh[2] = 46.2+1.0;
671 dgh[3] = 62.3;
672 dgh[4] = 62.3+1.0;
4ebc1b6a 673 dgh[5] = 192.;
674 dgh[6] = 348.;
675 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
e4f08ac3 676 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
677 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
4ebc1b6a 678
679 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
680
e4f08ac3 681 dgh[0] = (ztpc-97.5)/2.;
45725ec9 682 dgh[1] = 46.2+1.0;
683 dgh[2] = 46.2+1.0+1.5;
684 dgh[3] = 62.3+1.0;
685 dgh[4] = 62.3+1.0+1.5;
4ebc1b6a 686 dgh[5] = 12.;
687 dgh[6] = 168.;
688 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
e4f08ac3 689 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
690 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
4ebc1b6a 691
692 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
693
e4f08ac3 694 dgh[0] = (ztpc-97.5)/2.;
45725ec9 695 dgh[1] = 46.2+1.0;
696 dgh[2] = 46.2+1.0+1.5;
697 dgh[3] = 62.3+1.0;
698 dgh[4] = 62.3+1.0+1.5;
4ebc1b6a 699 dgh[5] = 192.;
700 dgh[6] = 348.;
701 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
e4f08ac3 702 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
703 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
4ebc1b6a 704
705 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
706
45725ec9 707 dgh[0] = 62.1;
4ebc1b6a 708 dgh[1] = 74.5;
709 dgh[2] = 0.5;
710 dgh[3] = 12.;
711 dgh[4] = 168.;
712 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
e4f08ac3 713 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
714 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
4ebc1b6a 715
716 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
717
45725ec9 718 dgh[0] = 62.1;
4ebc1b6a 719 dgh[1] = 74.5;
720 dgh[2] = 0.5;
721 dgh[3] = 192.;
722 dgh[4] = 348.;
723 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
e4f08ac3 724 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
725 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
4ebc1b6a 726
727 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
728
45725ec9 729 dgh[0] = 62.1;
4ebc1b6a 730 dgh[1] = 74.5;
731 dgh[2] = 0.75;
732 dgh[3] = 12.;
733 dgh[4] = 168.;
734 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
e4f08ac3 735 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
736 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
4ebc1b6a 737
738 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
739
45725ec9 740 dgh[0] = 62.1;
4ebc1b6a 741 dgh[1] = 74.5;
742 dgh[2] = 0.75;
743 dgh[3] = 192.;
744 dgh[4] = 348.;
745 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
e4f08ac3 746 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
747 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
4ebc1b6a 748
749 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
e6892b92 750
4ebc1b6a 751 dgh[0] = 74.5;
752 dgh[1] = 79.5;
753 dgh[2] = 2.5;
754 dgh[3] = 12.;
755 dgh[4] = 168.;
756 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
e4f08ac3 757 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
69efe7cb 758
4ebc1b6a 759 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
69efe7cb 760
761 dgh[0] = 74.5;
762 dgh[1] = 79.5;
763 dgh[2] = 2.5;
4ebc1b6a 764 dgh[3] = 192.;
765 dgh[4] = 348.;
766 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
e4f08ac3 767 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
69efe7cb 768
c54243df 769 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
770
e4f08ac3 771 if (rails == 1) {
772
773 dgh[0] = 2.;
774 dgh[1] = 8.;
775 dgh[2] = 190.;
31683195 776 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
e4f08ac3 777 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
31683195 778 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
e4f08ac3 779 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
780
31683195 781 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
782 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
e4f08ac3 783 dgh[2] = 190.;
784 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
785 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
786 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
787 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
788
789 }
4ebc1b6a 790
791 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
c54243df 792
e4f08ac3 793 dgh[0] = 56.9;
4ebc1b6a 794 dgh[1] = 59.;
e4f08ac3 795 dgh[2] = 0.6;
4ebc1b6a 796 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
27c5763c 797 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
798 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
e4f08ac3 799
800 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
801
802 dgh[0] = 0.;
803 dgh[1] = 3.;
804 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
805 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
806 gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");
807 gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");
808 gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY");
809 gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");
810 gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");
811 gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");
812 gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY");
813 gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");
814
815 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
816
817 dgh[0] = 5.;
818 dgh[1] = 12.;
819 dgh[2] = 5.;
820 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
821 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
822 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
823 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
824
825 dgh[0] = 5.-2.;
826 dgh[1] = 12.-2.;
827 dgh[2] = 5.;
828 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
829 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
830 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
831 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
832
833 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
834
835 dgh[0] = 0.;
836 dgh[1] = 5.;
837 dgh[2] = 2.;
838 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
839 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
840 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
841 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
842
69efe7cb 843 // --- Outputs the geometry tree in the EUCLID/CAD format
844
845 if (fEuclidOut) {
846 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
847 }
848}
849//_____________________________________________________________________________
850void AliITSvPPRcoarsesymm::CreateMaterials(){
851////////////////////////////////////////////////////////////////////////
852 //
853 // Create ITS materials
854 // This function defines the default materials used in the Geant
855 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
e4f08ac3 856 // AliITSvPPRcoarseasymm.
69efe7cb 857 // In general it is automatically replaced by
858 // the CreatMaterials routine defined in AliITSv?. Should the function
859 // CreateMaterials not exist for the geometry version you are using this
860 // one is used. See the definition found in AliITSv5 or the other routine
861 // for a complete definition.
862 //
863 // Water H2O
864 Float_t awat[2] = { 1.00794,15.9994 };
865 Float_t zwat[2] = { 1.,8. };
866 Float_t wwat[2] = { 2.,1. };
867 Float_t denswat = 1.;
868 // Freon
869 Float_t afre[2] = { 12.011,18.9984032 };
870 Float_t zfre[2] = { 6.,9. };
871 Float_t wfre[2] = { 5.,12. };
872 Float_t densfre = 1.5;
873 // Ceramics
874 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
875 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
876 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
877 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
878 Float_t denscer = 3.6;
879 //
880 // 60% SiO2 , 40% G10FR4
881 // PC board
882 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
883 Float_t zpcb[3] = { 14.,8.,8.875 };
884 Float_t wpcb[3] = { .28,.32,.4 };
885 Float_t denspcb = 1.8;
886 // POLYETHYL
887 Float_t apoly[2] = { 12.01,1. };
888 Float_t zpoly[2] = { 6.,1. };
889 Float_t wpoly[2] = { .33,.67 };
d12d92a5 890 // old SERVICES
69efe7cb 891 Float_t zserv[4] = { 1.,6.,26.,29. };
892 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
893 Float_t wserv[4] = { .014,.086,.42,.48 };
d12d92a5 894 // Stainless steel
895 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
896 Float_t zsteel[4] = { 26.,24.,28.,14. };
897 Float_t wsteel[4] = { .715,.18,.1,.005 };
898
69efe7cb 899
900 Int_t isxfld = gAlice->Field()->Integ();
901 Float_t sxmgmx = gAlice->Field()->Max();
902
903
904 // --- Define the various materials for GEANT ---
905
906 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
907
e4f08ac3 908 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
909 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
910 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
911 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
69efe7cb 912 // v. dens
e4f08ac3 913 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
69efe7cb 914 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
e4f08ac3 915 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
69efe7cb 916 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
917 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
e4f08ac3 918 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
919 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
920 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
69efe7cb 921 // **
faec2e21 922 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
923 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
924 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
925 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
926 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
927 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
928 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
929 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
930 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
931 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
932 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
69efe7cb 933
934 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
935
e4f08ac3 936 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
937 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
938 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
939 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
69efe7cb 940 // v. dens
e4f08ac3 941 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
69efe7cb 942 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
e4f08ac3 943 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
69efe7cb 944 // After a call with ratios by number (negative number of elements),
945 // the ratio array is changed to the ratio by weight, so all successive
946 // calls with the same array must specify the number of elements as
947 // positive
948 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
949 // After a call with ratios by number (negative number of elements),
950 // the ratio array is changed to the ratio by weight, so all successive
951 // calls with the same array must specify the number of elements as
952 // positive
953 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
954 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
e4f08ac3 955 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
69efe7cb 956 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
e4f08ac3 957 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
958 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
959 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
31683195 960 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);
e4f08ac3 961 //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.);
962 //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);
963
69efe7cb 964 // **
965 // check A and Z
faec2e21 966 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
967 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
968 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
969 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
970 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
971 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
972 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
973 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
974 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
975 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
31683195 981 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
69efe7cb 982 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
983
984 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
985 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
986 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
987 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
988 // v. dens
e4f08ac3 989 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
69efe7cb 990 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
e4f08ac3 991 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
69efe7cb 992 // After a call with ratios by number (negative number of elements),
993 // the ratio array is changed to the ratio by weight, so all successive
994 // calls with the same array must specify the number of elements as
995 // positive
996 AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
997 // After a call with ratios by number (negative number of elements),
998 // the ratio array is changed to the ratio by weight, so all successive
999 // calls with the same array must specify the number of elements as
1000 // positive
1001 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1002 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1003 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1004 // After a call with ratios by number (negative number of elements),
1005 // the ratio array is changed to the ratio by weight, so all successive
1006 // calls with the same array must specify the number of elements as
1007 // positive
e4f08ac3 1008 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
69efe7cb 1009 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1010 // check A and Z
d12d92a5 1011 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
e4f08ac3 1012 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1013 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1014 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1015 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
69efe7cb 1016 // **
faec2e21 1017 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1018 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1019 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1020 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1021 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1022 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1023 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1024 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1025 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1026 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1032 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
e4f08ac3 1033
69efe7cb 1034 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1035
1036 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1037 // verify density
e4f08ac3 1038 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
69efe7cb 1039 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1040 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1041 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
e4f08ac3 1042 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
69efe7cb 1043 // After a call with ratios by number (negative number of elements),
1044 // the ratio array is changed to the ratio by weight, so all successive
1045 // calls with the same array must specify the number of elements as
1046 // positive
1047 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
e4f08ac3 1048// AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1049// AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1050// AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
d12d92a5 1051 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
e4f08ac3 1052 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1053 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
69efe7cb 1054 // **
1055 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1056 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1057 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1058 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1059 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1060 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1061 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
e4f08ac3 1062// AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1063// AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1064// AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
d12d92a5 1065 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
e6892b92 1066 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
e4f08ac3 1067 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
e6892b92 1068
69efe7cb 1069}
1070//_____________________________________________________________________________
1071void AliITSvPPRcoarsesymm::Init(){
1072////////////////////////////////////////////////////////////////////////
1073// Initialise the ITS after it has been created.
1074////////////////////////////////////////////////////////////////////////
bae7e562 1075 Int_t i;
69efe7cb 1076
bae7e562 1077 cout << endl;
1078 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1079 for(i=0;i<25;i++) cout << "*";cout << endl;
1080//
69efe7cb 1081 AliITS::Init();
bae7e562 1082//
1083 for(i=0;i<72;i++) cout << "*";
1084 cout << endl;
1085
69efe7cb 1086}
1087
1088//_____________________________________________________________________________
1089void AliITSvPPRcoarsesymm::DrawModule(){
1090////////////////////////////////////////////////////////////////////////
1091// Draw a shaded view of the FMD version 6.
1092////////////////////////////////////////////////////////////////////////
1093
1094 // Set everything unseen
1095 gMC->Gsatt("*", "seen", -1);
1096 //
1097 // Set ALIC mother visible
1098 gMC->Gsatt("ALIC","SEEN",0);
1099 //
1100 // Set the volumes visible
1101 gMC->Gsatt("ITSD","SEEN",0);
1102 gMC->Gsatt("ITS1","SEEN",1);
1103 gMC->Gsatt("ITS2","SEEN",1);
1104 gMC->Gsatt("ITS3","SEEN",1);
1105 gMC->Gsatt("ITS4","SEEN",1);
1106 gMC->Gsatt("ITS5","SEEN",1);
1107 gMC->Gsatt("ITS6","SEEN",1);
1108
1109 gMC->Gsatt("IPCB","SEEN",1);
1110 gMC->Gsatt("ICO2","SEEN",1);
1111 gMC->Gsatt("ICER","SEEN",0);
1112 gMC->Gsatt("ISI2","SEEN",0);
1113 gMC->Gsatt("IPLA","SEEN",0);
1114 gMC->Gsatt("ICO3","SEEN",0);
1115 gMC->Gsatt("IEPX","SEEN",0);
1116 gMC->Gsatt("ISI3","SEEN",1);
1117 gMC->Gsatt("ISUP","SEEN",0);
1118 gMC->Gsatt("ICHO","SEEN",0);
1119 gMC->Gsatt("ICMO","SEEN",0);
1120 gMC->Gsatt("ICMD","SEEN",0);
1121 gMC->Gsatt("ICCO","SEEN",1);
1122 gMC->Gsatt("ICCM","SEEN",0);
1123 gMC->Gsatt("ITMD","SEEN",0);
1124 gMC->Gsatt("ITTT","SEEN",1);
1125
1126 //
1127 gMC->Gdopt("hide", "on");
1128 gMC->Gdopt("shad", "on");
1129 gMC->Gsatt("*", "fill", 7);
1130 gMC->SetClipBox(".");
1131 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1132 gMC->DefaultRange();
1133 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1134 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1135 gMC->Gdman(17, 6, "MAN");
1136}
1137//_____________________________________________________________________________
1138void AliITSvPPRcoarsesymm::StepManager(){
1139////////////////////////////////////////////////////////////////////////
1140// Called for every step in the ITS, then calls the AliITShit class
1141// creator with the information to be recoreded about that hit.
1142////////////////////////////////////////////////////////////////////////
c6e3abc5 1143
1144/*
69efe7cb 1145 Int_t copy, id;
1146 Float_t hits[8];
1147 Int_t vol[4];
1148 TLorentzVector position, momentum;
1149// TClonesArray &lhits = *fHits;
1150//
1151// no hits for this coarse symmetric version.
1152//
1153
1154 //
1155 // Track status
1156 vol[3] = 0;
1157 if(gMC->IsTrackInside()) vol[3] += 1;
1158 if(gMC->IsTrackEntering()) vol[3] += 2;
1159 if(gMC->IsTrackExiting()) vol[3] += 4;
1160 if(gMC->IsTrackOut()) vol[3] += 8;
1161 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1162 if(gMC->IsTrackStop()) vol[3] += 32;
1163 if(gMC->IsTrackAlive()) vol[3] += 64;
1164 //
1165 // Fill hit structure.
1166 if( !(gMC->TrackCharge()) ) return;
1167 //
1168 // Only entering charged tracks
1169 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1170 vol[0]=1;
1171 id=gMC->CurrentVolOffID(1,copy);
1172 vol[1]=copy;
1173 id=gMC->CurrentVolOffID(2,copy);
1174 vol[2]=copy;
1175 } else if(id==fIdSens[1]) {
1176 vol[0]=2;
1177 id=gMC->CurrentVolOffID(1,copy);
1178 vol[1]=copy;
1179 id=gMC->CurrentVolOffID(2,copy);
1180 vol[2]=copy;
1181 } else if(id==fIdSens[2]) {
1182 vol[0]=3;
1183 vol[1]=copy;
1184 id=gMC->CurrentVolOffID(1,copy);
1185 vol[2]=copy;
1186 } else if(id==fIdSens[3]) {
1187 vol[0]=4;
1188 vol[1]=copy;
1189 id=gMC->CurrentVolOffID(1,copy);
1190 vol[2]=copy;
1191 } else if(id==fIdSens[4]) {
1192 vol[0]=5;
1193 vol[1]=copy;
1194 id=gMC->CurrentVolOffID(1,copy);
1195 vol[2]=copy;
1196 } else if(id==fIdSens[5]) {
1197 vol[0]=6;
1198 vol[1]=copy;
1199 id=gMC->CurrentVolOffID(1,copy);
1200 vol[2]=copy;
1201 } else return;
1202 gMC->TrackPosition(position);
1203 gMC->TrackMomentum(momentum);
1204 hits[0]=position[0];
1205 hits[1]=position[1];
1206 hits[2]=position[2];
1207 hits[3]=momentum[0];
1208 hits[4]=momentum[1];
1209 hits[5]=momentum[2];
1210 hits[6]=gMC->Edep();
1211 hits[7]=gMC->TrackTime();
1212// new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1213//
1214// no hits for this coarse symmetric version.
1215//
c6e3abc5 1216*/
69efe7cb 1217}