Use gMC and not pMC everywhere
[u/mrichter/AliRoot.git] / ITS / AliITSv0.cxx
1 ///////////////////////////////////////////////////////////////////////////////
2 //                                                                           //
3 //  Inner Traking System version 0                                           //
4 //                                                                           //
5 //Begin_Html
6 /*
7 <img src="picts/AliITSv0Class.gif">
8 </pre>
9 <br clear=left>
10 <font size=+2 color=red>
11 <p>The responsible person for this module is
12 <a href="mailto:roberto.barbera@ct.infn.it">Roberto Barbera</a>.
13 </font>
14 <pre>
15 */
16 //End_Html
17 //                                                                           //
18 ///////////////////////////////////////////////////////////////////////////////
19
20 #include <TMath.h>
21 #include <TRandom.h>
22 #include <TVector.h>
23 #include "AliITSv0.h"
24 #include "AliRun.h"
25
26 #include "AliMC.h"
27 #include "AliConst.h"
28
29 ClassImp(AliITSv0)
30  
31 //_____________________________________________________________________________
32 AliITSv0::AliITSv0() : AliITS() 
33 {
34   //
35   // Default constructor for ITS
36   //
37 }
38  
39 //_____________________________________________________________________________
40 AliITSv0::AliITSv0(const char *name, const char *title)
41       : AliITS(name, title)
42 {
43   //
44   // Standard constructor for ITS
45   //
46 }
47  
48 //_____________________________________________________________________________
49 void AliITSv0::CreateGeometry()
50 {
51   //
52   // Create Geometry for ITS version 0
53   //
54   //Begin_Html
55   /*
56     <img src="picts/AliITSv0Tree.gif">
57   */
58   //End_Html
59   //Begin_Html
60   /*
61     <img src="picts/AliITSv0.gif">
62   */
63   //End_Html
64   
65   
66   Float_t rl[6]    = { 3.9,7.6,14.,24.,40.,45. };       //SILICON LAYERS INNER RADIUS
67   Float_t drl[6]   = { .755,.755,.809,.809,.7,.7 };     //THICKNESS OF LAYERS (in % radiation length)
68   Float_t dzl[6]   = { 12.67,16.91,20.85,29.15,45.11,50.975 }; //HALF LENGTH OF LAYERS
69   Float_t drpcb[6] = { 0.,0.,.06,.06,0.,0. };           //PCB THICKNESS
70   Float_t drcu[6]  = { 0.,0.,.0504,.0504,.0357,.0357 }; //COPPER THICKNESS
71   Float_t drsi[6]  = { 0.,0.,.006,.006,.3571,.3571 };   //SILICON THICKNESS
72   Float_t drcer[6] = { 0.,0.,.08,.08,0.,0. };           //CERAMICS THICKNESS
73   Float_t drepx[6] = { 0.,0.,0.,0.,.5357,.5357 };       //EPOXY THICKNESS
74   Float_t drpla[6] = { 0.,0.,0.,0.,.1786,.1786 };       //PLASTIC THICKNESS
75   Float_t dzb[6]   = { 0.,0.,15.,15.,4.,4. };           //LENGTH OF BOXES
76   Float_t dphi[6]  = { 72.,72.,72.,72.,50.6,45. };      //COVERED PHI-RANGE FOR LAYERS 1-6
77   
78   Float_t drca;
79   //Float_t dzfc, dwat;
80   Int_t i, nsec;
81   Float_t rend, drca_tpc, dzco, zend, dits[3], rlim, drsu, zmax;
82   Float_t zpos, dzco1, dzco2;
83   Float_t drcac[6], acone, dphii;
84   Float_t pcits[15], xltpc;
85   Float_t rstep, r0, z0, acable, fp, dz, zi, ri;
86   Int_t idrotm[399];
87   Float_t rzcone;
88   Float_t dgh[15];
89   
90   Int_t *idtmed = fIdtmed->GetArray()-199;
91   
92   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
93   for (i = 0; i < 6; ++i) {
94     drl[i] = drl[i]/100. * 9.36;
95   }
96   
97   //     SUPPORT ENDPLANE THICKNESS 
98   drsu = 2.*0.06 + 1./20;  // 1./20. is 1 cm of honeycomb (1/20 carbon density)
99   
100   //     CABLE THICKNESS (HORIZONTAL CABLES CONNECTING THE LAYERS) 
101   drca = .2;
102   
103   //     WATER THICKNESS 
104
105   //dwat = .1;
106   
107   //     CONE BELOW TPC 
108   
109   drca_tpc = 1.2/4.;
110   
111   //     CABLE THICKNESS (CONICAL CABLES CONNECTING THE LAYERS) 
112   
113   
114   //     ITS CONE ANGLE 
115   
116   acone  = 45.;
117   acone *= kDegrad;
118   
119   //     CONE RADIUS AT 1ST LAYER 
120   
121   rzcone = 30.;
122   
123   //     FIELD CAGE HALF LENGTH 
124   
125   //dzfc  = 64.5;
126   rlim  = 48.;
127   zmax  = 80.;
128   xltpc = 275.;
129   
130   
131   //     PARAMETERS FOR SMALL (1/2) ITS 
132   
133   //      DO I=1,6 
134   //        DZL(I)=DZL(I)/2. 
135   //        DZB(I)=DZB(I)/2. 
136   //     ENDDO 
137   //      DRCA=DRCA/2. 
138   //      ACONE=ACONE/2. 
139   //      DRCA_TPC=DRCA_TPC/2. 
140   //      RZCONE=RZCONE/2. 
141   //      DZFC=DZFC/2. 
142   //      ZMAX=ZMAX/2. 
143   //      XLTPC=XLTPC/2. 
144   acable = 8.5;  
145   
146   //     EQUAL DISTRIBUTION INTO THE 6 LAYERS 
147   rstep = drca_tpc / 6.;
148   for (i = 0; i < 6; ++i) {
149     drcac[i] = (i+1) * rstep;
150   }
151
152   //     NUMBER OF PHI SECTORS 
153   
154   nsec = 5;
155   
156   //     NOW PACK USING THICKNESS 
157   
158   for (i = 0; i < 6; ++i) {
159     
160     //     PACKING FACTOR 
161     fp = rl[5] / rl[i];
162     
163     //      PHI-PACKING NOT SUFFICIENT ? 
164     
165     if (dphi[i]/45 < fp) {
166       drcac[i] = drcac[i]*fp*45/dphi[i];
167     }
168   }
169   
170   
171   // --- Define ghost volume containing the six layers and fill it with air 
172   
173   dgh[0] = 3.5;
174   dgh[1] = 50.;
175   dgh[2] = zmax;
176   gMC->Gsvolu("ITSV", "TUBE", idtmed[275], dgh, 3);
177   
178   // --- Place the ghost volume in its mother volume (ALIC) and make it 
179   //     invisible 
180   
181   gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
182   gMC->Gsatt("ITSV", "SEEN", 0);
183   
184   //     ITS LAYERS (SILICON) 
185   
186   dits[0] = rl[0];
187   dits[1] = rl[0] + drl[0];
188   dits[2] = dzl[0];
189   gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
190   gMC->Gspos("ITS1", 1, "ITSV", 0., 0., 0., 0, "ONLY");
191   
192   dits[0] = rl[1];
193   dits[1] = rl[1] + drl[1];
194   dits[2] = dzl[1];
195   gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
196   gMC->Gspos("ITS2", 1, "ITSV", 0., 0., 0., 0, "ONLY");
197   
198   dits[0] = rl[2];
199   dits[1] = rl[2] + drl[2];
200   dits[2] = dzl[2];
201   gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
202   gMC->Gspos("ITS3", 1, "ITSV", 0., 0., 0., 0, "ONLY");
203   
204   dits[0] = rl[3];
205   dits[1] = rl[3] + drl[3];
206   dits[2] = dzl[3];
207   gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
208   gMC->Gspos("ITS4", 1, "ITSV", 0., 0., 0., 0, "ONLY");
209   
210   dits[0] = rl[4];
211   dits[1] = rl[4] + drl[4];
212   dits[2] = dzl[4];
213   gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
214   gMC->Gspos("ITS5", 1, "ITSV", 0., 0., 0., 0, "ONLY");
215   
216   dits[0] = rl[5];
217   dits[1] = rl[5] + drl[5];
218   dits[2] = dzl[5];
219   gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
220   gMC->Gspos("ITS6", 1, "ITSV", 0., 0., 0., 0, "ONLY");
221   
222   //    ELECTRONICS BOXES   
223   //     PCB (layer #3 and #4) 
224   
225   gMC->Gsvolu("IPCB", "TUBE", idtmed[233], dits, 0);
226   for (i = 2; i < 4; ++i) {
227     dits[0] = rl[i];
228     dits[1] = dits[0] + drpcb[i];
229     dits[2] = dzb[i] / 2.;
230     zpos = dzl[i] + dits[2];
231     gMC->Gsposp("IPCB", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
232     gMC->Gsposp("IPCB", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
233   }
234   
235   //     COPPER (layer #3 and #4) 
236   
237   gMC->Gsvolu("ICO2", "TUBE", idtmed[234], dits, 0);
238   for (i = 2; i < 4; ++i) {
239     dits[0] = rl[i] + drpcb[i];
240     dits[1] = dits[0] + drcu[i];
241     dits[2] = dzb[i] / 2.;
242     zpos = dzl[i] + dits[2];
243     gMC->Gsposp("ICO2", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
244     gMC->Gsposp("ICO2", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
245   }
246   
247   //     CERAMICS (layer #3 and #4) 
248   
249   gMC->Gsvolu("ICER", "TUBE", idtmed[235], dits, 0);
250   for (i = 2; i < 4; ++i) {
251     dits[0] = rl[i] + drpcb[i] + drcu[i];
252     dits[1] = dits[0] + drcer[i];
253     dits[2] = dzb[i] / 2.;
254     zpos = dzl[i] + dits[2];
255     gMC->Gsposp("ICER", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
256     gMC->Gsposp("ICER", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
257   }
258   
259   //     SILICON (layer #3 and #4) 
260   
261   gMC->Gsvolu("ISI2", "TUBE", idtmed[226], dits, 0);
262   for (i = 2; i < 4; ++i) {
263     dits[0] = rl[i] + drpcb[i] + drcu[i] + drcer[i];
264     dits[1] = dits[0] + drsi[i];
265     dits[2] = dzb[i] / 2.;
266     zpos = dzl[i - 1] + dits[2];
267     gMC->Gsposp("ISI2", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
268     gMC->Gsposp("ISI2", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
269   }
270   
271   //     PLASTIC (G10FR4) (layer #5 and #6) 
272   
273   gMC->Gsvolu("IPLA", "TUBE", idtmed[262], dits, 0);
274   for (i = 4; i < 6; ++i) {
275     dits[0] = rl[i];
276     dits[1] = dits[0] + drpla[i];
277     dits[2] = dzb[i] / 2.;
278     zpos = dzl[i] + dits[2];
279     gMC->Gsposp("IPLA", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
280     gMC->Gsposp("IPLA", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
281   }
282   
283   //     COPPER (layer #5 and #6) 
284   
285   gMC->Gsvolu("ICO3", "TUBE", idtmed[259], dits, 0);
286   for (i = 4; i < 6; ++i) {
287     dits[0] = rl[i] + drpla[i];
288     dits[1] = dits[0] + drcu[i];
289     dits[2] = dzb[i] / 2.;
290     zpos = dzl[i] + dits[2];
291     gMC->Gsposp("ICO3", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
292     gMC->Gsposp("ICO3", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
293   }
294   
295   //     EPOXY (layer #5 and #6) 
296   
297   gMC->Gsvolu("IEPX", "TUBE", idtmed[262], dits, 0);
298   for (i = 4; i < 6; ++i) {
299     dits[0] = rl[i] + drpla[i] + drcu[i];
300     dits[1] = dits[0] + drepx[i];
301     dits[2] = dzb[i] / 2.;
302     zpos = dzl[i] + dits[2];
303     gMC->Gsposp("IEPX", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
304     gMC->Gsposp("IEPX", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
305   }
306   
307   //     SILICON (layer #5 and #6) 
308   
309   gMC->Gsvolu("ISI3", "TUBE", idtmed[251], dits, 0);
310   for (i = 4; i < 6; ++i) {
311     dits[0] = rl[i] + drpla[i] + drcu[i] + drepx[i];
312     dits[1] = dits[0] + drsi[i];
313     dits[2] = dzb[i] / 2.;
314     zpos = dzl[i] + dits[2];
315     gMC->Gsposp("ISI3", i-1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
316     gMC->Gsposp("ISI3", i+1, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
317   }
318   
319   //    SUPPORT 
320   
321   gMC->Gsvolu("ISUP", "TUBE", idtmed[274], dits, 0);
322   for (i = 0; i < 6; ++i) {
323     dits[0] = rl[i];
324     if (i < 5) dits[1] = rl[i+1];
325     else       dits[1] = rlim;
326     dits[2] = drsu / 2.;
327     zpos = dzl[i] + dzb[i] + dits[2];
328     gMC->Gsposp("ISUP", i+1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
329     gMC->Gsposp("ISUP", i+7, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
330   }
331   
332   // CABLES (HORIZONTAL) 
333   
334   gMC->Gsvolu("ICHO", "TUBE", idtmed[278], dits, 0);
335   for (i = 0; i < 6; ++i) {
336     dits[0] = rl[i];
337     dits[1] = dits[0] + drca;
338     dits[2] = (rzcone + TMath::Tan(acone) * (rl[i] - rl[0]) - (dzl[i]+ dzb[i] + drsu)) / 2.;
339     zpos = dzl[i] + dzb[i] + drsu + dits[2];
340     gMC->Gsposp("ICHO", i+1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
341     gMC->Gsposp("ICHO", i+7, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
342   }
343   //    DEFINE A CONICAL GHOST VOLUME FOR THE PHI SEGMENTATION 
344   pcits[0] = 0.;
345   pcits[1] = 360.;
346   pcits[2] = 2.;
347   pcits[3] = rzcone;
348   pcits[4] = 3.5;
349   pcits[5] = rl[0];
350   pcits[6] = pcits[3] + TMath::Tan(acone) * (rlim - rl[0]);
351   pcits[7] = rlim - rl[0] + 3.5;
352   pcits[8] = rlim;
353   gMC->Gsvolu("ICMO", "PCON", idtmed[275], pcits, 9);
354   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
355   gMC->Gspos("ICMO", 1, "ITSV", 0., 0., 0., 0, "ONLY");
356   gMC->Gspos("ICMO", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");
357   
358   //     DIVIDE INTO NSEC PHI-SECTIONS 
359   
360   gMC->Gsdvn("ICMD", "ICMO", nsec, 2);
361   gMC->Gsatt("ICMO", "SEEN", 0);
362   gMC->Gsatt("ICMD", "SEEN", 0);
363   
364   //     CONICAL CABLES 
365   
366   pcits[2] = 2.;
367   gMC->Gsvolu("ICCO", "PCON", idtmed[278], pcits, 0);
368   for (i = 1; i < 6; ++i) {
369     pcits[0] = -dphi[i] / 2.;
370     pcits[1] = dphi[i];
371     if (i < 5) {
372       dzco = TMath::Tan(acone) * (rl[i] - rl[i-1]);
373     } else {
374       dzco1 = zmax - (rzcone + TMath::Tan(acone) * (rl[5] - rl[0])) -2.;
375       dzco2 = (rlim - rl[5]) * TMath::Tan(acone);
376       if (rl[5] + dzco1 / TMath::Tan(acone) < rlim) {
377         dzco = dzco1;
378       } else {
379         dzco = dzco2;
380       }
381     }
382     pcits[3] = rzcone + TMath::Tan(acone) * (rl[i] - rl[0]);
383     pcits[4] = rl[i] - drcac[i] / TMath::Sin(acone);
384     pcits[5] = rl[i];
385     pcits[6] = pcits[3] + dzco;
386     pcits[7] = rl[i] + dzco / TMath::Tan(acone) - drcac[i] / TMath::Sin(acone);
387     pcits[8] = rl[i] + dzco / TMath::Tan(acone);
388     
389     gMC->Gsposp("ICCO", i, "ICMD", 0., 0., 0., 0, "ONLY", pcits, 9);
390     
391   }
392   zend = pcits[6];
393   rend = pcits[8];
394   
395   //  CONICAL CABLES BELOW TPC 
396   
397   //    DEFINE A CONICAL GHOST VOLUME FOR THE PHI SEGMENTATION 
398   pcits[0] = 0.;
399   pcits[1] = 360.;
400   pcits[2] = 2.;
401   pcits[3] = zend;
402   pcits[5] = rend;
403   pcits[4] = pcits[5] - drca_tpc;
404   pcits[6] = xltpc;
405   pcits[8] = pcits[4] + (pcits[6] - pcits[3]) * TMath::Tan(acable * kDegrad);
406   pcits[7] = pcits[8] - drca_tpc;
407   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
408   gMC->Gsvolu("ICCM", "PCON", idtmed[275], pcits, 9);
409   gMC->Gspos("ICCM", 1, "ALIC", 0., 0., 0., 0, "ONLY");
410   gMC->Gspos("ICCM", 2, "ALIC", 0., 0., 0., idrotm[200], "ONLY");
411   gMC->Gsdvn("ITMD", "ICCM", nsec, 2);
412   gMC->Gsatt("ITMD", "SEEN", 0);
413   gMC->Gsatt("ICCM", "SEEN", 0);
414   
415   //     NOW PLACE SEGMENTS WITH DECREASING PHI SEGMENTS INTO THE 
416   //     GHOST-VOLUME 
417   
418   pcits[2] = 2.;
419   gMC->Gsvolu("ITTT", "PCON", idtmed[278], pcits, 0);
420   r0 = rend;
421   z0 = zend;
422   dz = (xltpc - zend) / 9.;
423   for (i = 0; i < 9; ++i) {
424     zi = z0 + i* dz + dz / 2.;
425     ri = r0 + (zi - z0) * TMath::Tan(acable * kDegrad);
426     dphii = dphi[5] * r0 / ri;
427     pcits[0] = -dphii / 2.;
428     pcits[1] = dphii;
429     pcits[3] = zi - dz / 2.;
430     pcits[5] = r0 + (pcits[3] - z0) * TMath::Tan(acable * kDegrad);
431     pcits[4] = pcits[5] - drca_tpc;
432     pcits[6] = zi + dz / 2.;
433     pcits[8] = r0 + (pcits[6] - z0) * TMath::Tan(acable * kDegrad);
434     pcits[7] = pcits[8] - drca_tpc;
435     
436     gMC->Gsposp("ITTT", i+1, "ITMD", 0., 0., 0., 0, "ONLY", pcits, 9);
437   }
438   
439   // --- Outputs the geometry tree in the EUCLID/CAD format 
440   
441   if (fEuclidOut) {
442     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
443   }
444 }
445  
446 //_____________________________________________________________________________
447 void AliITSv0::DrawModule()
448 {
449   //
450   // Draw a shaded view of the FMD version 1
451   //
452   
453   
454   // Set everything unseen
455   gMC->Gsatt("*", "seen", -1);
456   // 
457   // Set ALIC mother visible
458   gMC->Gsatt("ALIC","SEEN",0);
459   //
460   // Set the volumes visible
461   gMC->Gsatt("ITSV","SEEN",0);
462   gMC->Gsatt("ITS1","SEEN",1);
463   gMC->Gsatt("ITS2","SEEN",1);
464   gMC->Gsatt("ITS3","SEEN",1);
465   gMC->Gsatt("ITS4","SEEN",1);
466   gMC->Gsatt("ITS5","SEEN",1);
467   gMC->Gsatt("ITS6","SEEN",1);
468   gMC->Gsatt("ISI2","SEEN",1);
469   gMC->Gsatt("IPLA","SEEN",1);
470   gMC->Gsatt("ICHO","SEEN",1);
471   gMC->Gsatt("ICMO","SEEN",0);
472   gMC->Gsatt("ICMD","SEEN",0);
473   gMC->Gsatt("ICCO","SEEN",1);
474   gMC->Gsatt("ICCM","SEEN",0);
475   gMC->Gsatt("ITMD","SEEN",0);
476   gMC->Gsatt("ITTT","SEEN",1);
477   //
478   gMC->Gdopt("hide", "on");
479   gMC->Gdopt("shad", "on");
480   gMC->Gsatt("*", "fill", 7);
481   gMC->SetClipBox(".");
482   gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
483   gMC->DefaultRange();
484   gMC->Gdraw("alic", 40, 30, 0, 11, 10, .05, .05);
485   gMC->Gdhead(1111, "Inner Tracking System Version 0");
486   gMC->Gdman(16, 6, "MAN");
487 }
488
489 //_____________________________________________________________________________
490 void AliITSv0::StepManager()
491 {
492   //
493   // Called at every step in the ITS
494   //
495   Int_t         copy, id;
496   Float_t       hits[7];
497   Int_t         vol[3];
498   Float_t       position[3];
499   Float_t       momentum[4];
500   TClonesArray &lhits = *fHits;
501   //
502   if(gMC->TrackCharge() && gMC->Edep()) {
503     //
504     // Only entering charged tracks
505     if((id=gMC->CurrentVol(0,copy))==fIdSens1) {  
506       vol[0]=1;
507       id=gMC->CurrentVolOff(1,0,copy);      
508       vol[1]=copy;
509       id=gMC->CurrentVolOff(2,0,copy);
510       vol[2]=copy;                       
511     } else if(id==fIdSens2) {
512       vol[0]=2;
513       id=gMC->CurrentVolOff(1,0,copy);       
514       vol[1]=copy;
515       id=gMC->CurrentVolOff(2,0,copy);
516       vol[2]=copy;                    
517     } else if(id==fIdSens3) {
518       vol[0]=3;
519       vol[1]=copy;
520       id=gMC->CurrentVolOff(1,0,copy);
521       vol[2]=copy;             
522     } else if(id==fIdSens4) {
523       vol[0]=4;
524       vol[1]=copy;
525       id=gMC->CurrentVolOff(1,0,copy);
526       vol[2]=copy;                  
527     } else if(id==fIdSens5) {
528       vol[0]=5;
529       vol[1]=copy;
530       id=gMC->CurrentVolOff(1,0,copy);
531       vol[2]=copy;               
532     } else if(id==fIdSens6) {
533       vol[0]=6;
534       vol[1]=copy;
535       id=gMC->CurrentVolOff(1,0,copy);
536       vol[2]=copy;                      
537     } else return;
538     gMC->TrackPosition(position);
539     gMC->TrackMomentum(momentum);
540     hits[0]=position[0];
541     hits[1]=position[1];
542     hits[2]=position[2];          
543     hits[3]=momentum[0]*momentum[3];
544     hits[4]=momentum[1]*momentum[3];
545     hits[5]=momentum[2]*momentum[3];          
546     hits[6]=gMC->Edep();
547     new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
548   }    
549 }