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