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.23 2001/05/03 08:40:15 barbera
19 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
21 Revision 1.21 2001/04/04 07:02:16 barbera
22 Position of the cylinders holding rails corrected
24 Revision 1.20 2001/03/29 22:01:53 barbera
25 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
27 Revision 1.19 2001/03/29 05:28:56 barbera
28 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
30 Revision 1.18 2001/03/28 06:40:21 barbera
31 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
33 Revision 1.17 2001/03/13 18:13:30 barbera
34 Some mother volumes sligthly modified to eliminate an overlap with the absorber
36 Revision 1.16 2001/02/09 00:05:31 nilsen
37 Added fMajor/MinorVersion variables and made other changes to better make
38 use of the new code changes in AliITSgeom related classes.
40 Revision 1.15 2001/01/30 09:23:13 hristov
41 Streamers removed (R.Brun)
43 Revision 1.14 2001/01/17 07:41:29 barbera
44 Some media parameters modified
46 Revision 1.13 2001/01/15 13:13:52 barbera
49 Revision 1.12 2000/12/10 16:00:44 barbera
50 Added last definition of special media like end-ladder boxes and cones
52 Revision 1.11 2000/10/30 08:02:25 barbera
53 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
55 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
56 Position of rails w.r.t. the interaction point corrected.
58 Revision 1.9 2000/10/27 13:31:29 barbera
59 Rails between ITS and TPC added.
61 Revision 1.8 2000/10/27 13:03:08 barbera
62 Small changes in the SPD volumes and materials
64 Revision 1.6 2000/10/16 14:45:37 barbera
65 Mother volume ITSD modified to avoid some overlaps
67 Revision 1.5 2000/10/16 13:49:15 barbera
68 Services volumes slightly modified and material added following Pierluigi Barberis' information
70 Revision 1.4 2000/10/07 15:33:07 barbera
71 Small corrections to the ITSV mother volume
73 Revision 1.3 2000/10/07 13:06:50 barbera
74 Some new materials and media defined
76 Revision 1.2 2000/10/07 10:42:43 barbera
77 Mother volume ITSV corrected
79 Revision 1.1 2000/10/06 23:09:12 barbera
80 New coarse geometry (symmetric services
82 Revision 1.20 2000/10/02 21:28:08 fca
83 Removal of useless dependecies via forward declarations
85 Revision 1.19 2000/07/10 16:07:19 fca
86 Release version of ITS code
88 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
89 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
91 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
92 Fixed up the comments/documentation.
94 Revision 1.14 1999/11/25 06:52:56 fca
97 Revision 1.13.2.1 1999/11/25 06:52:21 fca
100 Revision 1.13 1999/10/27 11:16:26 fca
101 Correction of problem in geometry
103 Revision 1.12 1999/10/22 08:25:25 fca
104 remove double definition of destructors
106 Revision 1.11 1999/10/22 08:16:49 fca
107 Correct destructors, thanks to I.Hrivnacova
109 Revision 1.10 1999/10/06 19:56:50 fca
112 Revision 1.9 1999/10/05 08:05:09 fca
113 Minor corrections for uninitialised variables.
115 Revision 1.8 1999/09/29 09:24:20 fca
116 Introduction of the Copyright and cvs Log
120 ///////////////////////////////////////////////////////////////////////////////
122 // Inner Traking System version PPR coarse symmetric //
123 // This class contains the base procedures for the Inner Tracking System //
125 // Authors: R. Barbera
129 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
130 // THIS WILL NOT WORK
131 // with the geometry or module classes or any analysis classes. You are
132 // strongly encouraged to uses AliITSv5.
134 ///////////////////////////////////////////////////////////////////////////////
135 #include <iostream.h>
139 #include <TGeometry.h>
142 #include <TFile.h> // only required for Tracking function?
144 #include <TObjArray.h>
145 #include <TClonesArray.h>
150 #include "AliConst.h"
152 #include "AliITShit.h"
153 #include "AliITSvPPRcoarsesymm.h"
157 ClassImp(AliITSvPPRcoarsesymm)
159 //_____________________________________________________________________________
160 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
161 ////////////////////////////////////////////////////////////////////////
162 // Standard default constructor for the ITS version 7.
163 ////////////////////////////////////////////////////////////////////////
171 //_____________________________________________________________________________
172 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
173 ////////////////////////////////////////////////////////////////////////
174 // Standard constructor for the ITS version 7.
175 ////////////////////////////////////////////////////////////////////////
178 fIdName = new TString[fIdN];
185 fIdSens = new Int_t[fIdN];
186 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
190 //____________________________________________________________________________
191 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
192 ////////////////////////////////////////////////////////////////////////
193 // Copy Constructor for ITS version 7.
194 ////////////////////////////////////////////////////////////////////////
195 if(&source == this) return;
196 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
199 //_____________________________________________________________________________
200 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
201 ////////////////////////////////////////////////////////////////////////
202 // Assignment operator for the ITS version 7.
203 ////////////////////////////////////////////////////////////////////////
204 if(&source == this) return *this;
205 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
208 //_____________________________________________________________________________
209 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
210 ////////////////////////////////////////////////////////////////////////
211 // Standard destructor for the ITS version 7.
212 ////////////////////////////////////////////////////////////////////////
215 //__________________________________________________________________________
216 void AliITSvPPRcoarsesymm::BuildGeometry(){
217 ////////////////////////////////////////////////////////////////////////
218 // Geometry builder for the ITS version 7.
219 ////////////////////////////////////////////////////////////////////////
221 const int kColorITS=kYellow;
223 top = gAlice->GetGeometry()->GetNode("alice");
225 new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
227 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
228 node->SetLineColor(kColorITS);
231 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
233 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
234 node->SetLineColor(kColorITS);
237 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
239 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
240 node->SetLineColor(kColorITS);
243 new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
245 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
246 node->SetLineColor(kColorITS);
249 new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
251 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
252 node->SetLineColor(kColorITS);
255 new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
257 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
258 node->SetLineColor(kColorITS);
261 //_____________________________________________________________________________
262 void AliITSvPPRcoarsesymm::CreateGeometry(){
263 ////////////////////////////////////////////////////////////////////////
264 // This routine defines and Creates the geometry for version 7 of the ITS.
265 ////////////////////////////////////////////////////////////////////////
267 //INNER RADII OF THE SILICON LAYERS
268 Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
269 //THICKNESSES OF LAYERS (in % radiation length)
270 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
271 //HALF LENGTHS OF LAYERS
272 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
273 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
274 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
275 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
276 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
279 Float_t dits[3], rlim, zmax;
281 Float_t pcits[100], ztpc;
282 Int_t idrotm[1999], i;
285 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
286 Int_t suppmat = 0; // flag to change the material of the services
287 // supports (=0 copper, =1 aluminum, =2 carbon)
290 if(rails != 0 && rails != 1) {
291 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
292 " The default value of 1 (rails in) will be used." << endl;
296 cout << "ITS: Rails are out." << endl;
298 cout << "ITS: Rails are in." << endl;
301 suppmat = GetSupportMaterial();
303 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
304 cout << "ITS - WARNING: the flag for the material of services supports is not set neither to 0 (copper) nor to 1 (aluminum) nor to 2 (carbon)."
305 " The default value of 0 (copper) will be used." << endl;
309 cout << "ITS: The material of the services supports is copper." << endl;
310 } else if (suppmat == 1){
311 cout << "ITS: The material of the services supports is aluminum." << endl;
313 cout << "ITS: The material of the services supports is carbon." << endl;
317 Int_t *idtmed = fIdtmed->GetArray()-199;
319 // CONVERT INTO CM (RL(SI)=9.36 CM)
320 for (i = 0; i < 6; ++i) {
321 drl[i] = drl[i] / 100. * 9.36;
324 // FIELD CAGE HALF LENGTH
330 // --- Define ghost volume containing the whole ITS (including services)
331 // and fill it with air
336 dgh[3] = -ztpc-5.-0.1;
381 dgh[48] = ztpc+4.+0.1;
384 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
386 // --- Place the ghost volume in its mother volume (ALIC) and make it
389 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
390 //gMC->Gsatt("ITSV", "SEEN", 0);
393 // --- Define ghost volume containing the six layers and fill it with air
422 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
424 // --- Place the ghost volume in its mother volume (ALIC) and make it
427 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
428 //gMC->Gsatt("ITSD", "SEEN", 0);
430 // ITS LAYERS (SILICON)
433 dits[1] = rl[0] + drl[0];
435 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
436 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
439 dits[1] = rl[1] + drl[1];
441 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
442 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
445 dits[1] = rl[2] + drl[2];
447 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
448 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
451 dits[1] = rl[3] + drl[3];
453 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
454 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
457 dits[1] = rl[4] + drl[4];
459 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
460 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
463 dits[1] = rl[5] + drl[5];
465 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
466 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
468 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
470 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
471 for (i = 0; i < 2; i++) {
473 dits[1] = dits[0] + drb[i];
474 dits[2] = dzb[i] / 2.;
475 zpos = dzl[i] + dits[2];
476 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
477 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
480 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
482 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
483 for (i = 2; i < 3; i++) {
485 dits[1] = dits[0] + drb[i];
486 dits[2] = dzb[i] / 2.;
487 zpos = dzl[i] + dits[2];
488 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
489 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
491 for (i = 3; i < 4; i++) {
493 dits[1] = dits[0] + drb[i];
494 dits[2] = dzb[i] / 2.;
495 zpos = dzl[i] + dits[2];
496 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
497 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
501 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
503 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
504 for (i = 4; i < 5; i++) {
506 dits[1] = dits[0] + drb[i];
507 dits[2] = dzb[i] / 2.;
508 zpos = dzl[i] + dits[2];
509 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
510 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
512 for (i = 5; i < 6; i++) {
513 dits[0] = rl[i]+0.4235;
514 dits[1] = dits[0] + drb[i];
515 dits[2] = dzb[i] / 2.;
516 zpos = dzl[i] + dits[2];
517 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
518 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
521 // DEFINE THERMAL SCREEN FOR SPD
526 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
527 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
529 // DEFINE END CONES FOR SDD
531 pcits[0] = (59.-42.5)/2.;
536 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
537 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
538 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
539 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
541 // DEFINE CYLINDER BETWEEN SDD AND SSD
543 pcits[0] = (59.5-0.13/2.)/2.;
544 pcits[1] = (59.5+0.13/2.)/2.;
546 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
547 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
549 // DEFINE END CONES FOR SSD
551 pcits[0] = (74.-59.)/2.;
556 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
557 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
558 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
561 // **************************** SERVICES *********************************
564 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
574 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
575 } else if (suppmat == 1) {
576 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
578 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
580 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
581 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
583 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
593 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
594 } else if (suppmat == 1) {
595 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
597 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
599 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
600 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
603 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
607 dgh[1] = 46.+1.0+1.5;
612 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
613 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
614 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
616 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
620 dgh[1] = 46.+1.0+1.5;
625 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
626 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
627 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
629 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
638 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
639 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
640 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
643 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
652 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
653 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
654 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
656 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
658 dgh[0] = (ztpc-97.5)/2.;
665 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
666 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
667 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
669 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
671 dgh[0] = (ztpc-97.5)/2.;
678 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
679 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
680 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
682 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
684 dgh[0] = (ztpc-97.5)/2.;
686 dgh[2] = 46.2+1.0+1.5;
688 dgh[4] = 62.3+1.0+1.5;
691 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
692 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
693 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
695 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
697 dgh[0] = (ztpc-97.5)/2.;
699 dgh[2] = 46.2+1.0+1.5;
701 dgh[4] = 62.3+1.0+1.5;
704 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
705 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
706 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
708 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
715 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
716 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
717 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
719 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
726 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
727 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
728 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
730 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
737 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
738 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
739 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
741 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
748 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
749 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
750 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
752 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
759 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
760 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
762 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
769 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
770 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
772 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
779 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
780 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
781 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
782 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
784 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
785 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
787 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
788 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
789 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
790 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
794 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
799 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
800 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
801 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
803 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
807 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
808 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
809 gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");
810 gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");
811 gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY");
812 gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");
813 gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");
814 gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");
815 gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY");
816 gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");
818 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
823 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
824 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
825 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
826 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
831 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
832 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
833 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
834 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
836 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
841 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
842 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
843 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
844 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
846 // --- Outputs the geometry tree in the EUCLID/CAD format
849 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
852 //_____________________________________________________________________________
853 void AliITSvPPRcoarsesymm::CreateMaterials(){
854 ////////////////////////////////////////////////////////////////////////
856 // Create ITS materials
857 // This function defines the default materials used in the Geant
858 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
859 // AliITSvPPRcoarseasymm.
860 // In general it is automatically replaced by
861 // the CreatMaterials routine defined in AliITSv?. Should the function
862 // CreateMaterials not exist for the geometry version you are using this
863 // one is used. See the definition found in AliITSv5 or the other routine
864 // for a complete definition.
867 Float_t awat[2] = { 1.00794,15.9994 };
868 Float_t zwat[2] = { 1.,8. };
869 Float_t wwat[2] = { 2.,1. };
870 Float_t denswat = 1.;
872 Float_t afre[2] = { 12.011,18.9984032 };
873 Float_t zfre[2] = { 6.,9. };
874 Float_t wfre[2] = { 5.,12. };
875 Float_t densfre = 1.5;
877 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
878 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
879 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
880 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
881 Float_t denscer = 3.6;
883 // 60% SiO2 , 40% G10FR4
885 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
886 Float_t zpcb[3] = { 14.,8.,8.875 };
887 Float_t wpcb[3] = { .28,.32,.4 };
888 Float_t denspcb = 1.8;
890 Float_t apoly[2] = { 12.01,1. };
891 Float_t zpoly[2] = { 6.,1. };
892 Float_t wpoly[2] = { .33,.67 };
894 Float_t zserv[4] = { 1.,6.,26.,29. };
895 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
896 Float_t wserv[4] = { .014,.086,.42,.48 };
898 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
899 Float_t zsteel[4] = { 26.,24.,28.,14. };
900 Float_t wsteel[4] = { .715,.18,.1,.005 };
903 Int_t isxfld = gAlice->Field()->Integ();
904 Float_t sxmgmx = gAlice->Field()->Max();
907 // --- Define the various materials for GEANT ---
909 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
911 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
912 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
913 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
914 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
916 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
917 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
918 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
919 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
920 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
921 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
922 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
923 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
925 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
926 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
927 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
928 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
929 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
930 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
931 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
932 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
933 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
934 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
935 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
937 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
939 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
940 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
941 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
942 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
944 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
945 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
946 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
947 // After a call with ratios by number (negative number of elements),
948 // the ratio array is changed to the ratio by weight, so all successive
949 // calls with the same array must specify the number of elements as
951 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
952 // After a call with ratios by number (negative number of elements),
953 // the ratio array is changed to the ratio by weight, so all successive
954 // calls with the same array must specify the number of elements as
956 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
957 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
958 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
959 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
960 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
961 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
962 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
963 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);
964 //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.);
965 //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);
969 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
970 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
971 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
972 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
973 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
974 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
975 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
981 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
982 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
983 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
984 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
985 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
987 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
988 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
989 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
990 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
992 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
993 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
994 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
995 // After a call with ratios by number (negative number of elements),
996 // the ratio array is changed to the ratio by weight, so all successive
997 // calls with the same array must specify the number of elements as
999 AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
1000 // After a call with ratios by number (negative number of elements),
1001 // the ratio array is changed to the ratio by weight, so all successive
1002 // calls with the same array must specify the number of elements as
1004 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1005 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1006 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1007 // After a call with ratios by number (negative number of elements),
1008 // the ratio array is changed to the ratio by weight, so all successive
1009 // calls with the same array must specify the number of elements as
1011 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1012 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1014 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1015 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1016 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1017 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1018 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1020 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1021 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1022 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1023 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1024 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1025 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1026 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1032 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1033 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1034 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1035 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1037 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1039 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1041 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1042 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1043 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1044 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1045 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1046 // After a call with ratios by number (negative number of elements),
1047 // the ratio array is changed to the ratio by weight, so all successive
1048 // calls with the same array must specify the number of elements as
1050 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1051 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1052 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1053 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1054 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1055 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1056 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1058 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1059 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1060 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1061 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1062 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1063 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1064 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1065 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1066 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1067 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1068 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1069 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1073 //_____________________________________________________________________________
1074 void AliITSvPPRcoarsesymm::Init(){
1075 ////////////////////////////////////////////////////////////////////////
1076 // Initialise the ITS after it has been created.
1077 ////////////////////////////////////////////////////////////////////////
1081 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1082 for(i=0;i<25;i++) cout << "*";cout << endl;
1086 for(i=0;i<72;i++) cout << "*";
1091 //_____________________________________________________________________________
1092 void AliITSvPPRcoarsesymm::DrawModule(){
1093 ////////////////////////////////////////////////////////////////////////
1094 // Draw a shaded view of the FMD version 6.
1095 ////////////////////////////////////////////////////////////////////////
1097 // Set everything unseen
1098 gMC->Gsatt("*", "seen", -1);
1100 // Set ALIC mother visible
1101 gMC->Gsatt("ALIC","SEEN",0);
1103 // Set the volumes visible
1104 gMC->Gsatt("ITSD","SEEN",0);
1105 gMC->Gsatt("ITS1","SEEN",1);
1106 gMC->Gsatt("ITS2","SEEN",1);
1107 gMC->Gsatt("ITS3","SEEN",1);
1108 gMC->Gsatt("ITS4","SEEN",1);
1109 gMC->Gsatt("ITS5","SEEN",1);
1110 gMC->Gsatt("ITS6","SEEN",1);
1112 gMC->Gsatt("IPCB","SEEN",1);
1113 gMC->Gsatt("ICO2","SEEN",1);
1114 gMC->Gsatt("ICER","SEEN",0);
1115 gMC->Gsatt("ISI2","SEEN",0);
1116 gMC->Gsatt("IPLA","SEEN",0);
1117 gMC->Gsatt("ICO3","SEEN",0);
1118 gMC->Gsatt("IEPX","SEEN",0);
1119 gMC->Gsatt("ISI3","SEEN",1);
1120 gMC->Gsatt("ISUP","SEEN",0);
1121 gMC->Gsatt("ICHO","SEEN",0);
1122 gMC->Gsatt("ICMO","SEEN",0);
1123 gMC->Gsatt("ICMD","SEEN",0);
1124 gMC->Gsatt("ICCO","SEEN",1);
1125 gMC->Gsatt("ICCM","SEEN",0);
1126 gMC->Gsatt("ITMD","SEEN",0);
1127 gMC->Gsatt("ITTT","SEEN",1);
1130 gMC->Gdopt("hide", "on");
1131 gMC->Gdopt("shad", "on");
1132 gMC->Gsatt("*", "fill", 7);
1133 gMC->SetClipBox(".");
1134 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1135 gMC->DefaultRange();
1136 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1137 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1138 gMC->Gdman(17, 6, "MAN");
1140 //_____________________________________________________________________________
1141 void AliITSvPPRcoarsesymm::StepManager(){
1142 ////////////////////////////////////////////////////////////////////////
1143 // Called for every step in the ITS, then calls the AliITShit class
1144 // creator with the information to be recoreded about that hit.
1145 ////////////////////////////////////////////////////////////////////////
1151 TLorentzVector position, momentum;
1152 // TClonesArray &lhits = *fHits;
1154 // no hits for this coarse symmetric version.
1160 if(gMC->IsTrackInside()) vol[3] += 1;
1161 if(gMC->IsTrackEntering()) vol[3] += 2;
1162 if(gMC->IsTrackExiting()) vol[3] += 4;
1163 if(gMC->IsTrackOut()) vol[3] += 8;
1164 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1165 if(gMC->IsTrackStop()) vol[3] += 32;
1166 if(gMC->IsTrackAlive()) vol[3] += 64;
1168 // Fill hit structure.
1169 if( !(gMC->TrackCharge()) ) return;
1171 // Only entering charged tracks
1172 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1174 id=gMC->CurrentVolOffID(1,copy);
1176 id=gMC->CurrentVolOffID(2,copy);
1178 } else if(id==fIdSens[1]) {
1180 id=gMC->CurrentVolOffID(1,copy);
1182 id=gMC->CurrentVolOffID(2,copy);
1184 } else if(id==fIdSens[2]) {
1187 id=gMC->CurrentVolOffID(1,copy);
1189 } else if(id==fIdSens[3]) {
1192 id=gMC->CurrentVolOffID(1,copy);
1194 } else if(id==fIdSens[4]) {
1197 id=gMC->CurrentVolOffID(1,copy);
1199 } else if(id==fIdSens[5]) {
1202 id=gMC->CurrentVolOffID(1,copy);
1205 gMC->TrackPosition(position);
1206 gMC->TrackMomentum(momentum);
1207 hits[0]=position[0];
1208 hits[1]=position[1];
1209 hits[2]=position[2];
1210 hits[3]=momentum[0];
1211 hits[4]=momentum[1];
1212 hits[5]=momentum[2];
1213 hits[6]=gMC->Edep();
1214 hits[7]=gMC->TrackTime();
1215 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1217 // no hits for this coarse symmetric version.