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.24 2001/05/25 15:59:59 morsch
19 Overlaps corrected. (R. Barbera)
21 Revision 1.23 2001/05/03 08:40:15 barbera
22 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
24 Revision 1.21 2001/04/04 07:02:16 barbera
25 Position of the cylinders holding rails corrected
27 Revision 1.20 2001/03/29 22:01:53 barbera
28 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
30 Revision 1.19 2001/03/29 05:28:56 barbera
31 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
33 Revision 1.18 2001/03/28 06:40:21 barbera
34 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
36 Revision 1.17 2001/03/13 18:13:30 barbera
37 Some mother volumes sligthly modified to eliminate an overlap with the absorber
39 Revision 1.16 2001/02/09 00:05:31 nilsen
40 Added fMajor/MinorVersion variables and made other changes to better make
41 use of the new code changes in AliITSgeom related classes.
43 Revision 1.15 2001/01/30 09:23:13 hristov
44 Streamers removed (R.Brun)
46 Revision 1.14 2001/01/17 07:41:29 barbera
47 Some media parameters modified
49 Revision 1.13 2001/01/15 13:13:52 barbera
52 Revision 1.12 2000/12/10 16:00:44 barbera
53 Added last definition of special media like end-ladder boxes and cones
55 Revision 1.11 2000/10/30 08:02:25 barbera
56 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
58 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
59 Position of rails w.r.t. the interaction point corrected.
61 Revision 1.9 2000/10/27 13:31:29 barbera
62 Rails between ITS and TPC added.
64 Revision 1.8 2000/10/27 13:03:08 barbera
65 Small changes in the SPD volumes and materials
67 Revision 1.6 2000/10/16 14:45:37 barbera
68 Mother volume ITSD modified to avoid some overlaps
70 Revision 1.5 2000/10/16 13:49:15 barbera
71 Services volumes slightly modified and material added following Pierluigi Barberis' information
73 Revision 1.4 2000/10/07 15:33:07 barbera
74 Small corrections to the ITSV mother volume
76 Revision 1.3 2000/10/07 13:06:50 barbera
77 Some new materials and media defined
79 Revision 1.2 2000/10/07 10:42:43 barbera
80 Mother volume ITSV corrected
82 Revision 1.1 2000/10/06 23:09:12 barbera
83 New coarse geometry (symmetric services
85 Revision 1.20 2000/10/02 21:28:08 fca
86 Removal of useless dependecies via forward declarations
88 Revision 1.19 2000/07/10 16:07:19 fca
89 Release version of ITS code
91 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
92 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
94 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
95 Fixed up the comments/documentation.
97 Revision 1.14 1999/11/25 06:52:56 fca
100 Revision 1.13.2.1 1999/11/25 06:52:21 fca
101 Correct value of drca
103 Revision 1.13 1999/10/27 11:16:26 fca
104 Correction of problem in geometry
106 Revision 1.12 1999/10/22 08:25:25 fca
107 remove double definition of destructors
109 Revision 1.11 1999/10/22 08:16:49 fca
110 Correct destructors, thanks to I.Hrivnacova
112 Revision 1.10 1999/10/06 19:56:50 fca
115 Revision 1.9 1999/10/05 08:05:09 fca
116 Minor corrections for uninitialised variables.
118 Revision 1.8 1999/09/29 09:24:20 fca
119 Introduction of the Copyright and cvs Log
123 ///////////////////////////////////////////////////////////////////////////////
125 // Inner Traking System version PPR coarse symmetric //
126 // This class contains the base procedures for the Inner Tracking System //
128 // Authors: R. Barbera
132 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
133 // THIS WILL NOT WORK
134 // with the geometry or module classes or any analysis classes. You are
135 // strongly encouraged to uses AliITSv5.
137 ///////////////////////////////////////////////////////////////////////////////
138 #include <iostream.h>
142 #include <TGeometry.h>
145 #include <TFile.h> // only required for Tracking function?
147 #include <TObjArray.h>
148 #include <TClonesArray.h>
153 #include "AliConst.h"
155 #include "AliITShit.h"
156 #include "AliITSvPPRcoarsesymm.h"
160 ClassImp(AliITSvPPRcoarsesymm)
162 //_____________________________________________________________________________
163 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
164 ////////////////////////////////////////////////////////////////////////
165 // Standard default constructor for the ITS version 7.
166 ////////////////////////////////////////////////////////////////////////
174 //_____________________________________________________________________________
175 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
176 ////////////////////////////////////////////////////////////////////////
177 // Standard constructor for the ITS version 7.
178 ////////////////////////////////////////////////////////////////////////
181 fIdName = new TString[fIdN];
188 fIdSens = new Int_t[fIdN];
189 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
193 //____________________________________________________________________________
194 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
195 ////////////////////////////////////////////////////////////////////////
196 // Copy Constructor for ITS version 7.
197 ////////////////////////////////////////////////////////////////////////
198 if(&source == this) return;
199 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
202 //_____________________________________________________________________________
203 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
204 ////////////////////////////////////////////////////////////////////////
205 // Assignment operator for the ITS version 7.
206 ////////////////////////////////////////////////////////////////////////
207 if(&source == this) return *this;
208 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
211 //_____________________________________________________________________________
212 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
213 ////////////////////////////////////////////////////////////////////////
214 // Standard destructor for the ITS version 7.
215 ////////////////////////////////////////////////////////////////////////
218 //__________________________________________________________________________
219 void AliITSvPPRcoarsesymm::BuildGeometry(){
220 ////////////////////////////////////////////////////////////////////////
221 // Geometry builder for the ITS version 7.
222 ////////////////////////////////////////////////////////////////////////
224 const Int_t kColorITS=kYellow;
226 top = gAlice->GetGeometry()->GetNode("alice");
227 new TTUBE("S_layer1","Layer1 of ITS","void",3.8095,3.8095+1.03*9.36/100.,14.35);
229 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
230 node->SetLineColor(kColorITS);
233 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
235 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
236 node->SetLineColor(kColorITS);
239 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
241 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
242 node->SetLineColor(kColorITS);
245 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
247 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
248 node->SetLineColor(kColorITS);
251 new TTUBE("S_layer5","Layer5 of ITS","void",38.5,38.5+0.91*9.36/100.,49.405);
253 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
254 node->SetLineColor(kColorITS);
257 new TTUBE("S_layer6","Layer6 of ITS","void",43.5765,43.5765+0.87*9.36/100.,55.27);
259 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
260 node->SetLineColor(kColorITS);
264 //_____________________________________________________________________________
265 void AliITSvPPRcoarsesymm::CreateGeometry(){
266 ////////////////////////////////////////////////////////////////////////
267 // This routine defines and Creates the geometry for version 7 of the ITS.
268 ////////////////////////////////////////////////////////////////////////
270 //INNER RADII OF THE SILICON LAYERS
271 Float_t rl[6] = { 3.8095,7.,15.,24.,38.5,43.5765 };
272 //THICKNESSES OF LAYERS (in % radiation length)
273 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
274 //HALF LENGTHS OF LAYERS
275 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
276 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
277 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
278 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
279 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
282 Float_t dits[3], rlim, zmax;
284 Float_t pcits[100], ztpc;
285 Int_t idrotm[1999], i;
288 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
289 Int_t suppmat = 0; // flag to change the material of the services
290 // supports (=0 copper, =1 aluminum, =2 carbon)
293 if(rails != 0 && rails != 1) {
294 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
295 " The default value of 1 (rails in) will be used." << endl;
299 cout << "ITS: Rails are out." << endl;
301 cout << "ITS: Rails are in." << endl;
304 suppmat = GetSupportMaterial();
306 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
307 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)."
308 " The default value of 0 (copper) will be used." << endl;
312 cout << "ITS: The material of the services supports is copper." << endl;
313 } else if (suppmat == 1){
314 cout << "ITS: The material of the services supports is aluminum." << endl;
316 cout << "ITS: The material of the services supports is carbon." << endl;
320 Int_t *idtmed = fIdtmed->GetArray()-199;
322 // CONVERT INTO CM (RL(SI)=9.36 CM)
323 for (i = 0; i < 6; ++i) {
324 drl[i] = drl[i] / 100. * 9.36;
327 // FIELD CAGE HALF LENGTH
333 // --- Define ghost volume containing the whole ITS (including services)
334 // and fill it with air
339 dgh[3] = -ztpc-5.-0.1;
384 dgh[48] = ztpc+4.+0.1;
387 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
389 // --- Place the ghost volume in its mother volume (ALIC) and make it
392 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
393 //gMC->Gsatt("ITSV", "SEEN", 0);
396 // --- Define ghost volume containing the six layers and fill it with air
425 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
427 // --- Place the ghost volume in its mother volume (ALIC) and make it
430 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
431 //gMC->Gsatt("ITSD", "SEEN", 0);
433 // ITS LAYERS (SILICON)
436 dits[1] = rl[0] + drl[0];
438 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
439 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
442 dits[1] = rl[1] + drl[1];
444 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
445 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
448 dits[1] = rl[2] + drl[2];
450 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
451 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
454 dits[1] = rl[3] + drl[3];
456 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
457 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
460 dits[1] = rl[4] + drl[4];
462 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
463 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
466 dits[1] = rl[5] + drl[5];
468 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
469 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
471 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
473 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
474 for (i = 0; i < 2; i++) {
476 dits[1] = dits[0] + drb[i];
477 dits[2] = dzb[i] / 2.;
478 zpos = dzl[i] + dits[2];
479 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
480 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
483 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
485 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
486 for (i = 2; i < 3; i++) {
488 dits[1] = dits[0] + drb[i];
489 dits[2] = dzb[i] / 2.;
490 zpos = dzl[i] + dits[2];
491 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
492 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
494 for (i = 3; i < 4; i++) {
496 dits[1] = dits[0] + drb[i];
497 dits[2] = dzb[i] / 2.;
498 zpos = dzl[i] + dits[2];
499 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
500 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
504 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
506 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
507 for (i = 4; i < 5; i++) {
509 dits[1] = dits[0] + drb[i];
510 dits[2] = dzb[i] / 2.;
511 zpos = dzl[i] + dits[2];
512 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
513 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
515 for (i = 5; i < 6; i++) {
516 dits[0] = rl[i]+0.4235;
517 dits[1] = dits[0] + drb[i];
518 dits[2] = dzb[i] / 2.;
519 zpos = dzl[i] + dits[2];
520 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
521 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
524 // DEFINE THERMAL SCREEN FOR SPD
529 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
530 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
532 // DEFINE END CONES FOR SDD
534 pcits[0] = (59.-42.5)/2.;
539 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
540 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
541 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
542 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
544 // DEFINE CYLINDER BETWEEN SDD AND SSD
546 pcits[0] = (59.5-0.13/2.)/2.;
547 pcits[1] = (59.5+0.13/2.)/2.;
549 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
550 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
552 // DEFINE END CONES FOR SSD
554 pcits[0] = (74.-59.)/2.;
559 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
560 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
561 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
564 // **************************** SERVICES *********************************
567 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
577 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
578 } else if (suppmat == 1) {
579 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
581 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
583 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
584 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
586 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
596 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
597 } else if (suppmat == 1) {
598 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
600 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
602 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
603 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
606 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
610 dgh[1] = 46.+1.0+1.5;
615 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
616 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
617 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
619 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
623 dgh[1] = 46.+1.0+1.5;
628 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
629 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
630 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
632 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
641 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
642 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
643 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
646 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
655 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
656 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
657 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
659 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
661 dgh[0] = (ztpc-97.5)/2.;
668 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
669 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
670 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
672 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
674 dgh[0] = (ztpc-97.5)/2.;
681 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
682 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
683 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
685 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
687 dgh[0] = (ztpc-97.5)/2.;
689 dgh[2] = 46.2+1.0+1.5;
691 dgh[4] = 62.3+1.0+1.5;
694 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
695 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
696 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
698 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
700 dgh[0] = (ztpc-97.5)/2.;
702 dgh[2] = 46.2+1.0+1.5;
704 dgh[4] = 62.3+1.0+1.5;
707 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
708 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
709 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
711 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
718 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
719 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
720 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
722 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
729 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
730 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
731 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
733 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
740 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
741 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
742 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
744 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
751 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
752 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
753 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
755 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
762 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
763 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
765 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
772 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
773 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
775 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
782 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
783 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
784 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
785 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
787 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
788 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
790 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
791 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
792 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
793 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
797 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
802 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
803 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
804 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
806 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
810 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
811 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
812 gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");
813 gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");
814 gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY");
815 gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");
816 gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");
817 gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");
818 gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY");
819 gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");
821 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
826 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
827 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
828 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
829 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
834 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
835 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
836 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
837 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
839 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
844 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
845 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
846 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
847 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
849 // --- Outputs the geometry tree in the EUCLID/CAD format
852 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
855 //_____________________________________________________________________________
856 void AliITSvPPRcoarsesymm::CreateMaterials(){
857 ////////////////////////////////////////////////////////////////////////
859 // Create ITS materials
860 // This function defines the default materials used in the Geant
861 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
862 // AliITSvPPRcoarseasymm.
863 // In general it is automatically replaced by
864 // the CreatMaterials routine defined in AliITSv?. Should the function
865 // CreateMaterials not exist for the geometry version you are using this
866 // one is used. See the definition found in AliITSv5 or the other routine
867 // for a complete definition.
870 Float_t awat[2] = { 1.00794,15.9994 };
871 Float_t zwat[2] = { 1.,8. };
872 Float_t wwat[2] = { 2.,1. };
873 Float_t denswat = 1.;
875 Float_t afre[2] = { 12.011,18.9984032 };
876 Float_t zfre[2] = { 6.,9. };
877 Float_t wfre[2] = { 5.,12. };
878 Float_t densfre = 1.5;
880 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
881 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
882 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
883 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
884 Float_t denscer = 3.6;
886 // 60% SiO2 , 40% G10FR4
888 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
889 Float_t zpcb[3] = { 14.,8.,8.875 };
890 Float_t wpcb[3] = { .28,.32,.4 };
891 Float_t denspcb = 1.8;
893 Float_t apoly[2] = { 12.01,1. };
894 Float_t zpoly[2] = { 6.,1. };
895 Float_t wpoly[2] = { .33,.67 };
897 Float_t zserv[4] = { 1.,6.,26.,29. };
898 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
899 Float_t wserv[4] = { .014,.086,.42,.48 };
901 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
902 Float_t zsteel[4] = { 26.,24.,28.,14. };
903 Float_t wsteel[4] = { .715,.18,.1,.005 };
906 Int_t isxfld = gAlice->Field()->Integ();
907 Float_t sxmgmx = gAlice->Field()->Max();
910 // --- Define the various materials for GEANT ---
912 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
914 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
915 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
916 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
917 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
919 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
920 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
921 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
922 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
923 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
924 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
925 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
926 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
928 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
929 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
930 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
931 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
932 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
933 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
934 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
935 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
936 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
937 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
938 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
940 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
942 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
943 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
944 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
945 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
947 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
948 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
949 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
950 // After a call with ratios by number (negative number of elements),
951 // the ratio array is changed to the ratio by weight, so all successive
952 // calls with the same array must specify the number of elements as
954 AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
955 // After a call with ratios by number (negative number of elements),
956 // the ratio array is changed to the ratio by weight, so all successive
957 // calls with the same array must specify the number of elements as
959 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
960 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
961 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
962 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
963 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 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.);
966 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 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.);
972 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
973 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
974 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
975 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
976 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
977 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
978 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
981 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
982 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
983 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
984 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
985 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
986 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
987 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
988 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
990 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
991 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
992 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
993 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
995 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
996 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
997 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
998 // After a call with ratios by number (negative number of elements),
999 // the ratio array is changed to the ratio by weight, so all successive
1000 // calls with the same array must specify the number of elements as
1002 AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
1003 // After a call with ratios by number (negative number of elements),
1004 // the ratio array is changed to the ratio by weight, so all successive
1005 // calls with the same array must specify the number of elements as
1007 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1008 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1009 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1010 // After a call with ratios by number (negative number of elements),
1011 // the ratio array is changed to the ratio by weight, so all successive
1012 // calls with the same array must specify the number of elements as
1014 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1015 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1017 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1018 AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.);
1019 AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);
1020 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1021 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1023 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1024 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1025 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1026 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1027 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1028 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1029 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1032 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1033 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1034 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1035 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1036 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1037 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1038 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1040 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1042 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1044 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1045 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1046 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1047 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1048 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1049 // After a call with ratios by number (negative number of elements),
1050 // the ratio array is changed to the ratio by weight, so all successive
1051 // calls with the same array must specify the number of elements as
1053 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1054 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1055 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1056 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1057 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1058 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1059 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1061 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1062 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1063 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1064 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1065 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1066 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1067 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1068 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1069 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1071 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1072 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1073 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1076 //_____________________________________________________________________________
1077 void AliITSvPPRcoarsesymm::Init(){
1078 ////////////////////////////////////////////////////////////////////////
1079 // Initialise the ITS after it has been created.
1080 ////////////////////////////////////////////////////////////////////////
1084 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1085 for(i=0;i<25;i++) cout << "*";cout << endl;
1089 for(i=0;i<72;i++) cout << "*";
1094 //_____________________________________________________________________________
1095 void AliITSvPPRcoarsesymm::DrawModule(){
1096 ////////////////////////////////////////////////////////////////////////
1097 // Draw a shaded view of the FMD version 6.
1098 ////////////////////////////////////////////////////////////////////////
1100 // Set everything unseen
1101 gMC->Gsatt("*", "seen", -1);
1103 // Set ALIC mother visible
1104 gMC->Gsatt("ALIC","SEEN",0);
1106 // Set the volumes visible
1107 gMC->Gsatt("ITSD","SEEN",0);
1108 gMC->Gsatt("ITS1","SEEN",1);
1109 gMC->Gsatt("ITS2","SEEN",1);
1110 gMC->Gsatt("ITS3","SEEN",1);
1111 gMC->Gsatt("ITS4","SEEN",1);
1112 gMC->Gsatt("ITS5","SEEN",1);
1113 gMC->Gsatt("ITS6","SEEN",1);
1115 gMC->Gsatt("IPCB","SEEN",1);
1116 gMC->Gsatt("ICO2","SEEN",1);
1117 gMC->Gsatt("ICER","SEEN",0);
1118 gMC->Gsatt("ISI2","SEEN",0);
1119 gMC->Gsatt("IPLA","SEEN",0);
1120 gMC->Gsatt("ICO3","SEEN",0);
1121 gMC->Gsatt("IEPX","SEEN",0);
1122 gMC->Gsatt("ISI3","SEEN",1);
1123 gMC->Gsatt("ISUP","SEEN",0);
1124 gMC->Gsatt("ICHO","SEEN",0);
1125 gMC->Gsatt("ICMO","SEEN",0);
1126 gMC->Gsatt("ICMD","SEEN",0);
1127 gMC->Gsatt("ICCO","SEEN",1);
1128 gMC->Gsatt("ICCM","SEEN",0);
1129 gMC->Gsatt("ITMD","SEEN",0);
1130 gMC->Gsatt("ITTT","SEEN",1);
1133 gMC->Gdopt("hide", "on");
1134 gMC->Gdopt("shad", "on");
1135 gMC->Gsatt("*", "fill", 7);
1136 gMC->SetClipBox(".");
1137 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1138 gMC->DefaultRange();
1139 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1140 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1141 gMC->Gdman(17, 6, "MAN");
1143 //_____________________________________________________________________________
1144 void AliITSvPPRcoarsesymm::StepManager(){
1145 ////////////////////////////////////////////////////////////////////////
1146 // Called for every step in the ITS, then calls the AliITShit class
1147 // creator with the information to be recoreded about that hit.
1148 ////////////////////////////////////////////////////////////////////////
1154 TLorentzVector position, momentum;
1155 // TClonesArray &lhits = *fHits;
1157 // no hits for this coarse symmetric version.
1163 if(gMC->IsTrackInside()) vol[3] += 1;
1164 if(gMC->IsTrackEntering()) vol[3] += 2;
1165 if(gMC->IsTrackExiting()) vol[3] += 4;
1166 if(gMC->IsTrackOut()) vol[3] += 8;
1167 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1168 if(gMC->IsTrackStop()) vol[3] += 32;
1169 if(gMC->IsTrackAlive()) vol[3] += 64;
1171 // Fill hit structure.
1172 if( !(gMC->TrackCharge()) ) return;
1174 // Only entering charged tracks
1175 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1177 id=gMC->CurrentVolOffID(1,copy);
1179 id=gMC->CurrentVolOffID(2,copy);
1181 } else if(id==fIdSens[1]) {
1183 id=gMC->CurrentVolOffID(1,copy);
1185 id=gMC->CurrentVolOffID(2,copy);
1187 } else if(id==fIdSens[2]) {
1190 id=gMC->CurrentVolOffID(1,copy);
1192 } else if(id==fIdSens[3]) {
1195 id=gMC->CurrentVolOffID(1,copy);
1197 } else if(id==fIdSens[4]) {
1200 id=gMC->CurrentVolOffID(1,copy);
1202 } else if(id==fIdSens[5]) {
1205 id=gMC->CurrentVolOffID(1,copy);
1208 gMC->TrackPosition(position);
1209 gMC->TrackMomentum(momentum);
1210 hits[0]=position[0];
1211 hits[1]=position[1];
1212 hits[2]=position[2];
1213 hits[3]=momentum[0];
1214 hits[4]=momentum[1];
1215 hits[5]=momentum[2];
1216 hits[6]=gMC->Edep();
1217 hits[7]=gMC->TrackTime();
1218 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1220 // no hits for this coarse symmetric version.