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