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