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