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.25 2001/10/18 12:26:38 barbera
19 Six cylinders definition in BuildGeometry() improved by comparison with CreateGeometry()
21 Revision 1.24 2001/05/25 15:59:59 morsch
22 Overlaps corrected. (R. Barbera)
24 Revision 1.23 2001/05/03 08:40:15 barbera
25 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
27 Revision 1.21 2001/04/04 07:02:16 barbera
28 Position of the cylinders holding rails corrected
30 Revision 1.20 2001/03/29 22:01:53 barbera
31 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
33 Revision 1.19 2001/03/29 05:28:56 barbera
34 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
36 Revision 1.18 2001/03/28 06:40:21 barbera
37 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
39 Revision 1.17 2001/03/13 18:13:30 barbera
40 Some mother volumes sligthly modified to eliminate an overlap with the absorber
42 Revision 1.16 2001/02/09 00:05:31 nilsen
43 Added fMajor/MinorVersion variables and made other changes to better make
44 use of the new code changes in AliITSgeom related classes.
46 Revision 1.15 2001/01/30 09:23:13 hristov
47 Streamers removed (R.Brun)
49 Revision 1.14 2001/01/17 07:41:29 barbera
50 Some media parameters modified
52 Revision 1.13 2001/01/15 13:13:52 barbera
55 Revision 1.12 2000/12/10 16:00:44 barbera
56 Added last definition of special media like end-ladder boxes and cones
58 Revision 1.11 2000/10/30 08:02:25 barbera
59 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
61 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
62 Position of rails w.r.t. the interaction point corrected.
64 Revision 1.9 2000/10/27 13:31:29 barbera
65 Rails between ITS and TPC added.
67 Revision 1.8 2000/10/27 13:03:08 barbera
68 Small changes in the SPD volumes and materials
70 Revision 1.6 2000/10/16 14:45:37 barbera
71 Mother volume ITSD modified to avoid some overlaps
73 Revision 1.5 2000/10/16 13:49:15 barbera
74 Services volumes slightly modified and material added following Pierluigi Barberis' information
76 Revision 1.4 2000/10/07 15:33:07 barbera
77 Small corrections to the ITSV mother volume
79 Revision 1.3 2000/10/07 13:06:50 barbera
80 Some new materials and media defined
82 Revision 1.2 2000/10/07 10:42:43 barbera
83 Mother volume ITSV corrected
85 Revision 1.1 2000/10/06 23:09:12 barbera
86 New coarse geometry (symmetric services
88 Revision 1.20 2000/10/02 21:28:08 fca
89 Removal of useless dependecies via forward declarations
91 Revision 1.19 2000/07/10 16:07:19 fca
92 Release version of ITS code
94 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
95 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
97 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
98 Fixed up the comments/documentation.
100 Revision 1.14 1999/11/25 06:52:56 fca
101 Correct value of drca
103 Revision 1.13.2.1 1999/11/25 06:52:21 fca
104 Correct value of drca
106 Revision 1.13 1999/10/27 11:16:26 fca
107 Correction of problem in geometry
109 Revision 1.12 1999/10/22 08:25:25 fca
110 remove double definition of destructors
112 Revision 1.11 1999/10/22 08:16:49 fca
113 Correct destructors, thanks to I.Hrivnacova
115 Revision 1.10 1999/10/06 19:56:50 fca
118 Revision 1.9 1999/10/05 08:05:09 fca
119 Minor corrections for uninitialised variables.
121 Revision 1.8 1999/09/29 09:24:20 fca
122 Introduction of the Copyright and cvs Log
126 ///////////////////////////////////////////////////////////////////////////////
128 // Inner Traking System version PPR coarse symmetric //
129 // This class contains the base procedures for the Inner Tracking System //
131 // Authors: R. Barbera
135 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
136 // THIS WILL NOT WORK
137 // with the geometry or module classes or any analysis classes. You are
138 // strongly encouraged to uses AliITSv5.
140 ///////////////////////////////////////////////////////////////////////////////
141 #include <Riostream.h>
145 #include <TGeometry.h>
148 #include <TFile.h> // only required for Tracking function?
150 #include <TObjArray.h>
151 #include <TClonesArray.h>
156 #include "AliConst.h"
158 #include "AliITShit.h"
159 #include "AliITSvPPRcoarsesymm.h"
163 ClassImp(AliITSvPPRcoarsesymm)
165 //_____________________________________________________________________________
166 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
167 ////////////////////////////////////////////////////////////////////////
168 // Standard default constructor for the ITS version 7.
169 ////////////////////////////////////////////////////////////////////////
177 //_____________________________________________________________________________
178 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
179 ////////////////////////////////////////////////////////////////////////
180 // Standard constructor for the ITS version 7.
181 ////////////////////////////////////////////////////////////////////////
184 fIdName = new TString[fIdN];
191 fIdSens = new Int_t[fIdN];
192 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
196 //____________________________________________________________________________
197 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
198 ////////////////////////////////////////////////////////////////////////
199 // Copy Constructor for ITS version 7.
200 ////////////////////////////////////////////////////////////////////////
201 if(&source == this) return;
202 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
205 //_____________________________________________________________________________
206 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
207 ////////////////////////////////////////////////////////////////////////
208 // Assignment operator for the ITS version 7.
209 ////////////////////////////////////////////////////////////////////////
210 if(&source == this) return *this;
211 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
214 //_____________________________________________________________________________
215 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
216 ////////////////////////////////////////////////////////////////////////
217 // Standard destructor for the ITS version 7.
218 ////////////////////////////////////////////////////////////////////////
221 //__________________________________________________________________________
222 void AliITSvPPRcoarsesymm::BuildGeometry(){
223 ////////////////////////////////////////////////////////////////////////
224 // Geometry builder for the ITS version 7.
225 ////////////////////////////////////////////////////////////////////////
227 const Int_t kColorITS=kYellow;
229 top = gAlice->GetGeometry()->GetNode("alice");
230 new TTUBE("S_layer1","Layer1 of ITS","void",3.8095,3.8095+1.03*9.36/100.,14.35);
232 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
233 node->SetLineColor(kColorITS);
236 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
238 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
239 node->SetLineColor(kColorITS);
242 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
244 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
245 node->SetLineColor(kColorITS);
248 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
250 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
251 node->SetLineColor(kColorITS);
254 new TTUBE("S_layer5","Layer5 of ITS","void",38.5,38.5+0.91*9.36/100.,49.405);
256 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
257 node->SetLineColor(kColorITS);
260 new TTUBE("S_layer6","Layer6 of ITS","void",43.5765,43.5765+0.87*9.36/100.,55.27);
262 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
263 node->SetLineColor(kColorITS);
267 //_____________________________________________________________________________
268 void AliITSvPPRcoarsesymm::CreateGeometry(){
269 ////////////////////////////////////////////////////////////////////////
270 // This routine defines and Creates the geometry for version 7 of the ITS.
271 ////////////////////////////////////////////////////////////////////////
273 //INNER RADII OF THE SILICON LAYERS
274 Float_t rl[6] = { 3.8095,7.,15.,24.,38.5,43.5765 };
275 //THICKNESSES OF LAYERS (in % radiation length)
276 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
277 //HALF LENGTHS OF LAYERS
278 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
279 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
280 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
281 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
282 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
285 Float_t dits[3], rlim, zmax;
287 Float_t pcits[100], ztpc;
288 Int_t idrotm[1999], i;
291 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
292 Int_t suppmat = 0; // flag to change the material of the services
293 // supports (=0 copper, =1 aluminum, =2 carbon)
296 if(rails != 0 && rails != 1) {
297 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
298 " The default value of 1 (rails in) will be used." << endl;
302 cout << "ITS: Rails are out." << endl;
304 cout << "ITS: Rails are in." << endl;
307 suppmat = GetSupportMaterial();
309 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
310 cout << "ITS - WARNING: the flag for the material of services supports is not set neither to 0 (copper) nor to 1 (aluminum) nor to 2 (carbon)."
311 " The default value of 0 (copper) will be used." << endl;
315 cout << "ITS: The material of the services supports is copper." << endl;
316 } else if (suppmat == 1){
317 cout << "ITS: The material of the services supports is aluminum." << endl;
319 cout << "ITS: The material of the services supports is carbon." << endl;
323 Int_t *idtmed = fIdtmed->GetArray()-199;
325 // CONVERT INTO CM (RL(SI)=9.36 CM)
326 for (i = 0; i < 6; ++i) {
327 drl[i] = drl[i] / 100. * 9.36;
330 // FIELD CAGE HALF LENGTH
336 // --- Define ghost volume containing the whole ITS (including services)
337 // and fill it with air
342 dgh[3] = -ztpc-5.-0.1;
387 dgh[48] = ztpc+4.+0.1;
390 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
392 // --- Place the ghost volume in its mother volume (ALIC) and make it
395 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
396 //gMC->Gsatt("ITSV", "SEEN", 0);
399 // --- Define ghost volume containing the six layers and fill it with air
428 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
430 // --- Place the ghost volume in its mother volume (ALIC) and make it
433 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
434 //gMC->Gsatt("ITSD", "SEEN", 0);
436 // ITS LAYERS (SILICON)
439 dits[1] = rl[0] + drl[0];
441 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
442 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
445 dits[1] = rl[1] + drl[1];
447 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
448 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
451 dits[1] = rl[2] + drl[2];
453 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
454 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
457 dits[1] = rl[3] + drl[3];
459 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
460 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
463 dits[1] = rl[4] + drl[4];
465 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
466 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
469 dits[1] = rl[5] + drl[5];
471 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
472 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
474 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
476 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
477 for (i = 0; i < 2; i++) {
479 dits[1] = dits[0] + drb[i];
480 dits[2] = dzb[i] / 2.;
481 zpos = dzl[i] + dits[2];
482 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
483 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
486 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
488 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
489 for (i = 2; i < 3; i++) {
491 dits[1] = dits[0] + drb[i];
492 dits[2] = dzb[i] / 2.;
493 zpos = dzl[i] + dits[2];
494 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
495 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
497 for (i = 3; i < 4; i++) {
499 dits[1] = dits[0] + drb[i];
500 dits[2] = dzb[i] / 2.;
501 zpos = dzl[i] + dits[2];
502 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
503 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
507 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
509 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
510 for (i = 4; i < 5; i++) {
512 dits[1] = dits[0] + drb[i];
513 dits[2] = dzb[i] / 2.;
514 zpos = dzl[i] + dits[2];
515 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
516 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
518 for (i = 5; i < 6; i++) {
519 dits[0] = rl[i]+0.4235;
520 dits[1] = dits[0] + drb[i];
521 dits[2] = dzb[i] / 2.;
522 zpos = dzl[i] + dits[2];
523 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
524 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
527 // DEFINE THERMAL SCREEN FOR SPD
532 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
533 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
535 // DEFINE END CONES FOR SDD
537 pcits[0] = (59.-42.5)/2.;
542 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
543 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
544 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
545 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
547 // DEFINE CYLINDER BETWEEN SDD AND SSD
549 pcits[0] = (59.5-0.13/2.)/2.;
550 pcits[1] = (59.5+0.13/2.)/2.;
552 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
553 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
555 // DEFINE END CONES FOR SSD
557 pcits[0] = (74.-59.)/2.;
562 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
563 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
564 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
567 // **************************** SERVICES *********************************
570 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
580 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
581 } else if (suppmat == 1) {
582 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
584 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
586 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
587 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
589 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
599 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
600 } else if (suppmat == 1) {
601 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
603 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
605 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
606 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
609 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
613 dgh[1] = 46.+1.0+1.5;
618 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
619 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
620 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
622 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
626 dgh[1] = 46.+1.0+1.5;
631 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
632 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
633 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
635 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
644 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
645 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
646 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
649 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
658 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
659 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
660 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
662 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
664 dgh[0] = (ztpc-97.5)/2.;
671 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
672 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
673 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
675 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
677 dgh[0] = (ztpc-97.5)/2.;
684 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
685 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
686 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
688 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
690 dgh[0] = (ztpc-97.5)/2.;
692 dgh[2] = 46.2+1.0+1.5;
694 dgh[4] = 62.3+1.0+1.5;
697 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
698 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
699 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
701 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
703 dgh[0] = (ztpc-97.5)/2.;
705 dgh[2] = 46.2+1.0+1.5;
707 dgh[4] = 62.3+1.0+1.5;
710 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
711 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
712 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
714 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
721 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
722 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
723 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
725 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
732 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
733 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
734 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
736 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
743 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
744 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
745 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
747 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
754 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
755 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
756 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
758 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
765 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
766 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
768 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
775 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
776 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
778 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
785 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
786 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
787 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
788 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
790 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
791 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
793 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
794 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
795 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
796 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
800 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
805 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
806 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
807 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
809 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
813 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
814 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
815 gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");
816 gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");
817 gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY");
818 gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");
819 gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");
820 gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");
821 gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY");
822 gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");
824 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
829 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
830 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
831 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
832 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
837 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
838 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
839 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
840 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
842 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
847 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
848 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
849 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
850 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
852 // --- Outputs the geometry tree in the EUCLID/CAD format
855 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
858 //_____________________________________________________________________________
859 void AliITSvPPRcoarsesymm::CreateMaterials(){
860 ////////////////////////////////////////////////////////////////////////
862 // Create ITS materials
863 // This function defines the default materials used in the Geant
864 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
865 // AliITSvPPRcoarseasymm.
866 // In general it is automatically replaced by
867 // the CreatMaterials routine defined in AliITSv?. Should the function
868 // CreateMaterials not exist for the geometry version you are using this
869 // one is used. See the definition found in AliITSv5 or the other routine
870 // for a complete definition.
873 Float_t awat[2] = { 1.00794,15.9994 };
874 Float_t zwat[2] = { 1.,8. };
875 Float_t wwat[2] = { 2.,1. };
876 Float_t denswat = 1.;
878 Float_t afre[2] = { 12.011,18.9984032 };
879 Float_t zfre[2] = { 6.,9. };
880 Float_t wfre[2] = { 5.,12. };
881 Float_t densfre = 1.5;
883 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
884 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
885 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
886 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
887 Float_t denscer = 3.6;
889 // 60% SiO2 , 40% G10FR4
891 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
892 Float_t zpcb[3] = { 14.,8.,8.875 };
893 Float_t wpcb[3] = { .28,.32,.4 };
894 Float_t denspcb = 1.8;
896 Float_t apoly[2] = { 12.01,1. };
897 Float_t zpoly[2] = { 6.,1. };
898 Float_t wpoly[2] = { .33,.67 };
900 Float_t zserv[4] = { 1.,6.,26.,29. };
901 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
902 Float_t wserv[4] = { .014,.086,.42,.48 };
904 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
905 Float_t zsteel[4] = { 26.,24.,28.,14. };
906 Float_t wsteel[4] = { .715,.18,.1,.005 };
909 Int_t isxfld = gAlice->Field()->Integ();
910 Float_t sxmgmx = gAlice->Field()->Max();
913 // --- Define the various materials for GEANT ---
915 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
917 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
918 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
919 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
920 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
922 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
923 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
924 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
925 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
926 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
927 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
928 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
929 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
931 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
932 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
933 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
934 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
935 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
936 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
937 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
938 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
939 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
940 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
941 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
943 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
945 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
946 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
947 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
948 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
950 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
951 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
952 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
953 // After a call with ratios by number (negative number of elements),
954 // the ratio array is changed to the ratio by weight, so all successive
955 // calls with the same array must specify the number of elements as
957 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
958 // After a call with ratios by number (negative number of elements),
959 // the ratio array is changed to the ratio by weight, so all successive
960 // calls with the same array must specify the number of elements as
962 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
963 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
964 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
965 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
966 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
967 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
968 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
969 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);
970 //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.);
971 //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);
975 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
981 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
982 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
983 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
984 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
985 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
986 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
987 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
988 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
989 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
990 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
991 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
993 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
994 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
995 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
996 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
998 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
999 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1000 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 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(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
1006 // After a call with ratios by number (negative number of elements),
1007 // the ratio array is changed to the ratio by weight, so all successive
1008 // calls with the same array must specify the number of elements as
1010 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1011 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1012 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1013 // After a call with ratios by number (negative number of elements),
1014 // the ratio array is changed to the ratio by weight, so all successive
1015 // calls with the same array must specify the number of elements as
1017 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1018 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1020 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1021 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1022 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1023 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1024 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1026 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1032 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1033 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1034 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1035 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1036 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1037 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1038 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1039 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1040 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1041 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1043 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1045 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1047 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1048 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1049 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1050 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1051 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1052 // After a call with ratios by number (negative number of elements),
1053 // the ratio array is changed to the ratio by weight, so all successive
1054 // calls with the same array must specify the number of elements as
1056 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1057 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1058 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1059 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1060 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1061 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1062 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1064 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1065 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1066 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1067 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1068 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1069 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1071 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1072 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1073 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1074 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1075 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1076 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1079 //_____________________________________________________________________________
1080 void AliITSvPPRcoarsesymm::Init(){
1081 ////////////////////////////////////////////////////////////////////////
1082 // Initialise the ITS after it has been created.
1083 ////////////////////////////////////////////////////////////////////////
1087 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1088 for(i=0;i<25;i++) cout << "*";cout << endl;
1092 for(i=0;i<72;i++) cout << "*";
1097 //_____________________________________________________________________________
1098 void AliITSvPPRcoarsesymm::DrawModule(){
1099 ////////////////////////////////////////////////////////////////////////
1100 // Draw a shaded view of the FMD version 6.
1101 ////////////////////////////////////////////////////////////////////////
1103 // Set everything unseen
1104 gMC->Gsatt("*", "seen", -1);
1106 // Set ALIC mother visible
1107 gMC->Gsatt("ALIC","SEEN",0);
1109 // Set the volumes visible
1110 gMC->Gsatt("ITSD","SEEN",0);
1111 gMC->Gsatt("ITS1","SEEN",1);
1112 gMC->Gsatt("ITS2","SEEN",1);
1113 gMC->Gsatt("ITS3","SEEN",1);
1114 gMC->Gsatt("ITS4","SEEN",1);
1115 gMC->Gsatt("ITS5","SEEN",1);
1116 gMC->Gsatt("ITS6","SEEN",1);
1118 gMC->Gsatt("IPCB","SEEN",1);
1119 gMC->Gsatt("ICO2","SEEN",1);
1120 gMC->Gsatt("ICER","SEEN",0);
1121 gMC->Gsatt("ISI2","SEEN",0);
1122 gMC->Gsatt("IPLA","SEEN",0);
1123 gMC->Gsatt("ICO3","SEEN",0);
1124 gMC->Gsatt("IEPX","SEEN",0);
1125 gMC->Gsatt("ISI3","SEEN",1);
1126 gMC->Gsatt("ISUP","SEEN",0);
1127 gMC->Gsatt("ICHO","SEEN",0);
1128 gMC->Gsatt("ICMO","SEEN",0);
1129 gMC->Gsatt("ICMD","SEEN",0);
1130 gMC->Gsatt("ICCO","SEEN",1);
1131 gMC->Gsatt("ICCM","SEEN",0);
1132 gMC->Gsatt("ITMD","SEEN",0);
1133 gMC->Gsatt("ITTT","SEEN",1);
1136 gMC->Gdopt("hide", "on");
1137 gMC->Gdopt("shad", "on");
1138 gMC->Gsatt("*", "fill", 7);
1139 gMC->SetClipBox(".");
1140 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1141 gMC->DefaultRange();
1142 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1143 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1144 gMC->Gdman(17, 6, "MAN");
1146 //_____________________________________________________________________________
1147 void AliITSvPPRcoarsesymm::StepManager(){
1148 ////////////////////////////////////////////////////////////////////////
1149 // Called for every step in the ITS, then calls the AliITShit class
1150 // creator with the information to be recoreded about that hit.
1151 ////////////////////////////////////////////////////////////////////////
1157 TLorentzVector position, momentum;
1158 // TClonesArray &lhits = *fHits;
1160 // no hits for this coarse symmetric version.
1166 if(gMC->IsTrackInside()) vol[3] += 1;
1167 if(gMC->IsTrackEntering()) vol[3] += 2;
1168 if(gMC->IsTrackExiting()) vol[3] += 4;
1169 if(gMC->IsTrackOut()) vol[3] += 8;
1170 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1171 if(gMC->IsTrackStop()) vol[3] += 32;
1172 if(gMC->IsTrackAlive()) vol[3] += 64;
1174 // Fill hit structure.
1175 if( !(gMC->TrackCharge()) ) return;
1177 // Only entering charged tracks
1178 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1180 id=gMC->CurrentVolOffID(1,copy);
1182 id=gMC->CurrentVolOffID(2,copy);
1184 } else if(id==fIdSens[1]) {
1186 id=gMC->CurrentVolOffID(1,copy);
1188 id=gMC->CurrentVolOffID(2,copy);
1190 } else if(id==fIdSens[2]) {
1193 id=gMC->CurrentVolOffID(1,copy);
1195 } else if(id==fIdSens[3]) {
1198 id=gMC->CurrentVolOffID(1,copy);
1200 } else if(id==fIdSens[4]) {
1203 id=gMC->CurrentVolOffID(1,copy);
1205 } else if(id==fIdSens[5]) {
1208 id=gMC->CurrentVolOffID(1,copy);
1211 gMC->TrackPosition(position);
1212 gMC->TrackMomentum(momentum);
1213 hits[0]=position[0];
1214 hits[1]=position[1];
1215 hits[2]=position[2];
1216 hits[3]=momentum[0];
1217 hits[4]=momentum[1];
1218 hits[5]=momentum[2];
1219 hits[6]=gMC->Edep();
1220 hits[7]=gMC->TrackTime();
1221 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1223 // no hits for this coarse symmetric version.