1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.21 2001/04/04 07:02:16 barbera
19 Position of the cylinders holding rails corrected
21 Revision 1.20 2001/03/29 22:01:53 barbera
22 New 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
24 Revision 1.19 2001/03/29 05:28:56 barbera
25 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
27 Revision 1.18 2001/03/28 06:40:21 barbera
28 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
30 Revision 1.17 2001/03/13 18:13:30 barbera
31 Some mother volumes sligthly modified to eliminate an overlap with the absorber
33 Revision 1.16 2001/02/09 00:05:31 nilsen
34 Added fMajor/MinorVersion variables and made other changes to better make
35 use of the new code changes in AliITSgeom related classes.
37 Revision 1.15 2001/01/30 09:23:13 hristov
38 Streamers removed (R.Brun)
40 Revision 1.14 2001/01/17 07:41:29 barbera
41 Some media parameters modified
43 Revision 1.13 2001/01/15 13:13:52 barbera
46 Revision 1.12 2000/12/10 16:00:44 barbera
47 Added last definition of special media like end-ladder boxes and cones
49 Revision 1.11 2000/10/30 08:02:25 barbera
50 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
52 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
53 Position of rails w.r.t. the interaction point corrected.
55 Revision 1.9 2000/10/27 13:31:29 barbera
56 Rails between ITS and TPC added.
58 Revision 1.8 2000/10/27 13:03:08 barbera
59 Small changes in the SPD volumes and materials
61 Revision 1.6 2000/10/16 14:45:37 barbera
62 Mother volume ITSD modified to avoid some overlaps
64 Revision 1.5 2000/10/16 13:49:15 barbera
65 Services volumes slightly modified and material added following Pierluigi Barberis' information
67 Revision 1.4 2000/10/07 15:33:07 barbera
68 Small corrections to the ITSV mother volume
70 Revision 1.3 2000/10/07 13:06:50 barbera
71 Some new materials and media defined
73 Revision 1.2 2000/10/07 10:42:43 barbera
74 Mother volume ITSV corrected
76 Revision 1.1 2000/10/06 23:09:12 barbera
77 New coarse geometry (symmetric services
79 Revision 1.20 2000/10/02 21:28:08 fca
80 Removal of useless dependecies via forward declarations
82 Revision 1.19 2000/07/10 16:07:19 fca
83 Release version of ITS code
85 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
86 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
88 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
89 Fixed up the comments/documentation.
91 Revision 1.14 1999/11/25 06:52:56 fca
94 Revision 1.13.2.1 1999/11/25 06:52:21 fca
97 Revision 1.13 1999/10/27 11:16:26 fca
98 Correction of problem in geometry
100 Revision 1.12 1999/10/22 08:25:25 fca
101 remove double definition of destructors
103 Revision 1.11 1999/10/22 08:16:49 fca
104 Correct destructors, thanks to I.Hrivnacova
106 Revision 1.10 1999/10/06 19:56:50 fca
109 Revision 1.9 1999/10/05 08:05:09 fca
110 Minor corrections for uninitialised variables.
112 Revision 1.8 1999/09/29 09:24:20 fca
113 Introduction of the Copyright and cvs Log
117 ///////////////////////////////////////////////////////////////////////////////
119 // Inner Traking System version PPR coarse symmetric //
120 // This class contains the base procedures for the Inner Tracking System //
122 // Authors: R. Barbera
126 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
127 // THIS WILL NOT WORK
128 // with the geometry or module classes or any analysis classes. You are
129 // strongly encouraged to uses AliITSv5.
131 ///////////////////////////////////////////////////////////////////////////////
132 #include <iostream.h>
136 #include <TGeometry.h>
139 #include <TFile.h> // only required for Tracking function?
141 #include <TObjArray.h>
142 #include <TClonesArray.h>
147 #include "AliConst.h"
149 #include "AliITShit.h"
150 #include "AliITSvPPRcoarsesymm.h"
154 ClassImp(AliITSvPPRcoarsesymm)
156 //_____________________________________________________________________________
157 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
158 ////////////////////////////////////////////////////////////////////////
159 // Standard default constructor for the ITS version 7.
160 ////////////////////////////////////////////////////////////////////////
168 //_____________________________________________________________________________
169 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
170 ////////////////////////////////////////////////////////////////////////
171 // Standard constructor for the ITS version 7.
172 ////////////////////////////////////////////////////////////////////////
175 fIdName = new TString[fIdN];
182 fIdSens = new Int_t[fIdN];
183 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
187 //____________________________________________________________________________
188 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
189 ////////////////////////////////////////////////////////////////////////
190 // Copy Constructor for ITS version 7.
191 ////////////////////////////////////////////////////////////////////////
192 if(&source == this) return;
193 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
196 //_____________________________________________________________________________
197 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
198 ////////////////////////////////////////////////////////////////////////
199 // Assignment operator for the ITS version 7.
200 ////////////////////////////////////////////////////////////////////////
201 if(&source == this) return *this;
202 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
205 //_____________________________________________________________________________
206 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
207 ////////////////////////////////////////////////////////////////////////
208 // Standard destructor for the ITS version 7.
209 ////////////////////////////////////////////////////////////////////////
212 //__________________________________________________________________________
213 void AliITSvPPRcoarsesymm::BuildGeometry(){
214 ////////////////////////////////////////////////////////////////////////
215 // Geometry builder for the ITS version 7.
216 ////////////////////////////////////////////////////////////////////////
218 const int kColorITS=kYellow;
220 top = gAlice->GetGeometry()->GetNode("alice");
222 new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
224 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
225 node->SetLineColor(kColorITS);
228 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
230 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
231 node->SetLineColor(kColorITS);
234 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
236 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
237 node->SetLineColor(kColorITS);
240 new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
242 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
243 node->SetLineColor(kColorITS);
246 new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
248 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
249 node->SetLineColor(kColorITS);
252 new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
254 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
255 node->SetLineColor(kColorITS);
258 //_____________________________________________________________________________
259 void AliITSvPPRcoarsesymm::CreateGeometry(){
260 ////////////////////////////////////////////////////////////////////////
261 // This routine defines and Creates the geometry for version 7 of the ITS.
262 ////////////////////////////////////////////////////////////////////////
264 //INNER RADII OF THE SILICON LAYERS
265 Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
266 //THICKNESSES OF LAYERS (in % radiation length)
267 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
268 //HALF LENGTHS OF LAYERS
269 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
270 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
271 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
272 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
273 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
276 Float_t dits[3], rlim, zmax;
278 Float_t pcits[100], ztpc;
279 Int_t idrotm[1999], i;
282 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
283 Int_t suppmat = 0; // flag to change the material of the services
284 // supports (=0 copper, =1 aluminum, =2 carbon)
287 if(rails != 0 && rails != 1) {
288 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
289 " The default value of 1 (rails in) will be used." << endl;
293 cout << "ITS: Rails are out." << endl;
295 cout << "ITS: Rails are in." << endl;
298 suppmat = GetSupportMaterial();
300 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
301 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)."
302 " The default value of 0 (copper) will be used." << endl;
306 cout << "ITS: The material of the services supports is copper." << endl;
307 } else if (suppmat == 1){
308 cout << "ITS: The material of the services supports is aluminum." << endl;
310 cout << "ITS: The material of the services supports is carbon." << endl;
314 Int_t *idtmed = fIdtmed->GetArray()-199;
316 // CONVERT INTO CM (RL(SI)=9.36 CM)
317 for (i = 0; i < 6; ++i) {
318 drl[i] = drl[i] / 100. * 9.36;
321 // FIELD CAGE HALF LENGTH
327 // --- Define ghost volume containing the whole ITS (including services)
328 // and fill it with air
333 dgh[3] = -ztpc-5.-0.1;
378 dgh[48] = ztpc+4.+0.1;
381 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
383 // --- Place the ghost volume in its mother volume (ALIC) and make it
386 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
387 //gMC->Gsatt("ITSV", "SEEN", 0);
390 // --- Define ghost volume containing the six layers and fill it with air
419 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
421 // --- Place the ghost volume in its mother volume (ALIC) and make it
424 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
425 //gMC->Gsatt("ITSD", "SEEN", 0);
427 // ITS LAYERS (SILICON)
430 dits[1] = rl[0] + drl[0];
432 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
433 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
436 dits[1] = rl[1] + drl[1];
438 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
439 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
442 dits[1] = rl[2] + drl[2];
444 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
445 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
448 dits[1] = rl[3] + drl[3];
450 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
451 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
454 dits[1] = rl[4] + drl[4];
456 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
457 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
460 dits[1] = rl[5] + drl[5];
462 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
463 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
465 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
467 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
468 for (i = 0; i < 2; i++) {
470 dits[1] = dits[0] + drb[i];
471 dits[2] = dzb[i] / 2.;
472 zpos = dzl[i] + dits[2];
473 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
474 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
477 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
479 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
480 for (i = 2; i < 3; i++) {
482 dits[1] = dits[0] + drb[i];
483 dits[2] = dzb[i] / 2.;
484 zpos = dzl[i] + dits[2];
485 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
486 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
488 for (i = 3; i < 4; i++) {
490 dits[1] = dits[0] + drb[i];
491 dits[2] = dzb[i] / 2.;
492 zpos = dzl[i] + dits[2];
493 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
494 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
498 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
500 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
501 for (i = 4; i < 5; i++) {
503 dits[1] = dits[0] + drb[i];
504 dits[2] = dzb[i] / 2.;
505 zpos = dzl[i] + dits[2];
506 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
507 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
509 for (i = 5; i < 6; i++) {
510 dits[0] = rl[i]+0.4235;
511 dits[1] = dits[0] + drb[i];
512 dits[2] = dzb[i] / 2.;
513 zpos = dzl[i] + dits[2];
514 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
515 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
518 // DEFINE THERMAL SCREEN FOR SPD
523 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
524 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
526 // DEFINE END CONES FOR SDD
528 pcits[0] = (59.-42.5)/2.;
533 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
534 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
535 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
536 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
538 // DEFINE CYLINDER BETWEEN SDD AND SSD
540 pcits[0] = (59.5-0.13/2.)/2.;
541 pcits[1] = (59.5+0.13/2.)/2.;
543 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
544 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
546 // DEFINE END CONES FOR SSD
548 pcits[0] = (74.-59.)/2.;
553 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
554 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
555 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
558 // **************************** SERVICES *********************************
561 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
571 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
572 } else if (suppmat == 1) {
573 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
575 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
577 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
578 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
580 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
590 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
591 } else if (suppmat == 1) {
592 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
594 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
596 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
597 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
600 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
604 dgh[1] = 46.+1.0+1.5;
609 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
610 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
611 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
613 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
617 dgh[1] = 46.+1.0+1.5;
622 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
623 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
624 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
626 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
635 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
636 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
637 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
640 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
649 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
650 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
651 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
653 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
655 dgh[0] = (ztpc-97.5)/2.;
662 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
663 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
664 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
666 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
668 dgh[0] = (ztpc-97.5)/2.;
675 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
676 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
677 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
679 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
681 dgh[0] = (ztpc-97.5)/2.;
683 dgh[2] = 46.2+1.0+1.5;
685 dgh[4] = 62.3+1.0+1.5;
688 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
689 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
690 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
692 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
694 dgh[0] = (ztpc-97.5)/2.;
696 dgh[2] = 46.2+1.0+1.5;
698 dgh[4] = 62.3+1.0+1.5;
701 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
702 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
703 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
705 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
712 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
713 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
714 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
716 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
723 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
724 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
725 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
727 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
734 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
735 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
736 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
738 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
745 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
746 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
747 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
749 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
756 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
757 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
759 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
766 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
767 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
769 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
776 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
777 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
778 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
779 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
781 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
782 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
784 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
785 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
786 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
787 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
791 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
796 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
797 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
798 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
800 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
804 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
805 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
806 gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");
807 gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");
808 gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY");
809 gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");
810 gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");
811 gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");
812 gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY");
813 gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");
815 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
820 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
821 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
822 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
823 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
828 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
829 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
830 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
831 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
833 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
838 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
839 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
840 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
841 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
843 // --- Outputs the geometry tree in the EUCLID/CAD format
846 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
849 //_____________________________________________________________________________
850 void AliITSvPPRcoarsesymm::CreateMaterials(){
851 ////////////////////////////////////////////////////////////////////////
853 // Create ITS materials
854 // This function defines the default materials used in the Geant
855 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
856 // AliITSvPPRcoarseasymm.
857 // In general it is automatically replaced by
858 // the CreatMaterials routine defined in AliITSv?. Should the function
859 // CreateMaterials not exist for the geometry version you are using this
860 // one is used. See the definition found in AliITSv5 or the other routine
861 // for a complete definition.
864 Float_t awat[2] = { 1.00794,15.9994 };
865 Float_t zwat[2] = { 1.,8. };
866 Float_t wwat[2] = { 2.,1. };
867 Float_t denswat = 1.;
869 Float_t afre[2] = { 12.011,18.9984032 };
870 Float_t zfre[2] = { 6.,9. };
871 Float_t wfre[2] = { 5.,12. };
872 Float_t densfre = 1.5;
874 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
875 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
876 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
877 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
878 Float_t denscer = 3.6;
880 // 60% SiO2 , 40% G10FR4
882 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
883 Float_t zpcb[3] = { 14.,8.,8.875 };
884 Float_t wpcb[3] = { .28,.32,.4 };
885 Float_t denspcb = 1.8;
887 Float_t apoly[2] = { 12.01,1. };
888 Float_t zpoly[2] = { 6.,1. };
889 Float_t wpoly[2] = { .33,.67 };
891 Float_t zserv[4] = { 1.,6.,26.,29. };
892 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
893 Float_t wserv[4] = { .014,.086,.42,.48 };
895 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
896 Float_t zsteel[4] = { 26.,24.,28.,14. };
897 Float_t wsteel[4] = { .715,.18,.1,.005 };
900 Int_t isxfld = gAlice->Field()->Integ();
901 Float_t sxmgmx = gAlice->Field()->Max();
904 // --- Define the various materials for GEANT ---
906 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
908 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
909 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
910 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
911 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
913 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
914 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
915 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
916 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
917 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
918 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
919 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
920 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
922 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
923 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
924 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
925 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
926 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
927 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
928 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
929 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
930 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
931 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
932 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
934 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
936 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
937 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
938 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
939 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
941 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
942 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
943 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
944 // After a call with ratios by number (negative number of elements),
945 // the ratio array is changed to the ratio by weight, so all successive
946 // calls with the same array must specify the number of elements as
948 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
949 // After a call with ratios by number (negative number of elements),
950 // the ratio array is changed to the ratio by weight, so all successive
951 // calls with the same array must specify the number of elements as
953 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
954 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
955 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
956 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
957 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
958 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
959 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
960 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);
961 //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.);
962 //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);
966 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
967 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
968 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
969 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
970 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
971 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
972 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
973 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
974 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
975 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
981 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
982 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
984 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
985 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
986 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
987 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
989 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
990 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
991 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
992 // After a call with ratios by number (negative number of elements),
993 // the ratio array is changed to the ratio by weight, so all successive
994 // calls with the same array must specify the number of elements as
996 AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
997 // After a call with ratios by number (negative number of elements),
998 // the ratio array is changed to the ratio by weight, so all successive
999 // calls with the same array must specify the number of elements as
1001 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1002 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1003 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1004 // After a call with ratios by number (negative number of elements),
1005 // the ratio array is changed to the ratio by weight, so all successive
1006 // calls with the same array must specify the number of elements as
1008 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1009 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1011 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1012 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1013 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1014 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1015 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1017 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1018 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1019 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1020 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1021 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1022 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1023 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1024 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1025 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1026 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1032 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1034 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1036 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1038 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1039 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1040 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1041 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1042 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1043 // After a call with ratios by number (negative number of elements),
1044 // the ratio array is changed to the ratio by weight, so all successive
1045 // calls with the same array must specify the number of elements as
1047 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1048 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1049 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1050 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1051 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1052 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1053 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1055 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1056 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1057 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1058 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1059 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1060 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1061 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1062 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1063 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1064 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1065 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1066 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1067 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070 //_____________________________________________________________________________
1071 void AliITSvPPRcoarsesymm::Init(){
1072 ////////////////////////////////////////////////////////////////////////
1073 // Initialise the ITS after it has been created.
1074 ////////////////////////////////////////////////////////////////////////
1078 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1079 for(i=0;i<25;i++) cout << "*";cout << endl;
1083 for(i=0;i<72;i++) cout << "*";
1088 //_____________________________________________________________________________
1089 void AliITSvPPRcoarsesymm::DrawModule(){
1090 ////////////////////////////////////////////////////////////////////////
1091 // Draw a shaded view of the FMD version 6.
1092 ////////////////////////////////////////////////////////////////////////
1094 // Set everything unseen
1095 gMC->Gsatt("*", "seen", -1);
1097 // Set ALIC mother visible
1098 gMC->Gsatt("ALIC","SEEN",0);
1100 // Set the volumes visible
1101 gMC->Gsatt("ITSD","SEEN",0);
1102 gMC->Gsatt("ITS1","SEEN",1);
1103 gMC->Gsatt("ITS2","SEEN",1);
1104 gMC->Gsatt("ITS3","SEEN",1);
1105 gMC->Gsatt("ITS4","SEEN",1);
1106 gMC->Gsatt("ITS5","SEEN",1);
1107 gMC->Gsatt("ITS6","SEEN",1);
1109 gMC->Gsatt("IPCB","SEEN",1);
1110 gMC->Gsatt("ICO2","SEEN",1);
1111 gMC->Gsatt("ICER","SEEN",0);
1112 gMC->Gsatt("ISI2","SEEN",0);
1113 gMC->Gsatt("IPLA","SEEN",0);
1114 gMC->Gsatt("ICO3","SEEN",0);
1115 gMC->Gsatt("IEPX","SEEN",0);
1116 gMC->Gsatt("ISI3","SEEN",1);
1117 gMC->Gsatt("ISUP","SEEN",0);
1118 gMC->Gsatt("ICHO","SEEN",0);
1119 gMC->Gsatt("ICMO","SEEN",0);
1120 gMC->Gsatt("ICMD","SEEN",0);
1121 gMC->Gsatt("ICCO","SEEN",1);
1122 gMC->Gsatt("ICCM","SEEN",0);
1123 gMC->Gsatt("ITMD","SEEN",0);
1124 gMC->Gsatt("ITTT","SEEN",1);
1127 gMC->Gdopt("hide", "on");
1128 gMC->Gdopt("shad", "on");
1129 gMC->Gsatt("*", "fill", 7);
1130 gMC->SetClipBox(".");
1131 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1132 gMC->DefaultRange();
1133 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1134 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1135 gMC->Gdman(17, 6, "MAN");
1137 //_____________________________________________________________________________
1138 void AliITSvPPRcoarsesymm::StepManager(){
1139 ////////////////////////////////////////////////////////////////////////
1140 // Called for every step in the ITS, then calls the AliITShit class
1141 // creator with the information to be recoreded about that hit.
1142 ////////////////////////////////////////////////////////////////////////
1148 TLorentzVector position, momentum;
1149 // TClonesArray &lhits = *fHits;
1151 // no hits for this coarse symmetric version.
1157 if(gMC->IsTrackInside()) vol[3] += 1;
1158 if(gMC->IsTrackEntering()) vol[3] += 2;
1159 if(gMC->IsTrackExiting()) vol[3] += 4;
1160 if(gMC->IsTrackOut()) vol[3] += 8;
1161 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1162 if(gMC->IsTrackStop()) vol[3] += 32;
1163 if(gMC->IsTrackAlive()) vol[3] += 64;
1165 // Fill hit structure.
1166 if( !(gMC->TrackCharge()) ) return;
1168 // Only entering charged tracks
1169 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1171 id=gMC->CurrentVolOffID(1,copy);
1173 id=gMC->CurrentVolOffID(2,copy);
1175 } else if(id==fIdSens[1]) {
1177 id=gMC->CurrentVolOffID(1,copy);
1179 id=gMC->CurrentVolOffID(2,copy);
1181 } else if(id==fIdSens[2]) {
1184 id=gMC->CurrentVolOffID(1,copy);
1186 } else if(id==fIdSens[3]) {
1189 id=gMC->CurrentVolOffID(1,copy);
1191 } else if(id==fIdSens[4]) {
1194 id=gMC->CurrentVolOffID(1,copy);
1196 } else if(id==fIdSens[5]) {
1199 id=gMC->CurrentVolOffID(1,copy);
1202 gMC->TrackPosition(position);
1203 gMC->TrackMomentum(momentum);
1204 hits[0]=position[0];
1205 hits[1]=position[1];
1206 hits[2]=position[2];
1207 hits[3]=momentum[0];
1208 hits[4]=momentum[1];
1209 hits[5]=momentum[2];
1210 hits[6]=gMC->Edep();
1211 hits[7]=gMC->TrackTime();
1212 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1214 // no hits for this coarse symmetric version.