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.20 2001/03/29 22:01:53 barbera
19 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
21 Revision 1.19 2001/03/29 05:28:56 barbera
22 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
24 Revision 1.18 2001/03/28 06:40:21 barbera
25 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
27 Revision 1.17 2001/03/13 18:13:30 barbera
28 Some mother volumes sligthly modified to eliminate an overlap with the absorber
30 Revision 1.16 2001/02/09 00:05:31 nilsen
31 Added fMajor/MinorVersion variables and made other changes to better make
32 use of the new code changes in AliITSgeom related classes.
34 Revision 1.15 2001/01/30 09:23:13 hristov
35 Streamers removed (R.Brun)
37 Revision 1.14 2001/01/17 07:41:29 barbera
38 Some media parameters modified
40 Revision 1.13 2001/01/15 13:13:52 barbera
43 Revision 1.12 2000/12/10 16:00:44 barbera
44 Added last definition of special media like end-ladder boxes and cones
46 Revision 1.11 2000/10/30 08:02:25 barbera
47 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
49 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
50 Position of rails w.r.t. the interaction point corrected.
52 Revision 1.9 2000/10/27 13:31:29 barbera
53 Rails between ITS and TPC added.
55 Revision 1.8 2000/10/27 13:03:08 barbera
56 Small changes in the SPD volumes and materials
58 Revision 1.6 2000/10/16 14:45:37 barbera
59 Mother volume ITSD modified to avoid some overlaps
61 Revision 1.5 2000/10/16 13:49:15 barbera
62 Services volumes slightly modified and material added following Pierluigi Barberis' information
64 Revision 1.4 2000/10/07 15:33:07 barbera
65 Small corrections to the ITSV mother volume
67 Revision 1.3 2000/10/07 13:06:50 barbera
68 Some new materials and media defined
70 Revision 1.2 2000/10/07 10:42:43 barbera
71 Mother volume ITSV corrected
73 Revision 1.1 2000/10/06 23:09:12 barbera
74 New coarse geometry (symmetric services
76 Revision 1.20 2000/10/02 21:28:08 fca
77 Removal of useless dependecies via forward declarations
79 Revision 1.19 2000/07/10 16:07:19 fca
80 Release version of ITS code
82 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
83 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
85 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
86 Fixed up the comments/documentation.
88 Revision 1.14 1999/11/25 06:52:56 fca
91 Revision 1.13.2.1 1999/11/25 06:52:21 fca
94 Revision 1.13 1999/10/27 11:16:26 fca
95 Correction of problem in geometry
97 Revision 1.12 1999/10/22 08:25:25 fca
98 remove double definition of destructors
100 Revision 1.11 1999/10/22 08:16:49 fca
101 Correct destructors, thanks to I.Hrivnacova
103 Revision 1.10 1999/10/06 19:56:50 fca
106 Revision 1.9 1999/10/05 08:05:09 fca
107 Minor corrections for uninitialised variables.
109 Revision 1.8 1999/09/29 09:24:20 fca
110 Introduction of the Copyright and cvs Log
114 ///////////////////////////////////////////////////////////////////////////////
116 // Inner Traking System version PPR coarse symmetric //
117 // This class contains the base procedures for the Inner Tracking System //
119 // Authors: R. Barbera
123 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
124 // THIS WILL NOT WORK
125 // with the geometry or module classes or any analysis classes. You are
126 // strongly encouraged to uses AliITSv5.
128 ///////////////////////////////////////////////////////////////////////////////
129 #include <iostream.h>
133 #include <TGeometry.h>
136 #include <TFile.h> // only required for Tracking function?
138 #include <TObjArray.h>
139 #include <TClonesArray.h>
144 #include "AliConst.h"
146 #include "AliITShit.h"
147 #include "AliITSvPPRcoarsesymm.h"
151 ClassImp(AliITSvPPRcoarsesymm)
153 //_____________________________________________________________________________
154 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
155 ////////////////////////////////////////////////////////////////////////
156 // Standard default constructor for the ITS version 7.
157 ////////////////////////////////////////////////////////////////////////
165 //_____________________________________________________________________________
166 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
167 ////////////////////////////////////////////////////////////////////////
168 // Standard constructor for the ITS version 7.
169 ////////////////////////////////////////////////////////////////////////
172 fIdName = new TString[fIdN];
179 fIdSens = new Int_t[fIdN];
180 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
184 //____________________________________________________________________________
185 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
186 ////////////////////////////////////////////////////////////////////////
187 // Copy Constructor for ITS version 7.
188 ////////////////////////////////////////////////////////////////////////
189 if(&source == this) return;
190 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
193 //_____________________________________________________________________________
194 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
195 ////////////////////////////////////////////////////////////////////////
196 // Assignment operator for the ITS version 7.
197 ////////////////////////////////////////////////////////////////////////
198 if(&source == this) return *this;
199 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
202 //_____________________________________________________________________________
203 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
204 ////////////////////////////////////////////////////////////////////////
205 // Standard destructor for the ITS version 7.
206 ////////////////////////////////////////////////////////////////////////
209 //__________________________________________________________________________
210 void AliITSvPPRcoarsesymm::BuildGeometry(){
211 ////////////////////////////////////////////////////////////////////////
212 // Geometry builder for the ITS version 7.
213 ////////////////////////////////////////////////////////////////////////
215 const int kColorITS=kYellow;
217 top = gAlice->GetGeometry()->GetNode("alice");
219 new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
221 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
222 node->SetLineColor(kColorITS);
225 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
227 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
228 node->SetLineColor(kColorITS);
231 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
233 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
234 node->SetLineColor(kColorITS);
237 new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
239 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
240 node->SetLineColor(kColorITS);
243 new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
245 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
246 node->SetLineColor(kColorITS);
249 new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
251 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
252 node->SetLineColor(kColorITS);
255 //_____________________________________________________________________________
256 void AliITSvPPRcoarsesymm::CreateGeometry(){
257 ////////////////////////////////////////////////////////////////////////
258 // This routine defines and Creates the geometry for version 7 of the ITS.
259 ////////////////////////////////////////////////////////////////////////
261 //INNER RADII OF THE SILICON LAYERS
262 Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
263 //THICKNESSES OF LAYERS (in % radiation length)
264 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
265 //HALF LENGTHS OF LAYERS
266 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
267 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
268 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
269 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
270 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
273 Float_t dits[3], rlim, zmax;
275 Float_t pcits[100], ztpc;
276 Int_t idrotm[1999], i;
279 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
280 Int_t suppmat = 0; // flag to change the material of the services
281 // supports (=0 copper, =1 aluminum, =2 carbon)
284 if(rails != 0 && rails != 1) {
285 cout << "WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
286 " The default value of 1 (rails in) will be used." << endl;
290 cout << "Rails are out." << endl;
292 cout << "Rails are in." << endl;
295 suppmat = GetSupportMaterial();
297 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
298 cout << "WARNING: the flag for the material of services supports is not set neither to 0 (copper) nor to 1 (aluminum) nor to 2 (carbon)."
299 " The default value of 0 (copper) will be used." << endl;
303 cout << "The material of the services supports is copper." << endl;
304 } else if (suppmat == 1){
305 cout << "The material of the services supports is aluminum." << endl;
307 cout << "The material of the services supports is carbon." << endl;
311 Int_t *idtmed = fIdtmed->GetArray()-199;
313 // CONVERT INTO CM (RL(SI)=9.36 CM)
314 for (i = 0; i < 6; ++i) {
315 drl[i] = drl[i] / 100. * 9.36;
318 // FIELD CAGE HALF LENGTH
324 // --- Define ghost volume containing the whole ITS (including services)
325 // and fill it with air
330 dgh[3] = -ztpc-5.-0.1;
375 dgh[48] = ztpc+4.+0.1;
378 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
380 // --- Place the ghost volume in its mother volume (ALIC) and make it
383 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
384 //gMC->Gsatt("ITSV", "SEEN", 0);
387 // --- Define ghost volume containing the six layers and fill it with air
416 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
418 // --- Place the ghost volume in its mother volume (ALIC) and make it
421 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
422 //gMC->Gsatt("ITSD", "SEEN", 0);
424 // ITS LAYERS (SILICON)
427 dits[1] = rl[0] + drl[0];
429 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
430 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
433 dits[1] = rl[1] + drl[1];
435 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
436 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
439 dits[1] = rl[2] + drl[2];
441 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
442 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
445 dits[1] = rl[3] + drl[3];
447 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
448 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
451 dits[1] = rl[4] + drl[4];
453 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
454 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
457 dits[1] = rl[5] + drl[5];
459 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
460 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
462 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
464 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
465 for (i = 0; i < 2; i++) {
467 dits[1] = dits[0] + drb[i];
468 dits[2] = dzb[i] / 2.;
469 zpos = dzl[i] + dits[2];
470 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
471 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
474 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
476 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
477 for (i = 2; i < 3; i++) {
479 dits[1] = dits[0] + drb[i];
480 dits[2] = dzb[i] / 2.;
481 zpos = dzl[i] + dits[2];
482 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
483 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
485 for (i = 3; i < 4; i++) {
487 dits[1] = dits[0] + drb[i];
488 dits[2] = dzb[i] / 2.;
489 zpos = dzl[i] + dits[2];
490 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
491 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
495 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
497 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
498 for (i = 4; i < 5; i++) {
500 dits[1] = dits[0] + drb[i];
501 dits[2] = dzb[i] / 2.;
502 zpos = dzl[i] + dits[2];
503 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
504 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
506 for (i = 5; i < 6; i++) {
507 dits[0] = rl[i]+0.4235;
508 dits[1] = dits[0] + drb[i];
509 dits[2] = dzb[i] / 2.;
510 zpos = dzl[i] + dits[2];
511 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
512 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
515 // DEFINE THERMAL SCREEN FOR SPD
520 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
521 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
523 // DEFINE END CONES FOR SDD
525 pcits[0] = (59.-42.5)/2.;
530 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
531 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
532 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
533 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
535 // DEFINE CYLINDER BETWEEN SDD AND SSD
537 pcits[0] = (59.5-0.13/2.)/2.;
538 pcits[1] = (59.5+0.13/2.)/2.;
540 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
541 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
543 // DEFINE END CONES FOR SSD
545 pcits[0] = (74.-59.)/2.;
550 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
551 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
552 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
555 // **************************** SERVICES *********************************
558 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
568 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
569 } else if (suppmat == 1) {
570 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
572 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
574 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
575 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
577 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
587 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
588 } else if (suppmat == 1) {
589 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
591 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
593 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
594 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
597 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
601 dgh[1] = 46.+1.0+1.5;
606 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
607 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
608 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
610 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
614 dgh[1] = 46.+1.0+1.5;
619 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
620 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
621 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
623 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
632 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
633 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
634 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
637 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
646 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
647 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
648 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
650 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
652 dgh[0] = (ztpc-97.5)/2.;
659 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
660 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
661 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
663 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
665 dgh[0] = (ztpc-97.5)/2.;
672 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
673 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
674 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
676 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
678 dgh[0] = (ztpc-97.5)/2.;
680 dgh[2] = 46.2+1.0+1.5;
682 dgh[4] = 62.3+1.0+1.5;
685 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
686 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
687 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
689 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
691 dgh[0] = (ztpc-97.5)/2.;
693 dgh[2] = 46.2+1.0+1.5;
695 dgh[4] = 62.3+1.0+1.5;
698 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
699 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
700 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
702 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
709 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
710 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
711 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
713 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
720 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
721 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
722 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
724 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
731 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
732 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
733 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
735 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
742 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
743 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
744 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
746 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
753 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
754 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
756 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
763 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
764 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
766 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
773 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
774 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
775 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
776 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
778 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
779 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
781 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
782 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
783 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
784 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
788 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
793 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
794 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
795 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
797 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
801 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
802 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
803 gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");
804 gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");
805 gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY");
806 gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");
807 gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");
808 gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");
809 gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY");
810 gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");
812 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
817 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
818 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
819 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
820 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
825 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
826 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
827 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
828 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
830 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
835 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
836 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
837 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
838 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
840 // --- Outputs the geometry tree in the EUCLID/CAD format
843 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
846 //_____________________________________________________________________________
847 void AliITSvPPRcoarsesymm::CreateMaterials(){
848 ////////////////////////////////////////////////////////////////////////
850 // Create ITS materials
851 // This function defines the default materials used in the Geant
852 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
853 // AliITSvPPRcoarseasymm.
854 // In general it is automatically replaced by
855 // the CreatMaterials routine defined in AliITSv?. Should the function
856 // CreateMaterials not exist for the geometry version you are using this
857 // one is used. See the definition found in AliITSv5 or the other routine
858 // for a complete definition.
861 Float_t awat[2] = { 1.00794,15.9994 };
862 Float_t zwat[2] = { 1.,8. };
863 Float_t wwat[2] = { 2.,1. };
864 Float_t denswat = 1.;
866 Float_t afre[2] = { 12.011,18.9984032 };
867 Float_t zfre[2] = { 6.,9. };
868 Float_t wfre[2] = { 5.,12. };
869 Float_t densfre = 1.5;
871 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
872 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
873 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
874 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
875 Float_t denscer = 3.6;
877 // 60% SiO2 , 40% G10FR4
879 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
880 Float_t zpcb[3] = { 14.,8.,8.875 };
881 Float_t wpcb[3] = { .28,.32,.4 };
882 Float_t denspcb = 1.8;
884 Float_t apoly[2] = { 12.01,1. };
885 Float_t zpoly[2] = { 6.,1. };
886 Float_t wpoly[2] = { .33,.67 };
888 Float_t zserv[4] = { 1.,6.,26.,29. };
889 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
890 Float_t wserv[4] = { .014,.086,.42,.48 };
892 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
893 Float_t zsteel[4] = { 26.,24.,28.,14. };
894 Float_t wsteel[4] = { .715,.18,.1,.005 };
897 Int_t isxfld = gAlice->Field()->Integ();
898 Float_t sxmgmx = gAlice->Field()->Max();
901 // --- Define the various materials for GEANT ---
903 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
905 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
906 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
907 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
908 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
910 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
911 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
912 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
913 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
914 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
915 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
916 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
917 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
919 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
920 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
921 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
922 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
923 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
924 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
925 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
926 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
927 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
928 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
929 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
931 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
933 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
934 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
935 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
936 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
938 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
939 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
940 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
941 // After a call with ratios by number (negative number of elements),
942 // the ratio array is changed to the ratio by weight, so all successive
943 // calls with the same array must specify the number of elements as
945 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
946 // After a call with ratios by number (negative number of elements),
947 // the ratio array is changed to the ratio by weight, so all successive
948 // calls with the same array must specify the number of elements as
950 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
951 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
952 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
953 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
954 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
955 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
956 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
957 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 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.);
963 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
964 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
965 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
966 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
967 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
968 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
969 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
970 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
971 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
972 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
973 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
974 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
975 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
981 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
982 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
983 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
984 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
986 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
987 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
988 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
989 // After a call with ratios by number (negative number of elements),
990 // the ratio array is changed to the ratio by weight, so all successive
991 // calls with the same array must specify the number of elements as
993 AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
994 // After a call with ratios by number (negative number of elements),
995 // the ratio array is changed to the ratio by weight, so all successive
996 // calls with the same array must specify the number of elements as
998 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
999 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1000 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1001 // After a call with ratios by number (negative number of elements),
1002 // the ratio array is changed to the ratio by weight, so all successive
1003 // calls with the same array must specify the number of elements as
1005 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1006 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1008 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1009 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1010 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1011 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1012 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1014 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1015 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1016 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1017 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1018 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1019 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1020 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1021 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1022 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1023 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1024 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1025 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1026 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1033 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1035 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1036 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1037 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1038 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1039 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1040 // After a call with ratios by number (negative number of elements),
1041 // the ratio array is changed to the ratio by weight, so all successive
1042 // calls with the same array must specify the number of elements as
1044 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1045 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1046 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1047 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1048 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1049 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1050 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1052 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1053 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1054 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1055 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1056 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1057 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1058 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1059 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1060 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1061 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1062 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1063 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1064 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1067 //_____________________________________________________________________________
1068 void AliITSvPPRcoarsesymm::Init(){
1069 ////////////////////////////////////////////////////////////////////////
1070 // Initialise the ITS after it has been created.
1071 ////////////////////////////////////////////////////////////////////////
1075 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1076 for(i=0;i<25;i++) cout << "*";cout << endl;
1080 for(i=0;i<72;i++) cout << "*";
1085 //_____________________________________________________________________________
1086 void AliITSvPPRcoarsesymm::DrawModule(){
1087 ////////////////////////////////////////////////////////////////////////
1088 // Draw a shaded view of the FMD version 6.
1089 ////////////////////////////////////////////////////////////////////////
1091 // Set everything unseen
1092 gMC->Gsatt("*", "seen", -1);
1094 // Set ALIC mother visible
1095 gMC->Gsatt("ALIC","SEEN",0);
1097 // Set the volumes visible
1098 gMC->Gsatt("ITSD","SEEN",0);
1099 gMC->Gsatt("ITS1","SEEN",1);
1100 gMC->Gsatt("ITS2","SEEN",1);
1101 gMC->Gsatt("ITS3","SEEN",1);
1102 gMC->Gsatt("ITS4","SEEN",1);
1103 gMC->Gsatt("ITS5","SEEN",1);
1104 gMC->Gsatt("ITS6","SEEN",1);
1106 gMC->Gsatt("IPCB","SEEN",1);
1107 gMC->Gsatt("ICO2","SEEN",1);
1108 gMC->Gsatt("ICER","SEEN",0);
1109 gMC->Gsatt("ISI2","SEEN",0);
1110 gMC->Gsatt("IPLA","SEEN",0);
1111 gMC->Gsatt("ICO3","SEEN",0);
1112 gMC->Gsatt("IEPX","SEEN",0);
1113 gMC->Gsatt("ISI3","SEEN",1);
1114 gMC->Gsatt("ISUP","SEEN",0);
1115 gMC->Gsatt("ICHO","SEEN",0);
1116 gMC->Gsatt("ICMO","SEEN",0);
1117 gMC->Gsatt("ICMD","SEEN",0);
1118 gMC->Gsatt("ICCO","SEEN",1);
1119 gMC->Gsatt("ICCM","SEEN",0);
1120 gMC->Gsatt("ITMD","SEEN",0);
1121 gMC->Gsatt("ITTT","SEEN",1);
1124 gMC->Gdopt("hide", "on");
1125 gMC->Gdopt("shad", "on");
1126 gMC->Gsatt("*", "fill", 7);
1127 gMC->SetClipBox(".");
1128 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1129 gMC->DefaultRange();
1130 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1131 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1132 gMC->Gdman(17, 6, "MAN");
1134 //_____________________________________________________________________________
1135 void AliITSvPPRcoarsesymm::StepManager(){
1136 ////////////////////////////////////////////////////////////////////////
1137 // Called for every step in the ITS, then calls the AliITShit class
1138 // creator with the information to be recoreded about that hit.
1139 ////////////////////////////////////////////////////////////////////////
1145 TLorentzVector position, momentum;
1146 // TClonesArray &lhits = *fHits;
1148 // no hits for this coarse symmetric version.
1154 if(gMC->IsTrackInside()) vol[3] += 1;
1155 if(gMC->IsTrackEntering()) vol[3] += 2;
1156 if(gMC->IsTrackExiting()) vol[3] += 4;
1157 if(gMC->IsTrackOut()) vol[3] += 8;
1158 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1159 if(gMC->IsTrackStop()) vol[3] += 32;
1160 if(gMC->IsTrackAlive()) vol[3] += 64;
1162 // Fill hit structure.
1163 if( !(gMC->TrackCharge()) ) return;
1165 // Only entering charged tracks
1166 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1168 id=gMC->CurrentVolOffID(1,copy);
1170 id=gMC->CurrentVolOffID(2,copy);
1172 } else if(id==fIdSens[1]) {
1174 id=gMC->CurrentVolOffID(1,copy);
1176 id=gMC->CurrentVolOffID(2,copy);
1178 } else if(id==fIdSens[2]) {
1181 id=gMC->CurrentVolOffID(1,copy);
1183 } else if(id==fIdSens[3]) {
1186 id=gMC->CurrentVolOffID(1,copy);
1188 } else if(id==fIdSens[4]) {
1191 id=gMC->CurrentVolOffID(1,copy);
1193 } else if(id==fIdSens[5]) {
1196 id=gMC->CurrentVolOffID(1,copy);
1199 gMC->TrackPosition(position);
1200 gMC->TrackMomentum(momentum);
1201 hits[0]=position[0];
1202 hits[1]=position[1];
1203 hits[2]=position[2];
1204 hits[3]=momentum[0];
1205 hits[4]=momentum[1];
1206 hits[5]=momentum[2];
1207 hits[6]=gMC->Edep();
1208 hits[7]=gMC->TrackTime();
1209 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1211 // no hits for this coarse symmetric version.