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