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