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