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