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