]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSvPPRcoarseasymm.cxx
Some function moved to AliZDC
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRcoarseasymm.cxx
1  /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
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  **************************************************************************/
15
16 /*
17 $Log$
18 Revision 1.25  2001/05/03 08:40:15  barbera
19 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
20
21 Revision 1.23  2001/04/04 07:02:16  barbera
22 Position of the cylinders holding rails corrected
23
24 Revision 1.22  2001/03/29 22:01:53  barbera
25 New flag added to change the material for some service supports as asked by the PMD people. Some changes to the services due to the new drawings from the engineers
26
27 Revision 1.21  2001/03/29 05:28:56  barbera
28 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
29
30 Revision 1.20  2001/03/28 06:40:21  barbera
31 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
32
33 Revision 1.19  2001/03/13 18:13:30  barbera
34 Some mother volumes sligthly modified to eliminate an overlap with the absorber
35
36 Revision 1.18  2001/02/19 09:44:16  barbera
37 Copy no.2 of volume ICO2 re-inserted
38
39 Revision 1.17  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.
42
43 Revision 1.16  2001/01/30 09:23:13  hristov
44 Streamers removed (R.Brun)
45
46 Revision 1.15  2001/01/17 07:41:29  barbera
47 Some media parameters modified
48
49 Revision 1.14  2001/01/15 13:13:53  barbera
50 Some comments added
51
52 Revision 1.13  2000/12/10 16:00:45  barbera
53 Added last definition of special media like end-ladder boxes and cones
54
55 Revision 1.12  2000/11/02 15:44:23  barbera
56 Services on the opposite side w.r.t the absorber modified to make room for rails
57
58 Revision 1.10  2000/10/27 17:19:50  barbera
59 Position of rails w.r.t. the interaction point corrected.
60
61 Revision 1.9  2000/10/27 13:31:29  barbera
62 Rails between ITS and TPC added.
63
64 Revision 1.8  2000/10/27 13:03:08  barbera
65 Small changes in the SPD volumes and materials
66
67 Revision 1.6  2000/10/16 14:45:37  barbera
68 Mother volume ITSD modified to avoid some overlaps
69
70 Revision 1.5  2000/10/16 13:49:15  barbera
71 Services volumes slightly modified and material added following Pierluigi Barberis' information
72
73 Revision 1.4  2000/10/07 15:33:07  barbera
74 Small corrections to the ITSV mother volume
75
76 Revision 1.3  2000/10/07 13:06:50  barbera
77 Some new materials and media defined
78
79 Revision 1.2  2000/10/07 10:58:15  barbera
80 Mother volume ITSV corrected
81
82 Revision 1.1  2000/10/06 23:09:24  barbera
83 New coarse geometry (asymmetric services
84
85 Revision 1.20  2000/10/02 21:28:08  fca
86 Removal of useless dependecies via forward declarations
87
88 Revision 1.19  2000/07/10 16:07:19  fca
89 Release version of ITS code
90
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
93
94 Revision 1.14.2.1  2000/03/04 23:45:19  nilsen
95 Fixed up the comments/documentation.
96
97 Revision 1.14  1999/11/25 06:52:56  fca
98 Correct value of drca
99
100 Revision 1.13.2.1  1999/11/25 06:52:21  fca
101 Correct value of drca
102
103 Revision 1.13  1999/10/27 11:16:26  fca
104 Correction of problem in geometry
105
106 Revision 1.12  1999/10/22 08:25:25  fca
107 remove double definition of destructors
108
109 Revision 1.11  1999/10/22 08:16:49  fca
110 Correct destructors, thanks to I.Hrivnacova
111
112 Revision 1.10  1999/10/06 19:56:50  fca
113 Add destructor
114
115 Revision 1.9  1999/10/05 08:05:09  fca
116 Minor corrections for uninitialised variables.
117
118 Revision 1.8  1999/09/29 09:24:20  fca
119 Introduction of the Copyright and cvs Log
120
121 */
122
123 ///////////////////////////////////////////////////////////////////////////////
124 //                                                                           //
125 //  Inner Traking System version PPR coarse asymmetric                                         //
126 //  This class contains the base procedures for the Inner Tracking System    //
127 //                                                                           //
128 // Authors: R. Barbera
129 // version 6.
130 // Created  2000.
131 //
132 //  NOTE: THIS IS THE COARSE ASYMMETRIC 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.
136 //                                                                           //
137 ///////////////////////////////////////////////////////////////////////////////
138 #include <iostream.h> 
139 #include <TMath.h>
140 #include <TRandom.h>
141 #include <TVector.h>
142 #include <TGeometry.h>
143 #include <TNode.h>
144 #include <TTUBE.h>
145 #include <TFile.h>    // only required for Tracking function?
146 #include <TCanvas.h>
147 #include <TObjArray.h>
148 #include <TClonesArray.h>
149
150
151 #include "AliMC.h"
152 #include "AliMagF.h"
153 #include "AliConst.h"
154
155 #include "AliITShit.h"
156 #include "AliITSvPPRcoarseasymm.h"
157 #include "AliRun.h"
158
159
160 ClassImp(AliITSvPPRcoarseasymm)
161  
162 //_____________________________________________________________________________
163 AliITSvPPRcoarseasymm::AliITSvPPRcoarseasymm() {
164 ////////////////////////////////////////////////////////////////////////
165 //    Standard default constructor for the ITS version 6.
166 ////////////////////////////////////////////////////////////////////////
167
168     fIdN = 0;
169     fIdName = 0;
170     fIdSens    = 0;
171     fMajorVersion = 9;
172     fMinorVersion = 0;
173 }
174 //_____________________________________________________________________________
175 AliITSvPPRcoarseasymm::AliITSvPPRcoarseasymm(const char *name, const char *title) : AliITS(name, title){
176 ////////////////////////////////////////////////////////////////////////
177 //    Standard constructor for the ITS version 6.
178 ////////////////////////////////////////////////////////////////////////
179
180     fIdN = 6;
181     fIdName = new TString[fIdN];
182     fIdName[0] = "ITS1";
183     fIdName[1] = "ITS2";
184     fIdName[2] = "ITS3";
185     fIdName[3] = "ITS4";
186     fIdName[4] = "ITS5";
187     fIdName[5] = "ITS6";
188     fIdSens    = new Int_t[fIdN];
189     for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
190     fMajorVersion = 9;
191     fMinorVersion = 0;
192 }
193 //____________________________________________________________________________
194 AliITSvPPRcoarseasymm::AliITSvPPRcoarseasymm(const AliITSvPPRcoarseasymm &source){
195 ////////////////////////////////////////////////////////////////////////
196 //     Copy Constructor for ITS version 6.
197 ////////////////////////////////////////////////////////////////////////
198     if(&source == this) return;
199     Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarseasymm");
200     return;
201 }
202 //_____________________________________________________________________________
203 AliITSvPPRcoarseasymm& AliITSvPPRcoarseasymm::operator=(const AliITSvPPRcoarseasymm &source){
204 ////////////////////////////////////////////////////////////////////////
205 //    Assignment operator for the ITS version 6.
206 ////////////////////////////////////////////////////////////////////////
207   if(&source == this) return *this;
208     Warning("= operator","Not allowed to copy AliITSvPPRcoarseasymm");
209   return *this;
210 }
211 //_____________________________________________________________________________
212 AliITSvPPRcoarseasymm::~AliITSvPPRcoarseasymm() {
213 ////////////////////////////////////////////////////////////////////////
214 //    Standard destructor for the ITS version 6.
215 ////////////////////////////////////////////////////////////////////////
216 }
217
218 //__________________________________________________________________________
219 void AliITSvPPRcoarseasymm::BuildGeometry(){
220 ////////////////////////////////////////////////////////////////////////
221 //    Geometry builder for the ITS version 6.
222 ////////////////////////////////////////////////////////////////////////
223     TNode *node, *top;
224     const int kColorITS=kYellow;
225     //
226     top = gAlice->GetGeometry()->GetNode("alice");
227
228     new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
229     top->cd();
230     node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
231     node->SetLineColor(kColorITS);
232     fNodes->Add(node);
233
234     new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
235     top->cd();
236     node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
237     node->SetLineColor(kColorITS);
238     fNodes->Add(node);
239
240     new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
241     top->cd();
242     node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
243     node->SetLineColor(kColorITS);
244     fNodes->Add(node);
245
246     new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
247     top->cd();
248     node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
249     node->SetLineColor(kColorITS);
250     fNodes->Add(node);
251
252     new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
253     top->cd();
254     node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
255     node->SetLineColor(kColorITS);
256     fNodes->Add(node);
257
258     new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
259     top->cd();
260     node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
261     node->SetLineColor(kColorITS);
262     fNodes->Add(node);
263 }
264 //_____________________________________________________________________________
265 void AliITSvPPRcoarseasymm::CreateGeometry(){
266 ////////////////////////////////////////////////////////////////////////
267 //    This routine defines and Creates the geometry for version 6 of the ITS.
268 ////////////////////////////////////////////////////////////////////////
269   
270   //INNER RADII OF THE SILICON LAYERS 
271   Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,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. };        
280
281  
282   Float_t dits[3], rlim, zmax;
283   Float_t zpos;
284   Float_t pcits[100], ztpc;
285   Int_t idrotm[1999], i;
286   Float_t dgh[100];
287   
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)  
291   rails = GetRails();
292   
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;
296   }  
297   
298   if (rails == 0 ) {
299      cout << "ITS: Rails are out." << endl; 
300   } else {
301      cout << "ITS: Rails are in." << endl;
302   }      
303   
304   suppmat = GetSupportMaterial();   
305   
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;
309   }  
310   
311   if (suppmat == 0) {
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;
315   } else {
316      cout << "ITS: The material of the services supports is carbon." << endl;
317   }      
318       
319
320   Int_t *idtmed = fIdtmed->GetArray()-199;
321   
322   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
323   for (i = 0; i < 6; ++i) {
324     drl[i] = drl[i] / 100. * 9.36;
325   }
326     
327   //     FIELD CAGE HALF LENGTH 
328   
329   rlim  = 50.;
330   zmax  = 74.;
331   ztpc = 284.;
332   
333   // --- Define ghost volume containing the whole ITS (including services) 
334   //     and fill it with air 
335   
336   dgh[0] = 0.;
337   dgh[1] = 360.;
338   dgh[2] = 16.;
339   dgh[3] = -ztpc-5.-0.1;
340   dgh[4] = 46;   
341   dgh[5] = 85.;
342   dgh[6] = -ztpc;
343   dgh[7] = 46;   
344   dgh[8] = 85.;
345   dgh[9] = -ztpc;
346   dgh[10] = 46;  
347   dgh[11] = rlim+6;
348   dgh[12] = -97.5;
349   dgh[13] = 46;  
350   dgh[14] = rlim+6;
351   dgh[15] = -zmax;
352   dgh[16] = 46;  
353   dgh[17] = rlim+6;
354   dgh[18] = -48;   
355   dgh[19] = 6;
356   dgh[20] = rlim+6;
357   dgh[21] = -28.6;   
358   dgh[22] = 6;
359   dgh[23] = rlim+6;    
360   dgh[24] = -27.6;  
361   dgh[25] = 3.295;
362   dgh[26] = rlim+6; 
363   dgh[27] = 27.6;   
364   dgh[28] = 3.295;
365   dgh[29] = rlim+6;
366   dgh[30] = 28.6;   
367   dgh[31] = 6;
368   dgh[32] = rlim+6;
369   dgh[33] = 48;   
370   dgh[34] = 6;
371   dgh[35] = rlim+6;  
372   dgh[36] = zmax;
373   dgh[37] = 46;
374   dgh[38] = rlim+6;
375   dgh[39] = 97.5;
376   dgh[40] = 46;  
377   dgh[41] = rlim+6;
378   dgh[42] = ztpc;
379   dgh[43] = 62;     
380   dgh[44] = 62+4.;  
381   dgh[45] = ztpc;
382   dgh[46] = 62;     
383   dgh[47] = 85.;
384   dgh[48] = ztpc+4.+0.1;
385   dgh[49] = 62.4;
386   dgh[50] = 85.;
387   gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 51);
388   
389   // --- Place the ghost volume in its mother volume (ALIC) and make it 
390   //     invisible 
391   
392   gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
393   //gMC->Gsatt("ITSV", "SEEN", 0); 
394
395
396   // --- Define ghost volume containing the six layers and fill it with air 
397   
398   dgh[0] = 0.;
399   dgh[1] = 360.;
400   dgh[2] = 8.;
401   dgh[3] = -zmax;  
402   dgh[4] = 46.;
403   dgh[5] = rlim;
404   dgh[6] = -47.5;    
405   dgh[7] = 6.005;
406   dgh[8] = rlim;
407   dgh[9] = -28.5;    
408   dgh[10] = 6.005;
409   dgh[11] = rlim;  
410   dgh[12] = -27.5;   
411   dgh[13] = 3.3;
412   dgh[14] = rlim;
413   dgh[15] = 27.5;    
414   dgh[16] = 3.3;
415   dgh[17] = rlim;
416   dgh[18] = 28.5;    
417   dgh[19] = 6.005;
418   dgh[20] = rlim;
419   dgh[21] = 47.5;    
420   dgh[22] = 6.005;
421   dgh[23] = rlim;
422   dgh[24] = zmax;    
423   dgh[25] = 46.;
424   dgh[26] = rlim;
425   gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 27);
426   
427   // --- Place the ghost volume in its mother volume (ITSV) and make it 
428   //     invisible 
429   
430   gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
431   //gMC->Gsatt("ITSD", "SEEN", 0);
432   
433
434   //     ITS LAYERS (SILICON) 
435   
436   dits[0] = rl[0];
437   dits[1] = rl[0] + drl[0];
438   dits[2] = dzl[0];
439   gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
440   gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
441   
442   dits[0] = rl[1];
443   dits[1] = rl[1] + drl[1];
444   dits[2] = dzl[1];
445   gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
446   gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
447   
448   dits[0] = rl[2];
449   dits[1] = rl[2] + drl[2];
450   dits[2] = dzl[2];
451   gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
452   gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
453   
454   dits[0] = rl[3];
455   dits[1] = rl[3] + drl[3];
456   dits[2] = dzl[3];
457   gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
458   gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
459   
460   dits[0] = rl[4];
461   dits[1] = rl[4] + drl[4];
462   dits[2] = dzl[4];
463   gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
464   gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
465   
466   dits[0] = rl[5];
467   dits[1] = rl[5] + drl[5];
468   dits[2] = dzl[5];
469   gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
470   gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
471   
472   // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
473   
474   gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0); 
475   for (i = 0; i < 2; i++) {
476     dits[0] = rl[i];
477     dits[1] = dits[0] + drb[i];
478     dits[2] = dzb[i] / 2.;
479     zpos = dzl[i] + dits[2];
480     gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
481     gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
482   }
483   
484   // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
485   
486   gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0); 
487   for (i = 2; i < 3; i++) {
488     dits[0] = rl[i]-2.5;
489     dits[1] = dits[0] + drb[i];
490     dits[2] = dzb[i] / 2.;
491     zpos = dzl[i] + dits[2];
492     gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
493     gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
494   }
495   for (i = 3; i < 4; i++) {
496     dits[0] = rl[i]-1.4;
497     dits[1] = dits[0] + drb[i];
498     dits[2] = dzb[i] / 2.;
499     zpos = dzl[i] + dits[2];
500     gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
501     gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
502   }
503   
504   // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
505   
506   gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0); 
507   for (i = 4; i < 5; i++) {
508     dits[0] = rl[i]+1.4;
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);
514   }    
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);
522   }        
523
524   //    DEFINE THERMAL SCREEN FOR SPD
525   
526   pcits[0] = 8.3;
527   pcits[1] = 8.5;
528   pcits[2] = 42.5;
529   gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);   
530   gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
531
532   //    DEFINE END CONES FOR SDD
533   
534   pcits[0] = (59.-42.5)/2.;
535   pcits[1] = 8.5;
536   pcits[2] = 8.5+0.1;
537   pcits[3] = 28.;
538   pcits[4] = 28.+0.1;  
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");
543
544   //    DEFINE CYLINDER BETWEEN SDD AND SSD
545   
546   pcits[0] = (59.5-0.13/2.)/2.;
547   pcits[1] = (59.5+0.13/2.)/2.;
548   pcits[2] = 57.;
549   gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);   
550   gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY"); 
551
552   //    DEFINE END CONES FOR SSD
553   
554   pcits[0] = (74.-59.)/2.;
555   pcits[1] = 28.;
556   pcits[2] = 28.+0.1;
557   pcits[3] = 47.;
558   pcits[4] = 47.+0.1;
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");
562   
563     
564   // ****************************  SERVICES  *********************************
565   
566
567   
568   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
569   //     UPPER PART
570   
571   dgh[0] = 46.;    
572   dgh[1] = 46.+1.0;  
573   dgh[2] = 9.5;
574   dgh[3] = 12.;
575   dgh[4] = 168.;
576   
577   if (suppmat == 0) {
578      gMC->Gsvolu("I1CU", "TUBS", idtmed[279], dgh, 5);    // copper
579   } else if (suppmat == 1) {
580      gMC->Gsvolu("I1CU", "TUBS", idtmed[285], dgh, 5);    // aluminum
581   } else {
582      gMC->Gsvolu("I1CU", "TUBS", idtmed[274], dgh, 5);    // carbon
583   }     
584   gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
585   gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
586   
587   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
588   //     LOWER PART
589   
590   dgh[0] = 46.;    
591   dgh[1] = 46.+1.0;  
592   dgh[2] = 9.5;
593   dgh[3] = 192.;
594   dgh[4] = 348.;
595   
596   if (suppmat == 0) {
597      gMC->Gsvolu("I2CU", "TUBS", idtmed[279], dgh, 5);    // copper
598   } else if (suppmat == 1) {
599      gMC->Gsvolu("I2CU", "TUBS", idtmed[285], dgh, 5);    // aluminum
600   } else {
601      gMC->Gsvolu("I2CU", "TUBS", idtmed[274], dgh, 5);    // carbon
602   }     
603   gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
604   gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
605
606
607   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
608   //     UPPER PART
609   
610   dgh[0] = 46.+1.0;  
611   dgh[1] = 46.+1.0+1.5;   
612   dgh[2] = 9.5;
613   dgh[3] = 12.;
614   dgh[4] = 168.;
615   
616   gMC->Gsvolu("I1CC", "TUBS", idtmed[274], dgh, 5);  
617   gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
618   gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
619   
620   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
621   //     LOWER PART
622   
623   dgh[0] = 46.+1.0;  
624   dgh[1] = 46.+1.0+1.5;   
625   dgh[2] = 9.5;
626   dgh[3] = 192.;
627   dgh[4] = 348.;
628   
629   gMC->Gsvolu("I2CC", "TUBS", idtmed[274], dgh, 5);  
630   gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
631   gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
632
633   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
634   //    UPPER PART
635     
636   dgh[0] = 46.;  
637   dgh[1] = 56.;
638   dgh[2] = 2.25;
639   dgh[3] = 12.;
640   dgh[4] = 168.;
641   
642   gMC->Gsvolu("IPA1", "TUBS", idtmed[285], dgh, 5);  
643   gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
644   gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
645
646
647   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
648   //     LOWER PART
649     
650   dgh[0] = 46.;  
651   dgh[1] = 56.;
652   dgh[2] = 2.25;
653   dgh[3] = 192.;
654   dgh[4] = 348.;
655   
656   gMC->Gsvolu("IPA2", "TUBS", idtmed[285], dgh, 5);  
657   gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
658   gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
659
660
661   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
662   //     UPPER PART
663   
664   dgh[0] = (ztpc-97.5)/2.;
665   dgh[1] = 46.2;     
666   dgh[2] = 46.2+1.0;  
667   dgh[3] = 62.3;     
668   dgh[4] = 62.3+1.0;   
669   dgh[5] = 12.;    
670   dgh[6] = 168.;
671   if (suppmat == 0) {
672      gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);    // copper
673   } else if (suppmat == 1) {
674      gMC->Gsvolu("ICU1", "CONS", idtmed[285], dgh, 7);    // aluminum  
675   } else {
676      gMC->Gsvolu("ICU1", "CONS", idtmed[274], dgh, 7);    // carbon
677   }
678   gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
679   
680   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
681   //     LOWER PART
682   
683   dgh[0] = (ztpc-97.5)/2.;
684   dgh[1] = 46.2;      
685   dgh[2] = 46.2+1.0;  
686   dgh[3] = 62.3;      
687   dgh[4] = 62.3+1.0;  
688   dgh[5] = 192.;    
689   dgh[6] = 348.;
690   if (suppmat == 0) {
691      gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);    // copper
692   } else if (suppmat == 1) {
693      gMC->Gsvolu("ICU2", "CONS", idtmed[285], dgh, 7);    // aluminum  
694   } else {
695      gMC->Gsvolu("ICU2", "CONS", idtmed[274], dgh, 7);    // carbon
696   }
697   gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
698
699
700    // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
701    //     UPPER PART
702   
703   dgh[0] = (ztpc-97.5)/2.;
704   dgh[1] = 46.2+1.0;      
705   dgh[2] = 46.2+1.0+1.5;  
706   dgh[3] = 62.3+1.0;      
707   dgh[4] = 62.3+1.0+1.5;  
708   dgh[5] = 12.;    
709   dgh[6] = 168.;  
710   gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);    
711   gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
712   
713   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
714   //     LOWER PART
715   
716   dgh[0] = (ztpc-97.5)/2.;
717   dgh[1] = 46.2+1.0;    
718   dgh[2] = 46.2+1.0+1.5;
719   dgh[3] = 62.3+1.0;    
720   dgh[4] = 62.3+1.0+1.5;
721   dgh[5] = 192.;    
722   dgh[6] = 348.;  
723   gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);    
724   gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
725    
726   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
727   //     UPPER PART
728     
729   dgh[0] = 62.1; 
730   dgh[1] = 74.5;
731   dgh[2] = 0.5;
732   dgh[3] = 12.;
733   dgh[4] = 168.;
734   if (suppmat == 0) {
735      gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);    // copper
736   } else if (suppmat == 1) {
737      gMC->Gsvolu("ICU3", "TUBS", idtmed[285], dgh, 5);    // aluminum
738   } else {
739      gMC->Gsvolu("ICU3", "TUBS", idtmed[274], dgh, 5);    // carbon
740     }
741   gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");  
742
743   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
744   //     LOWER PART
745   
746   dgh[0] = 62.1;  
747   dgh[1] = 74.5;
748   dgh[2] = 0.5;
749   dgh[3] = 192.;
750   dgh[4] = 348.;
751   if (suppmat == 0) {
752      gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);    // copper
753   } else if (suppmat == 1) {
754      gMC->Gsvolu("ICU4", "TUBS", idtmed[285], dgh, 5);    // aluminum
755   } else {
756      gMC->Gsvolu("ICU4", "TUBS", idtmed[274], dgh, 5);    // carbon
757   }
758   gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");     
759      
760   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
761   //     UPPER PART
762
763   dgh[0] = 62.1;  
764   dgh[1] = 74.5;
765   dgh[2] = 0.75;
766   dgh[3] = 12.;
767   dgh[4] = 168.;
768   gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);    
769   gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");   
770     
771   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
772   //     LOWER PART
773
774   dgh[0] = 62.1;  
775   dgh[1] = 74.5;
776   dgh[2] = 0.75;
777   dgh[3] = 192.;
778   dgh[4] = 348.;
779   gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);    
780   gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");  
781   
782   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
783   //     THE ABSORBER - COPPER PART - UPPER PART
784   
785   dgh[0] = 46.;      
786   dgh[1] = 46.+1.0;  
787   dgh[2] = (ztpc-97.5+1.5)/2.;
788   dgh[3] = 12.;
789   dgh[4] = 168.;
790   if (suppmat == 0) {
791      gMC->Gsvolu("ICU5", "TUBS", idtmed[279], dgh, 5);   // copper
792   } else if (suppmat == 1) {
793      gMC->Gsvolu("ICU5", "TUBS", idtmed[285], dgh, 5);   // aluminum
794   } else {
795      gMC->Gsvolu("ICU5", "TUBS", idtmed[274], dgh, 5);   // carbon
796   }
797   gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");  
798   
799   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
800   //     THE ABSORBER - COPPER PART - LOWER PART
801   
802   dgh[0] = 46.;  
803   dgh[1] = 46.+1.0;  
804   dgh[2] = (ztpc-97.5+1.5)/2.;
805   dgh[3] = 192.;
806   dgh[4] = 348.;  
807   if (suppmat == 0) {
808      gMC->Gsvolu("ICU6", "TUBS", idtmed[279], dgh, 5);   // copper
809   } else if (suppmat == 1) {
810      gMC->Gsvolu("ICU6", "TUBS", idtmed[285], dgh, 5);   // aluminum
811   } else {
812      gMC->Gsvolu("ICU6", "TUBS", idtmed[274], dgh, 5);   // carbon
813   }
814   gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");    
815   
816   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
817   //     THE ABSORBER - CARBON PART - UPPER PART
818   
819   dgh[0] = 46.+1.0;  
820   dgh[1] = 46.+1.0+1.5; 
821   dgh[2] = (ztpc-97.5)/2.;
822   dgh[3] = 12.;
823   dgh[4] = 168.;  
824   gMC->Gsvolu("ICC5", "TUBS", idtmed[274], dgh, 5);   
825   gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");   
826   
827   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
828   //     THE ABSORBER - CARBON PART - LOWER PART
829   
830   dgh[0] = 46.+1.0;   
831   dgh[1] = 46.+1.0+1.5;  
832   dgh[2] = (ztpc-97.5)/2.;
833   dgh[3] = 192.;
834   dgh[4] = 348.;  
835   gMC->Gsvolu("ICC6", "TUBS", idtmed[274], dgh, 5);   
836   gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");      
837
838   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
839   //     COPPER PART - UPPER PART
840     
841   dgh[0] = 46.;   
842   dgh[1] = 74.5;
843   dgh[2] = 0.5;
844   dgh[3] = 12.;
845   dgh[4] = 168.;  
846   if (suppmat == 0) {
847      gMC->Gsvolu("ICU7", "TUBS", idtmed[279], dgh, 5);   // copper
848   } else if (suppmat == 1) {
849      gMC->Gsvolu("ICU7", "TUBS", idtmed[285], dgh, 5);   // aluminum
850   } else {
851      gMC->Gsvolu("ICU7", "TUBS", idtmed[274], dgh, 5);   // carbon
852   }
853   gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");  
854   
855   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
856   //     COPPER PART - LOWER PART
857     
858   dgh[0] = 46.; 
859   dgh[1] = 74.5;
860   dgh[2] = 0.5;
861   dgh[3] = 192.;
862   dgh[4] = 348.;   
863   if (suppmat == 0) {
864      gMC->Gsvolu("ICU8", "TUBS", idtmed[279], dgh, 5);   // copper
865   } else if (suppmat == 1) {
866      gMC->Gsvolu("ICU8", "TUBS", idtmed[285], dgh, 5);   // aluminum
867   } else {
868      gMC->Gsvolu("ICU8", "TUBS", idtmed[274], dgh, 5);   // carbon
869   }
870   gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");      
871     
872   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
873   //     CARBON PART - UPPER PART
874   
875   dgh[0] = 46.+1.0;  
876   dgh[1] = 74.5;
877   dgh[2] = 0.75;
878   dgh[3] = 12.;
879   dgh[4] = 168.;   
880   gMC->Gsvolu("ICC7", "TUBS", idtmed[274], dgh, 5);   
881   gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY"); 
882   
883   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
884   //     CARBON PART - LOWER PART
885   
886   dgh[0] = 46.+1.0;  
887   dgh[1] = 74.5;
888   dgh[2] = 0.75;
889   dgh[3] = 192.;
890   dgh[4] = 348.;     
891   gMC->Gsvolu("ICC8", "TUBS", idtmed[274], dgh, 5);   
892   gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY");        
893     
894   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
895   
896   dgh[0] = 74.5;
897   dgh[1] = 79.5;
898   dgh[2] = 2.5;
899   dgh[3] = 12.;
900   dgh[4] = 168.;    
901   gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);  
902   gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");   
903   
904   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
905   
906   dgh[0] = 74.5;
907   dgh[1] = 79.5;
908   dgh[2] = 2.5;
909   dgh[3] = 192.;
910   dgh[4] = 348.;    
911   gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);  
912   gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");      
913   
914   // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
915   
916   if (rails == 1) {
917   
918      dgh[0] = 2.;          
919      dgh[1] = 8.;           
920      dgh[2] = 190.;         
921      gMC->Gsvolu("IRA1", "BOX ", idtmed[239], dgh, 3);
922      gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");   
923      gMC->Gsvolu("IRA2", "BOX ", idtmed[239], dgh, 3);    
924      gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");    
925
926      dgh[0] = 2.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2      
927      dgh[1] = 8.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2       
928      dgh[2] = 190.;         
929      gMC->Gsvolu("IRA3", "BOX ", idtmed[275], dgh, 3);   
930      gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");   
931      gMC->Gsvolu("IRA4", "BOX ", idtmed[275], dgh, 3);     
932      gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");    
933
934   }
935
936   // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
937   
938   dgh[0] = 56.9;    
939   dgh[1] = 59.;
940   dgh[2] = 0.6;    
941   gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);   
942   gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");       
943   gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");  
944
945   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
946
947   dgh[0] = 0.;        
948   dgh[1] = 3.;         
949   dgh[2] = 5.;  // 5. comes from the fact that the volume has to be 567.6/2 cm^3       
950   gMC->Gsvolu("ISR1", "TUBE", idtmed[286], dgh, 3);   
951   gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");    
952   gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");   
953   gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY"); 
954   gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");  
955   gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");   
956   gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");   
957   gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY"); 
958   gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");         
959   
960   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
961
962   dgh[0] = 5.;        
963   dgh[1] = 12.;         
964   dgh[2] = 5.;         
965   gMC->Gsvolu("ISR2", "BOX ", idtmed[285], dgh, 3);   
966   gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
967   gMC->Gsvolu("ISR3", "BOX ", idtmed[285], dgh, 3);   
968   gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");  
969   
970   dgh[0] = 5.-2.;        
971   dgh[1] = 12.-2.;         
972   dgh[2] = 5.;         
973   gMC->Gsvolu("ISR4", "BOX ", idtmed[275], dgh, 3);   
974   gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");     
975   gMC->Gsvolu("ISR5", "BOX ", idtmed[275], dgh, 3);   
976   gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
977   
978   // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
979   
980   dgh[0] = 0.;        
981   dgh[1] = 5.;         
982   dgh[2] = 2.;         
983   gMC->Gsvolu("ISR6", "TUBE", idtmed[285], dgh, 3);   
984   gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY"); 
985   gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY"); 
986   gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");                   
987     
988     
989   // --- Outputs the geometry tree in the EUCLID/CAD format 
990   
991   if (fEuclidOut) {
992     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
993   }
994 }
995 //_____________________________________________________________________________
996 void AliITSvPPRcoarseasymm::CreateMaterials(){
997 ////////////////////////////////////////////////////////////////////////
998   //
999   // Create ITS materials
1000   //     This function defines the default materials used in the Geant
1001   // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
1002   // AliITSvPPRcoarseasymm.
1003   // In general it is automatically replaced by
1004   // the CreatMaterials routine defined in AliITSv?. Should the function
1005   // CreateMaterials not exist for the geometry version you are using this
1006   // one is used. See the definition found in AliITSv5 or the other routine
1007   // for a complete definition.
1008   //
1009   // Water H2O
1010   Float_t awat[2]  = { 1.00794,15.9994 };
1011   Float_t zwat[2]  = { 1.,8. };
1012   Float_t wwat[2]  = { 2.,1. };
1013   Float_t denswat  = 1.;
1014   // Freon
1015   Float_t afre[2]  = { 12.011,18.9984032 };
1016   Float_t zfre[2]  = { 6.,9. };
1017   Float_t wfre[2]  = { 5.,12. };
1018   Float_t densfre  = 1.5;
1019   // Ceramics
1020   //     94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3 
1021   Float_t acer[5]  = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
1022   Float_t zcer[5]  = { 13.,8.,14.,25.,      24. };
1023   Float_t wcer[5]  = { .49976,1.01233,.01307,       .01782,.00342 };
1024   Float_t denscer  = 3.6;
1025   //
1026   //     60% SiO2 , 40% G10FR4 
1027   // PC board
1028   Float_t apcb[3]  = { 28.0855,15.9994,17.749 };
1029   Float_t zpcb[3]  = { 14.,8.,8.875 };
1030   Float_t wpcb[3]  = { .28,.32,.4 };
1031   Float_t denspcb  = 1.8;
1032   // POLYETHYL
1033   Float_t apoly[2] = { 12.01,1. };
1034   Float_t zpoly[2] = { 6.,1. };
1035   Float_t wpoly[2] = { .33,.67 };
1036   // old SERVICES
1037   Float_t zserv[4] = { 1.,6.,26.,29. };
1038   Float_t aserv[4] = { 1.,12.,55.8,63.5 };
1039   Float_t wserv[4] = { .014,.086,.42,.48 };
1040   // Stainless steel
1041   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
1042   Float_t zsteel[4] = { 26.,24.,28.,14. };
1043   Float_t wsteel[4] = { .715,.18,.1,.005 };
1044   
1045   
1046   Int_t  isxfld  = gAlice->Field()->Integ();
1047   Float_t sxmgmx = gAlice->Field()->Max();
1048   
1049   
1050   // --- Define the various materials for GEANT --- 
1051   
1052   //  200-224 --> Silicon Pixel Detectors (detectors, chips, buses, cooling,..)
1053   
1054   AliMaterial(0, "SPD Si$",      28.0855, 14., 2.33, 9.36, 999.);
1055   AliMaterial(1, "SPD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
1056   AliMaterial(2, "SPD Si bus$",  28.0855, 14., 2.33, 9.36, 999.);
1057   AliMaterial(3, "SPD C$",       12.011,   6., 2.265,18.8, 999.);
1058   // v. dens 
1059   AliMaterial(4, "SPD Air$",    14.61, 7.3, .001205, 30423., 999.);
1060   AliMaterial(5, "SPD Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1061   AliMaterial(6, "SPD Al$",     26.981539, 13., 2.6989, 8.9, 999.);
1062   AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
1063   AliMixture( 8, "SPD Freon$",  afre, zfre, densfre, -2, wfre);
1064   AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999.); 
1065   //AliMaterial(9, "SPD End ladder$", 55.845, 26., -7.87/10., -1.76*10., 999.);   
1066   AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999.);       // check !!!!
1067   // ** 
1068   AliMedium(0, "SPD Si$",        0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1069   AliMedium(1, "SPD Si chip$",   1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1070   AliMedium(2, "SPD Si bus$",    2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1071   AliMedium(3, "SPD C$",         3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1072   AliMedium(4, "SPD Air$",       4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1073   AliMedium(5, "SPD Vacuum$",    5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1074   AliMedium(6, "SPD Al$",        6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1075   AliMedium(7, "SPD Water $",    7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1076   AliMedium(8, "SPD Freon$",     8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1077   AliMedium(9, "SPD End ladder$",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1078   AliMedium(10, "SPD cone$",    10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);   
1079   
1080   //  225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
1081   
1082   AliMaterial(25, "SDD Si$",      28.0855, 14., 2.33,  9.36, 999.);
1083   AliMaterial(26, "SDD Si chip$", 28.0855, 14., 2.33,  9.36, 999.);
1084   AliMaterial(27, "SDD Si bus$",  28.0855, 14., 2.33,  9.36, 999.);
1085   AliMaterial(28, "SDD C$",       12.011,   6., 2.265,18.8,  999.);
1086   // v. dens 
1087   AliMaterial(29, "SDD Air$",     14.61, 7.3, .001205, 30423., 999.);
1088   AliMaterial(30, "SDD Vacuum$",  1e-16, 1e-16, 1e-16, 1e16,  1e16);
1089   AliMaterial(31, "SDD Al$",      26.981539, 13., 2.6989, 8.9, 999.);
1090   // After a call with ratios by number (negative number of elements), 
1091   // the ratio array is changed to the ratio by weight, so all successive 
1092   // calls with the same array must specify the number of elements as 
1093   // positive 
1094   AliMixture(32, "SDD Water $", awat, zwat, denswat, 2, wwat);
1095   // After a call with ratios by number (negative number of elements), 
1096   // the ratio array is changed to the ratio by weight, so all successive 
1097   // calls with the same array must specify the number of elements as 
1098   // positive 
1099   AliMixture( 33, "SDD Freon$", afre, zfre, densfre, 2, wfre);
1100   AliMixture( 34, "SDD PCB$",   apcb, zpcb, denspcb, 3, wpcb);
1101   AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1102   AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
1103   AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1104   AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999.); 
1105   AliMaterial(39, "SDD cone$",63.546, 29., 1.15, 1.265, 999.);   
1106   AliMaterial(40, "SDD M55J$",12.3565, 6.4561, 1.8097, 22.9570, 999.);         
1107   //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999.); 
1108   //AliMaterial(39, "SDD cone$",63.546, 29., -1.15, -1.265, 999.);       
1109
1110   // ** 
1111   // check A and Z 
1112   AliMedium(25, "SDD Si$",        25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1113   AliMedium(26, "SDD Si chip$",   26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1114   AliMedium(27, "SDD Si bus$",    27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1115   AliMedium(28, "SDD C$",         28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1116   AliMedium(29, "SDD Air$",       29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1117   AliMedium(30, "SDD Vacuum$",    30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1118   AliMedium(31, "SDD Al$",        31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1119   AliMedium(32, "SDD Water $",    32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1120   AliMedium(33, "SDD Freon$",     33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1121   AliMedium(34, "SDD PCB$",       34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1122   AliMedium(35, "SDD Copper$",    35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1123   AliMedium(36, "SDD Ceramics$",  36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1124   AliMedium(37, "SDD Kapton$",    37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1125   AliMedium(38, "SDD End ladder$",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1126   AliMedium(39, "SDD cone$",      39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1127   AliMedium(40, "SDD M55J$",      40, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);  
1128   //  250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
1129   
1130   AliMaterial(50, "SSD Si$",      28.0855, 14., 2.33, 9.36, 999.);
1131   AliMaterial(51, "SSD Si chip$", 28.0855, 14., 2.33, 9.36, 999.);
1132   AliMaterial(52, "SSD Si bus$",  28.0855, 14., 2.33, 9.36, 999.);
1133   AliMaterial(53, "SSD C$",       12.011,   6., 2.265,18.8, 999.);
1134   // v. dens 
1135   AliMaterial(54, "SSD Air$",     14.61, 7.3, .001205, 30423., 999.);
1136   AliMaterial(55, "SSD Vacuum$",  1e-16, 1e-16, 1e-16, 1e16, 1e16);
1137   AliMaterial(56, "SSD Al$",      26.981539, 13., 2.6989, 8.9, 999.);
1138   // After a call with ratios by number (negative number of elements), 
1139   // the ratio array is changed to the ratio by weight, so all successive 
1140   // calls with the same array must specify the number of elements as 
1141   // positive 
1142   AliMixture(57, "SSD Water $", awat, zwat, denswat, 2, wwat);
1143   // After a call with ratios by number (negative number of elements), 
1144   // the ratio array is changed to the ratio by weight, so all successive 
1145   // calls with the same array must specify the number of elements as 
1146   // positive 
1147   AliMixture(58, "SSD Freon$", afre, zfre, densfre, 2, wfre);
1148   AliMixture(59, "SSD PCB$",   apcb, zpcb, denspcb, 3, wpcb);
1149   AliMaterial(60, "SSD Copper$", 63.546, 29., 8.96, 1.43, 999.);
1150   // After a call with ratios by number (negative number of elements), 
1151   // the ratio array is changed to the ratio by weight, so all successive 
1152   // calls with the same array must specify the number of elements as 
1153   // positive 
1154   AliMixture(61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
1155   AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
1156   // check A and Z 
1157   AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
1158   AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999.); 
1159   AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999.);  
1160   //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999.); 
1161   //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999.);    
1162   // ** 
1163   AliMedium(50, "SSD Si$",        50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1164   AliMedium(51, "SSD Si chip$",   51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1165   AliMedium(52, "SSD Si bus$",    52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1166   AliMedium(53, "SSD C$",         53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1167   AliMedium(54, "SSD Air$",       54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1168   AliMedium(55, "SSD Vacuum$",    55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
1169   AliMedium(56, "SSD Al$",        56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1170   AliMedium(57, "SSD Water $",    57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1171   AliMedium(58, "SSD Freon$",     58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1172   AliMedium(59, "SSD PCB$",       59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1173   AliMedium(60, "SSD Copper$",    60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1174   AliMedium(61, "SSD Ceramics$",  61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1175   AliMedium(62, "SSD Kapton$",    62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1176   AliMedium(63, "SSD G10FR4$",    63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1177   AliMedium(64, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1178   AliMedium(65, "SSD cone$",      65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1179
1180   //     275-299 --> General (end-caps, frames, cooling, cables, etc.) 
1181   
1182   AliMaterial(75, "GEN C$", 12.011, 6., 2.265, 18.8, 999.);
1183   // verify density 
1184   AliMaterial(76, "GEN Air$", 14.61, 7.3, .001205, 30423., 999.);
1185   AliMaterial(77, "GEN Vacuum$", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
1186   AliMixture( 78, "GEN POLYETHYL$", apoly, zpoly, .95, -2, wpoly);
1187   AliMixture( 79, "GEN SERVICES$",  aserv, zserv, 4.68, 4, wserv);
1188   AliMaterial(80, "GEN Copper$", 63.546, 29., 8.96, 1.43, 999.);
1189   // After a call with ratios by number (negative number of elements), 
1190   // the ratio array is changed to the ratio by weight, so all successive 
1191   // calls with the same array must specify the number of elements as 
1192   // positive 
1193   AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
1194 //  AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!
1195 //  AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!  
1196 //  AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!  
1197   AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
1198   AliMaterial(86, "GEN Al$",      26.981539, 13., 2.6989, 8.9, 999.);
1199   AliMaterial(87,"inox/alum$",    32.1502,15.3383,3.0705,6.9197,999.);
1200   // ** 
1201   AliMedium(75,"GEN C$",        75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1202   AliMedium(76,"GEN Air$",      76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1203   AliMedium(77,"GEN Vacuum$",   77, 0,isxfld,sxmgmx, 10., .10, .1, .100,10.00);
1204   AliMedium(78,"GEN POLYETHYL$",78, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1205   AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1206   AliMedium(80,"GEN Copper$",   80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1207   AliMedium(81,"GEN Water $",   81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1208 //  AliMedium(82,"GEN Cables$",   82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1209 //  AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);  
1210 //  AliMedium(84,"GEN serv$",     84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1211   AliMedium(85,"GEN Inox$",     85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1212   AliMedium(86, "GEN Al$",      86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1213   AliMedium(87,"inox/alum$",    87, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
1214
1215 }
1216 //_____________________________________________________________________________
1217 void AliITSvPPRcoarseasymm::Init(){
1218 ////////////////////////////////////////////////////////////////////////
1219 //     Initialise the ITS after it has been created.
1220 ////////////////////////////////////////////////////////////////////////
1221     Int_t i;
1222
1223     cout << endl;
1224     for(i=0;i<24;i++) cout << "*";cout << " ITSvPPRcoarseasymm_Init ";
1225     for(i=0;i<25;i++) cout << "*";cout << endl;
1226 //
1227     AliITS::Init();
1228 //
1229     for(i=0;i<72;i++) cout << "*";
1230     cout << endl;
1231 }  
1232  
1233 //_____________________________________________________________________________
1234 void AliITSvPPRcoarseasymm::DrawModule(){
1235 ////////////////////////////////////////////////////////////////////////
1236 //     Draw a shaded view of the FMD version 6.
1237 ////////////////////////////////////////////////////////////////////////
1238   
1239   // Set everything unseen
1240   gMC->Gsatt("*", "seen", -1);
1241   // 
1242   // Set ALIC mother visible
1243   gMC->Gsatt("ALIC","SEEN",0);
1244   //
1245   // Set the volumes visible
1246   gMC->Gsatt("ITSD","SEEN",0);
1247   gMC->Gsatt("ITS1","SEEN",1);
1248   gMC->Gsatt("ITS2","SEEN",1);
1249   gMC->Gsatt("ITS3","SEEN",1);
1250   gMC->Gsatt("ITS4","SEEN",1);
1251   gMC->Gsatt("ITS5","SEEN",1);
1252   gMC->Gsatt("ITS6","SEEN",1);
1253
1254   gMC->Gsatt("IPCB","SEEN",1);
1255   gMC->Gsatt("ICO2","SEEN",1);
1256   gMC->Gsatt("ICER","SEEN",0);
1257   gMC->Gsatt("ISI2","SEEN",0);
1258   gMC->Gsatt("IPLA","SEEN",0);
1259   gMC->Gsatt("ICO3","SEEN",0);
1260   gMC->Gsatt("IEPX","SEEN",0);
1261   gMC->Gsatt("ISI3","SEEN",1);
1262   gMC->Gsatt("ISUP","SEEN",0);
1263   gMC->Gsatt("ICHO","SEEN",0);
1264   gMC->Gsatt("ICMO","SEEN",0);
1265   gMC->Gsatt("ICMD","SEEN",0);
1266   gMC->Gsatt("ICCO","SEEN",1);
1267   gMC->Gsatt("ICCM","SEEN",0);
1268   gMC->Gsatt("ITMD","SEEN",0);
1269   gMC->Gsatt("ITTT","SEEN",1);
1270
1271   //
1272   gMC->Gdopt("hide", "on");
1273   gMC->Gdopt("shad", "on");
1274   gMC->Gsatt("*", "fill", 7);
1275   gMC->SetClipBox(".");
1276   gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
1277   gMC->DefaultRange();
1278   gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
1279   gMC->Gdhead(1111, "Inner Tracking System Version 1");
1280   gMC->Gdman(17, 6, "MAN");
1281 }
1282 //_____________________________________________________________________________
1283 void AliITSvPPRcoarseasymm::StepManager(){
1284 ////////////////////////////////////////////////////////////////////////
1285 //    Called for every step in the ITS, then calls the AliITShit class
1286 // creator with the information to be recoreded about that hit.
1287 ////////////////////////////////////////////////////////////////////////
1288
1289 /*
1290   Int_t         copy, id;
1291   Float_t       hits[8];
1292   Int_t         vol[4];
1293   TLorentzVector position, momentum;
1294 //  TClonesArray &lhits = *fHits;
1295 //
1296 // no hits for this coarse asymmetric version.
1297 //
1298
1299   //
1300   // Track status
1301   vol[3] = 0;
1302   if(gMC->IsTrackInside())      vol[3] +=  1;
1303   if(gMC->IsTrackEntering())    vol[3] +=  2;
1304   if(gMC->IsTrackExiting())     vol[3] +=  4;
1305   if(gMC->IsTrackOut())         vol[3] +=  8;
1306   if(gMC->IsTrackDisappeared()) vol[3] += 16;
1307   if(gMC->IsTrackStop())        vol[3] += 32;
1308   if(gMC->IsTrackAlive())       vol[3] += 64;
1309   //
1310   // Fill hit structure.
1311   if( !(gMC->TrackCharge()) ) return;
1312     //
1313     // Only entering charged tracks
1314     if((id=gMC->CurrentVolID(copy))==fIdSens[0]) {  
1315       vol[0]=1;
1316       id=gMC->CurrentVolOffID(1,copy);      
1317       vol[1]=copy;
1318       id=gMC->CurrentVolOffID(2,copy);
1319       vol[2]=copy;                       
1320     } else if(id==fIdSens[1]) {
1321       vol[0]=2;
1322       id=gMC->CurrentVolOffID(1,copy);       
1323       vol[1]=copy;
1324       id=gMC->CurrentVolOffID(2,copy);
1325       vol[2]=copy;                    
1326     } else if(id==fIdSens[2]) {
1327       vol[0]=3;
1328       vol[1]=copy;
1329       id=gMC->CurrentVolOffID(1,copy);
1330       vol[2]=copy;             
1331     } else if(id==fIdSens[3]) {
1332       vol[0]=4;
1333       vol[1]=copy;
1334       id=gMC->CurrentVolOffID(1,copy);
1335       vol[2]=copy;                  
1336     } else if(id==fIdSens[4]) {
1337       vol[0]=5;
1338       vol[1]=copy;
1339       id=gMC->CurrentVolOffID(1,copy);
1340       vol[2]=copy;               
1341     } else if(id==fIdSens[5]) {
1342       vol[0]=6;
1343       vol[1]=copy;
1344       id=gMC->CurrentVolOffID(1,copy);
1345       vol[2]=copy;                      
1346     } else return;
1347     gMC->TrackPosition(position);
1348     gMC->TrackMomentum(momentum);
1349     hits[0]=position[0];
1350     hits[1]=position[1];
1351     hits[2]=position[2];          
1352     hits[3]=momentum[0];
1353     hits[4]=momentum[1];
1354     hits[5]=momentum[2];
1355     hits[6]=gMC->Edep();
1356     hits[7]=gMC->TrackTime();
1357 //    new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
1358 //
1359 // no hits for this coarse asymmetric version.
1360 //
1361 */
1362 }
1363