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.26 2002/10/22 14:46:01 alibrary
19 Introducing Riostream.h
21 Revision 1.25 2001/10/18 12:26:38 barbera
22 Six cylinders definition in BuildGeometry() improved by comparison with CreateGeometry()
24 Revision 1.24 2001/05/25 15:59:59 morsch
25 Overlaps corrected. (R. Barbera)
27 Revision 1.23 2001/05/03 08:40:15 barbera
28 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
30 Revision 1.21 2001/04/04 07:02:16 barbera
31 Position of the cylinders holding rails corrected
33 Revision 1.20 2001/03/29 22:01:53 barbera
34 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
36 Revision 1.19 2001/03/29 05:28:56 barbera
37 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
39 Revision 1.18 2001/03/28 06:40:21 barbera
40 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
42 Revision 1.17 2001/03/13 18:13:30 barbera
43 Some mother volumes sligthly modified to eliminate an overlap with the absorber
45 Revision 1.16 2001/02/09 00:05:31 nilsen
46 Added fMajor/MinorVersion variables and made other changes to better make
47 use of the new code changes in AliITSgeom related classes.
49 Revision 1.15 2001/01/30 09:23:13 hristov
50 Streamers removed (R.Brun)
52 Revision 1.14 2001/01/17 07:41:29 barbera
53 Some media parameters modified
55 Revision 1.13 2001/01/15 13:13:52 barbera
58 Revision 1.12 2000/12/10 16:00:44 barbera
59 Added last definition of special media like end-ladder boxes and cones
61 Revision 1.11 2000/10/30 08:02:25 barbera
62 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
64 Revision 1.3.2.7 2000/10/27 17:20:00 barbera
65 Position of rails w.r.t. the interaction point corrected.
67 Revision 1.9 2000/10/27 13:31:29 barbera
68 Rails between ITS and TPC added.
70 Revision 1.8 2000/10/27 13:03:08 barbera
71 Small changes in the SPD volumes and materials
73 Revision 1.6 2000/10/16 14:45:37 barbera
74 Mother volume ITSD modified to avoid some overlaps
76 Revision 1.5 2000/10/16 13:49:15 barbera
77 Services volumes slightly modified and material added following Pierluigi Barberis' information
79 Revision 1.4 2000/10/07 15:33:07 barbera
80 Small corrections to the ITSV mother volume
82 Revision 1.3 2000/10/07 13:06:50 barbera
83 Some new materials and media defined
85 Revision 1.2 2000/10/07 10:42:43 barbera
86 Mother volume ITSV corrected
88 Revision 1.1 2000/10/06 23:09:12 barbera
89 New coarse geometry (symmetric services
91 Revision 1.20 2000/10/02 21:28:08 fca
92 Removal of useless dependecies via forward declarations
94 Revision 1.19 2000/07/10 16:07:19 fca
95 Release version of ITS code
97 Revision 1.14.2.2 2000/05/19 10:09:21 nilsen
98 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
100 Revision 1.14.2.1 2000/03/04 23:45:19 nilsen
101 Fixed up the comments/documentation.
103 Revision 1.14 1999/11/25 06:52:56 fca
104 Correct value of drca
106 Revision 1.13.2.1 1999/11/25 06:52:21 fca
107 Correct value of drca
109 Revision 1.13 1999/10/27 11:16:26 fca
110 Correction of problem in geometry
112 Revision 1.12 1999/10/22 08:25:25 fca
113 remove double definition of destructors
115 Revision 1.11 1999/10/22 08:16:49 fca
116 Correct destructors, thanks to I.Hrivnacova
118 Revision 1.10 1999/10/06 19:56:50 fca
121 Revision 1.9 1999/10/05 08:05:09 fca
122 Minor corrections for uninitialised variables.
124 Revision 1.8 1999/09/29 09:24:20 fca
125 Introduction of the Copyright and cvs Log
129 ///////////////////////////////////////////////////////////////////////////////
131 // Inner Traking System version PPR coarse symmetric //
132 // This class contains the base procedures for the Inner Tracking System //
134 // Authors: R. Barbera
138 // NOTE: THIS IS THE COARSE SYMMETRIC PPR geometry of the ITS.
139 // THIS WILL NOT WORK
140 // with the geometry or module classes or any analysis classes. You are
141 // strongly encouraged to uses AliITSv5.
143 ///////////////////////////////////////////////////////////////////////////////
144 #include <Riostream.h>
148 #include <TGeometry.h>
151 #include <TFile.h> // only required for Tracking function?
153 #include <TObjArray.h>
154 #include <TClonesArray.h>
158 #include "AliConst.h"
160 #include "AliITShit.h"
161 #include "AliITSvPPRcoarsesymm.h"
165 ClassImp(AliITSvPPRcoarsesymm)
167 //_____________________________________________________________________________
168 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
169 ////////////////////////////////////////////////////////////////////////
170 // Standard default constructor for the ITS version 7.
171 ////////////////////////////////////////////////////////////////////////
179 //_____________________________________________________________________________
180 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
181 ////////////////////////////////////////////////////////////////////////
182 // Standard constructor for the ITS version 7.
183 ////////////////////////////////////////////////////////////////////////
186 fIdName = new TString[fIdN];
193 fIdSens = new Int_t[fIdN];
194 for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
198 //____________________________________________________________________________
199 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
200 ////////////////////////////////////////////////////////////////////////
201 // Copy Constructor for ITS version 7.
202 ////////////////////////////////////////////////////////////////////////
203 if(&source == this) return;
204 Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
207 //_____________________________________________________________________________
208 AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm &source){
209 ////////////////////////////////////////////////////////////////////////
210 // Assignment operator for the ITS version 7.
211 ////////////////////////////////////////////////////////////////////////
212 if(&source == this) return *this;
213 Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
216 //_____________________________________________________________________________
217 AliITSvPPRcoarsesymm::~AliITSvPPRcoarsesymm() {
218 ////////////////////////////////////////////////////////////////////////
219 // Standard destructor for the ITS version 7.
220 ////////////////////////////////////////////////////////////////////////
223 //__________________________________________________________________________
224 void AliITSvPPRcoarsesymm::BuildGeometry(){
225 ////////////////////////////////////////////////////////////////////////
226 // Geometry builder for the ITS version 7.
227 ////////////////////////////////////////////////////////////////////////
229 const Int_t kColorITS=kYellow;
231 top = gAlice->GetGeometry()->GetNode("alice");
232 new TTUBE("S_layer1","Layer1 of ITS","void",3.8095,3.8095+1.03*9.36/100.,14.35);
234 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
235 node->SetLineColor(kColorITS);
238 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
240 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
241 node->SetLineColor(kColorITS);
244 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
246 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
247 node->SetLineColor(kColorITS);
250 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
252 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
253 node->SetLineColor(kColorITS);
256 new TTUBE("S_layer5","Layer5 of ITS","void",38.5,38.5+0.91*9.36/100.,49.405);
258 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
259 node->SetLineColor(kColorITS);
262 new TTUBE("S_layer6","Layer6 of ITS","void",43.5765,43.5765+0.87*9.36/100.,55.27);
264 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
265 node->SetLineColor(kColorITS);
269 //_____________________________________________________________________________
270 void AliITSvPPRcoarsesymm::CreateGeometry(){
271 ////////////////////////////////////////////////////////////////////////
272 // This routine defines and Creates the geometry for version 7 of the ITS.
273 ////////////////////////////////////////////////////////////////////////
275 //INNER RADII OF THE SILICON LAYERS
276 Float_t rl[6] = { 3.8095,7.,15.,24.,38.5,43.5765 };
277 //THICKNESSES OF LAYERS (in % radiation length)
278 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
279 //HALF LENGTHS OF LAYERS
280 Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
281 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
282 Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
283 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
284 Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
287 Float_t dits[3], rlim, zmax;
289 Float_t pcits[100], ztpc;
290 Int_t idrotm[1999], i;
293 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
294 Int_t suppmat = 0; // flag to change the material of the services
295 // supports (=0 copper, =1 aluminum, =2 carbon)
298 if(rails != 0 && rails != 1) {
299 cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)."
300 " The default value of 1 (rails in) will be used." << endl;
304 cout << "ITS: Rails are out." << endl;
306 cout << "ITS: Rails are in." << endl;
309 suppmat = GetSupportMaterial();
311 if (suppmat != 0 && suppmat != 1 && suppmat != 2) {
312 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)."
313 " The default value of 0 (copper) will be used." << endl;
317 cout << "ITS: The material of the services supports is copper." << endl;
318 } else if (suppmat == 1){
319 cout << "ITS: The material of the services supports is aluminum." << endl;
321 cout << "ITS: The material of the services supports is carbon." << endl;
325 Int_t *idtmed = fIdtmed->GetArray()-199;
327 // CONVERT INTO CM (RL(SI)=9.36 CM)
328 for (i = 0; i < 6; ++i) {
329 drl[i] = drl[i] / 100. * 9.36;
332 // FIELD CAGE HALF LENGTH
338 // --- Define ghost volume containing the whole ITS (including services)
339 // and fill it with air
344 dgh[3] = -ztpc-5.-0.1;
389 dgh[48] = ztpc+4.+0.1;
392 gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
394 // --- Place the ghost volume in its mother volume (ALIC) and make it
397 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
398 //gMC->Gsatt("ITSV", "SEEN", 0);
401 // --- Define ghost volume containing the six layers and fill it with air
430 gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
432 // --- Place the ghost volume in its mother volume (ALIC) and make it
435 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
436 //gMC->Gsatt("ITSD", "SEEN", 0);
438 // ITS LAYERS (SILICON)
441 dits[1] = rl[0] + drl[0];
443 gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
444 gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
447 dits[1] = rl[1] + drl[1];
449 gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
450 gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
453 dits[1] = rl[2] + drl[2];
455 gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
456 gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
459 dits[1] = rl[3] + drl[3];
461 gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
462 gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
465 dits[1] = rl[4] + drl[4];
467 gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
468 gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
471 dits[1] = rl[5] + drl[5];
473 gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
474 gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
476 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
478 gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0);
479 for (i = 0; i < 2; i++) {
481 dits[1] = dits[0] + drb[i];
482 dits[2] = dzb[i] / 2.;
483 zpos = dzl[i] + dits[2];
484 gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
485 gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
488 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
490 gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0);
491 for (i = 2; i < 3; i++) {
493 dits[1] = dits[0] + drb[i];
494 dits[2] = dzb[i] / 2.;
495 zpos = dzl[i] + dits[2];
496 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
497 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
499 for (i = 3; i < 4; i++) {
501 dits[1] = dits[0] + drb[i];
502 dits[2] = dzb[i] / 2.;
503 zpos = dzl[i] + dits[2];
504 gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
505 gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
509 // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
511 gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0);
512 for (i = 4; i < 5; i++) {
514 dits[1] = dits[0] + drb[i];
515 dits[2] = dzb[i] / 2.;
516 zpos = dzl[i] + dits[2];
517 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
518 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
520 for (i = 5; i < 6; i++) {
521 dits[0] = rl[i]+0.4235;
522 dits[1] = dits[0] + drb[i];
523 dits[2] = dzb[i] / 2.;
524 zpos = dzl[i] + dits[2];
525 gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
526 gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
529 // DEFINE THERMAL SCREEN FOR SPD
534 gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);
535 gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
537 // DEFINE END CONES FOR SDD
539 pcits[0] = (59.-42.5)/2.;
544 gMC->Gsvolu("ICO1", "CONE", idtmed[238], pcits, 5);
545 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
546 gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
547 gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
549 // DEFINE CYLINDER BETWEEN SDD AND SSD
551 pcits[0] = (59.5-0.13/2.)/2.;
552 pcits[1] = (59.5+0.13/2.)/2.;
554 gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);
555 gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
557 // DEFINE END CONES FOR SSD
559 pcits[0] = (74.-59.)/2.;
564 gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);
565 gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
566 gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
569 // **************************** SERVICES *********************************
572 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
582 gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5); // copper
583 } else if (suppmat == 1) {
584 gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5); // aluminum
586 gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5); // carbon
588 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
589 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
591 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
601 gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5); // copper
602 } else if (suppmat == 1) {
603 gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5); // aluminum
605 gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5); // carbon
607 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
608 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
611 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
615 dgh[1] = 46.+1.0+1.5;
620 gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);
621 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
622 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
624 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
628 dgh[1] = 46.+1.0+1.5;
633 gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);
634 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
635 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
637 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
646 gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);
647 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
648 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
651 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
660 gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);
661 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
662 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
664 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
666 dgh[0] = (ztpc-97.5)/2.;
673 gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);
674 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
675 gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
677 // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
679 dgh[0] = (ztpc-97.5)/2.;
686 gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);
687 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
688 gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
690 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
692 dgh[0] = (ztpc-97.5)/2.;
694 dgh[2] = 46.2+1.0+1.5;
696 dgh[4] = 62.3+1.0+1.5;
699 gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);
700 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
701 gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
703 // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
705 dgh[0] = (ztpc-97.5)/2.;
707 dgh[2] = 46.2+1.0+1.5;
709 dgh[4] = 62.3+1.0+1.5;
712 gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);
713 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
714 gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");
716 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
723 gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);
724 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
725 gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
727 // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
734 gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);
735 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
736 gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");
738 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
745 gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);
746 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
747 gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
749 // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
756 gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);
757 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
758 gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY");
760 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
767 gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);
768 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
770 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
777 gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);
778 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
780 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
787 gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
788 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
789 gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);
790 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
792 dgh[0] = 2.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
793 dgh[1] = 8.-0.5; // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
795 gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);
796 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
797 gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);
798 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
802 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
807 gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);
808 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");
809 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");
811 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
815 dgh[2] = 5.; // 5. comes from the fact that the volume has to be 567.6/2 cm^3
816 gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);
817 gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");
818 gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");
819 gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY");
820 gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");
821 gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");
822 gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");
823 gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY");
824 gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");
826 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
831 gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);
832 gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
833 gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);
834 gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");
839 gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);
840 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
841 gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);
842 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
844 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
849 gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);
850 gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY");
851 gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY");
852 gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");
854 // --- Outputs the geometry tree in the EUCLID/CAD format
857 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
860 //_____________________________________________________________________________
861 void AliITSvPPRcoarsesymm::CreateMaterials(){
862 ////////////////////////////////////////////////////////////////////////
864 // Create ITS materials
865 // This function defines the default materials used in the Geant
866 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
867 // AliITSvPPRcoarseasymm.
868 // In general it is automatically replaced by
869 // the CreatMaterials routine defined in AliITSv?. Should the function
870 // CreateMaterials not exist for the geometry version you are using this
871 // one is used. See the definition found in AliITSv5 or the other routine
872 // for a complete definition.
875 Float_t awat[2] = { 1.00794,15.9994 };
876 Float_t zwat[2] = { 1.,8. };
877 Float_t wwat[2] = { 2.,1. };
878 Float_t denswat = 1.;
880 Float_t afre[2] = { 12.011,18.9984032 };
881 Float_t zfre[2] = { 6.,9. };
882 Float_t wfre[2] = { 5.,12. };
883 Float_t densfre = 1.5;
885 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
886 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
887 Float_t zcer[5] = { 13.,8.,14.,25., 24. };
888 Float_t wcer[5] = { .49976,1.01233,.01307, .01782,.00342 };
889 Float_t denscer = 3.6;
891 // 60% SiO2 , 40% G10FR4
893 Float_t apcb[3] = { 28.0855,15.9994,17.749 };
894 Float_t zpcb[3] = { 14.,8.,8.875 };
895 Float_t wpcb[3] = { .28,.32,.4 };
896 Float_t denspcb = 1.8;
898 Float_t apoly[2] = { 12.01,1. };
899 Float_t zpoly[2] = { 6.,1. };
900 Float_t wpoly[2] = { .33,.67 };
902 Float_t zserv[4] = { 1.,6.,26.,29. };
903 Float_t aserv[4] = { 1.,12.,55.8,63.5 };
904 Float_t wserv[4] = { .014,.086,.42,.48 };
906 Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
907 Float_t zsteel[4] = { 26.,24.,28.,14. };
908 Float_t wsteel[4] = { .715,.18,.1,.005 };
911 Int_t isxfld = gAlice->Field()->Integ();
912 Float_t sxmgmx = gAlice->Field()->Max();
915 // --- Define the various materials for GEANT ---
917 // 200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
919 AliMaterial(0, "SPD Si$", 28.0855, 14., 2.33, 9.36, 999.);
920 AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
921 AliMaterial(2, "SPD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
922 AliMaterial(3, "SPD C$", 12.011, 6., 2.265,18.8, 999.);
924 AliMaterial(4, "SPD Air$", 14.61, 7.3, .001205, 30423., 999.);
925 AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
926 AliMaterial(6, "SPD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
927 AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
928 AliMixture( 8, "SPD Freon$", afre, zfre, densfre, -2, wfre);
929 AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.);
930 //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);
931 AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.); // check !!!!
933 AliMedium(0, "SPD Si$", 0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
934 AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
935 AliMedium(2, "SPD Si bus$", 2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
936 AliMedium(3, "SPD C$", 3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
937 AliMedium(4, "SPD Air$", 4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
938 AliMedium(5, "SPD Vacuum$", 5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
939 AliMedium(6, "SPD Al$", 6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
940 AliMedium(7, "SPD Water $", 7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
941 AliMedium(8, "SPD Freon$", 8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
942 AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
943 AliMedium(10, "SPD cone$", 10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
945 // 225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
947 AliMaterial(25, "SDD Si$", 28.0855, 14., 2.33, 9.36, 999.);
948 AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
949 AliMaterial(27, "SDD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
950 AliMaterial(28, "SDD C$", 12.011, 6., 2.265,18.8, 999.);
952 AliMaterial(29, "SDD Air$", 14.61, 7.3, .001205, 30423., 999.);
953 AliMaterial(30, "SDD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
954 AliMaterial(31, "SDD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
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(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
960 // After a call with ratios by number (negative number of elements),
961 // the ratio array is changed to the ratio by weight, so all successive
962 // calls with the same array must specify the number of elements as
964 AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
965 AliMixture( 34, "SDD PCB$", apcb, zpcb, denspcb, 3, wpcb);
966 AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
967 AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
968 AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
969 AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.);
970 AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);
971 AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);
972 //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.);
973 //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);
977 AliMedium(25, "SDD Si$", 25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
978 AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
979 AliMedium(27, "SDD Si bus$", 27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
980 AliMedium(28, "SDD C$", 28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
981 AliMedium(29, "SDD Air$", 29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
982 AliMedium(30, "SDD Vacuum$", 30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
983 AliMedium(31, "SDD Al$", 31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
984 AliMedium(32, "SDD Water $", 32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
985 AliMedium(33, "SDD Freon$", 33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
986 AliMedium(34, "SDD PCB$", 34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
987 AliMedium(35, "SDD Copper$", 35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
988 AliMedium(36, "SDD Ceramics$", 36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
989 AliMedium(37, "SDD Kapton$", 37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
990 AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
991 AliMedium(39, "SDD cone$", 39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
992 AliMedium(40, "SDD M55J$", 40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
993 // 250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
995 AliMaterial(50, "SSD Si$", 28.0855, 14., 2.33, 9.36, 999.);
996 AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
997 AliMaterial(52, "SSD Si bus$", 28.0855, 14., 2.33, 9.36, 999.);
998 AliMaterial(53, "SSD C$", 12.011, 6., 2.265,18.8, 999.);
1000 AliMaterial(54, "SSD Air$", 14.61, 7.3, .001205, 30423., 999.);
1001 AliMaterial(55, "SSD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1002 AliMaterial(56, "SSD Al$", 26.981539, 13., 2.6989, 8.9, 999.);
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(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
1008 // After a call with ratios by number (negative number of elements),
1009 // the ratio array is changed to the ratio by weight, so all successive
1010 // calls with the same array must specify the number of elements as
1012 AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1013 AliMixture(59, "SSD PCB$", apcb, zpcb, denspcb, 3, wpcb);
1014 AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1015 // After a call with ratios by number (negative number of elements),
1016 // the ratio array is changed to the ratio by weight, so all successive
1017 // calls with the same array must specify the number of elements as
1019 AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1020 AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1022 AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 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.);
1025 //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.);
1026 //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);
1028 AliMedium(50, "SSD Si$", 50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1029 AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1030 AliMedium(52, "SSD Si bus$", 52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1031 AliMedium(53, "SSD C$", 53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1032 AliMedium(54, "SSD Air$", 54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1033 AliMedium(55, "SSD Vacuum$", 55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1034 AliMedium(56, "SSD Al$", 56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1035 AliMedium(57, "SSD Water $", 57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1036 AliMedium(58, "SSD Freon$", 58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1037 AliMedium(59, "SSD PCB$", 59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1038 AliMedium(60, "SSD Copper$", 60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1039 AliMedium(61, "SSD Ceramics$", 61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1040 AliMedium(62, "SSD Kapton$", 62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1041 AliMedium(63, "SSD G10FR4$", 63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1042 AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1043 AliMedium(65, "SSD cone$", 65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1045 // 275-299 --> General (end-caps, frames, cooling, cables, etc.)
1047 AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1049 AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1050 AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1051 AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1052 AliMixture( 79, "GEN SERVICES$", aserv, zserv, 4.68, 4, wserv);
1053 AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1054 // After a call with ratios by number (negative number of elements),
1055 // the ratio array is changed to the ratio by weight, so all successive
1056 // calls with the same array must specify the number of elements as
1058 AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1059 // AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1060 // AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1061 // AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.); // check !!!
1062 AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1063 AliMaterial(86, "GEN Al$", 26.981539, 13., 2.6989, 8.9, 999.);
1064 AliMaterial(87,"inox/alum$", 32.1502,15.3383,3.0705,6.9197,999.);
1066 AliMedium(75,"GEN C$", 75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1067 AliMedium(76,"GEN Air$", 76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1068 AliMedium(77,"GEN Vacuum$", 77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1069 AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070 AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1071 AliMedium(80,"GEN Copper$", 80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1072 AliMedium(81,"GEN Water $", 81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1073 // AliMedium(82,"GEN Cables$", 82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1074 // AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1075 // AliMedium(84,"GEN serv$", 84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1076 AliMedium(85,"GEN Inox$", 85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1077 AliMedium(86, "GEN Al$", 86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1078 AliMedium(87,"inox/alum$", 87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1081 //_____________________________________________________________________________
1082 void AliITSvPPRcoarsesymm::Init(){
1083 ////////////////////////////////////////////////////////////////////////
1084 // Initialise the ITS after it has been created.
1085 ////////////////////////////////////////////////////////////////////////
1089 for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
1090 for(i=0;i<25;i++) cout << "*";cout << endl;
1094 for(i=0;i<72;i++) cout << "*";
1099 //_____________________________________________________________________________
1100 void AliITSvPPRcoarsesymm::DrawModule(){
1101 ////////////////////////////////////////////////////////////////////////
1102 // Draw a shaded view of the FMD version 6.
1103 ////////////////////////////////////////////////////////////////////////
1105 // Set everything unseen
1106 gMC->Gsatt("*", "seen", -1);
1108 // Set ALIC mother visible
1109 gMC->Gsatt("ALIC","SEEN",0);
1111 // Set the volumes visible
1112 gMC->Gsatt("ITSD","SEEN",0);
1113 gMC->Gsatt("ITS1","SEEN",1);
1114 gMC->Gsatt("ITS2","SEEN",1);
1115 gMC->Gsatt("ITS3","SEEN",1);
1116 gMC->Gsatt("ITS4","SEEN",1);
1117 gMC->Gsatt("ITS5","SEEN",1);
1118 gMC->Gsatt("ITS6","SEEN",1);
1120 gMC->Gsatt("IPCB","SEEN",1);
1121 gMC->Gsatt("ICO2","SEEN",1);
1122 gMC->Gsatt("ICER","SEEN",0);
1123 gMC->Gsatt("ISI2","SEEN",0);
1124 gMC->Gsatt("IPLA","SEEN",0);
1125 gMC->Gsatt("ICO3","SEEN",0);
1126 gMC->Gsatt("IEPX","SEEN",0);
1127 gMC->Gsatt("ISI3","SEEN",1);
1128 gMC->Gsatt("ISUP","SEEN",0);
1129 gMC->Gsatt("ICHO","SEEN",0);
1130 gMC->Gsatt("ICMO","SEEN",0);
1131 gMC->Gsatt("ICMD","SEEN",0);
1132 gMC->Gsatt("ICCO","SEEN",1);
1133 gMC->Gsatt("ICCM","SEEN",0);
1134 gMC->Gsatt("ITMD","SEEN",0);
1135 gMC->Gsatt("ITTT","SEEN",1);
1138 gMC->Gdopt("hide", "on");
1139 gMC->Gdopt("shad", "on");
1140 gMC->Gsatt("*", "fill", 7);
1141 gMC->SetClipBox(".");
1142 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1143 gMC->DefaultRange();
1144 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1145 gMC->Gdhead(1111, "Inner Tracking System Version 1");
1146 gMC->Gdman(17, 6, "MAN");
1148 //_____________________________________________________________________________
1149 void AliITSvPPRcoarsesymm::StepManager(){
1150 ////////////////////////////////////////////////////////////////////////
1151 // Called for every step in the ITS, then calls the AliITShit class
1152 // creator with the information to be recoreded about that hit.
1153 ////////////////////////////////////////////////////////////////////////
1159 TLorentzVector position, momentum;
1160 // TClonesArray &lhits = *fHits;
1162 // no hits for this coarse symmetric version.
1168 if(gMC->IsTrackInside()) vol[3] += 1;
1169 if(gMC->IsTrackEntering()) vol[3] += 2;
1170 if(gMC->IsTrackExiting()) vol[3] += 4;
1171 if(gMC->IsTrackOut()) vol[3] += 8;
1172 if(gMC->IsTrackDisappeared()) vol[3] += 16;
1173 if(gMC->IsTrackStop()) vol[3] += 32;
1174 if(gMC->IsTrackAlive()) vol[3] += 64;
1176 // Fill hit structure.
1177 if( !(gMC->TrackCharge()) ) return;
1179 // Only entering charged tracks
1180 if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {
1182 id=gMC->CurrentVolOffID(1,copy);
1184 id=gMC->CurrentVolOffID(2,copy);
1186 } else if(id==fIdSens[1]) {
1188 id=gMC->CurrentVolOffID(1,copy);
1190 id=gMC->CurrentVolOffID(2,copy);
1192 } else if(id==fIdSens[2]) {
1195 id=gMC->CurrentVolOffID(1,copy);
1197 } else if(id==fIdSens[3]) {
1200 id=gMC->CurrentVolOffID(1,copy);
1202 } else if(id==fIdSens[4]) {
1205 id=gMC->CurrentVolOffID(1,copy);
1207 } else if(id==fIdSens[5]) {
1210 id=gMC->CurrentVolOffID(1,copy);
1213 gMC->TrackPosition(position);
1214 gMC->TrackMomentum(momentum);
1215 hits[0]=position[0];
1216 hits[1]=position[1];
1217 hits[2]=position[2];
1218 hits[3]=momentum[0];
1219 hits[4]=momentum[1];
1220 hits[5]=momentum[2];
1221 hits[6]=gMC->Edep();
1222 hits[7]=gMC->TrackTime();
1223 // new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1225 // no hits for this coarse symmetric version.