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