]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSvPPRcoarseasymm.cxx
Source file of the ITS Kalman tracking
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRcoarseasymm.cxx
index b5b99c0cf11edec394eea9c715b4cb53fd51f545..fba51e9a07c7e044db1a0fa5c0c0c044412e441f 100644 (file)
 
 /*
 $Log$
+Revision 1.10  2000/10/27 17:19:50  barbera
+Position of rails w.r.t. the interaction point corrected.
+
+Revision 1.9  2000/10/27 13:31:29  barbera
+Rails between ITS and TPC added.
+
+Revision 1.8  2000/10/27 13:03:08  barbera
+Small changes in the SPD volumes and materials
+
+Revision 1.6  2000/10/16 14:45:37  barbera
+Mother volume ITSD modified to avoid some overlaps
+
+Revision 1.5  2000/10/16 13:49:15  barbera
+Services volumes slightly modified and material added following Pierluigi Barberis' information
+
+Revision 1.4  2000/10/07 15:33:07  barbera
+Small corrections to the ITSV mother volume
+
+Revision 1.3  2000/10/07 13:06:50  barbera
+Some new materials and media defined
+
+Revision 1.2  2000/10/07 10:58:15  barbera
+Mother volume ITSV corrected
+
+Revision 1.1  2000/10/06 23:09:24  barbera
+New coarse geometry (asymmetric services
+
 Revision 1.20  2000/10/02 21:28:08  fca
 Removal of useless dependecies via forward declarations
 
@@ -205,15 +232,15 @@ void AliITSvPPRcoarseasymm::CreateGeometry(){
 ////////////////////////////////////////////////////////////////////////
   
   //INNER RADII OF THE SILICON LAYERS 
-  Float_t rl[6]    = { 3.95,7.,15.,24.,38.1,43.5765 };   
+  Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,43.5765 };   
   //THICKNESSES OF LAYERS (in % radiation length)
-  Float_t drl[6]   = { 1.03,1.03+0.36,0.34+0.94,0.95,0.34+0.91,0.87 };   
+  Float_t drl[6]   = { 1.03,1.03,0.94,0.95,0.91,0.87 };   
   //HALF LENGTHS OF LAYERS  
-  Float_t dzl[6]   = { 14.344,14.344,25.1,32.1,49.405,55.27 };
+  Float_t dzl[6]   = { 14.35,14.35,25.1,32.1,49.405,55.27 };
   //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
-  Float_t dzb[6]   = { 17.,17.,15.,17.,12.,11. };   // check !!  
+  Float_t dzb[6]   = { 12.4,12.4,19.,19.,12.,11. };   
   //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
-  Float_t drb[6]   = { 1.5,1.5,5.,5.,3.,3. };   // check spd and ssd !! !!      
+  Float_t drb[6]   = { rl[1]-rl[0],0.2,5.,5.,3.,3. };        
 
  
   Float_t dits[3], rlim, zmax;
@@ -235,30 +262,82 @@ void AliITSvPPRcoarseasymm::CreateGeometry(){
   zmax  = 76.708;
   xltpc = 284.;
   
+  // --- Define ghost volume containing the whole ITS (including services) 
+  //     and fill it with air 
+  
+  dgh[0] = 0.;
+  dgh[1] = 360.;
+  dgh[2] = 12.;
+  dgh[3] = -xltpc-5.-0.1;
+  dgh[4] = 44.9;
+  dgh[5] = 85.;
+  dgh[6] = -xltpc;
+  dgh[7] = 44.9;
+  dgh[8] = 85.;
+  dgh[9] = -xltpc;
+  dgh[10] = 44.9;
+  dgh[11] = 56.1;
+  dgh[12] = -100.7;
+  dgh[13] = 44.9;
+  dgh[14] = 56.1;
+  dgh[15] = -77.2;
+  dgh[16] = 44.9;
+  dgh[17] = 56.1;
+  dgh[18] = -40.;
+  dgh[19] = 3.295;
+  dgh[20] = 56.1; 
+  dgh[21] = 40.;
+  dgh[22] = 3.295;
+  dgh[23] = 56.1;
+  dgh[24] = 77.2;
+  dgh[25] = 44.9;
+  dgh[26] = 56.1;
+  dgh[27] = 100.7;
+  dgh[28] = 44.9;
+  dgh[29] = 56.1;
+  dgh[30] = xltpc;
+  dgh[31] = 61.5;
+  dgh[32] = 61.5+4.;
+  dgh[33] = xltpc;
+  dgh[34] = 61.5;
+  dgh[35] = 85.;
+  dgh[36] = xltpc+4.+0.1;
+  dgh[37] = 62.4;
+  dgh[38] = 85.;
+
+  gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 39);
+  
+  // --- Place the ghost volume in its mother volume (ALIC) and make it 
+  //     invisible 
+  
+  gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
+  gMC->Gsatt("ITSV", "SEEN", 0); 
+
+
   // --- Define ghost volume containing the six layers and fill it with air 
   
   dgh[0] = 0.;
   dgh[1] = 360.;
   dgh[2] = 4.;
-  dgh[3] = -76.708;
+  dgh[3] = -77.2;
   dgh[4] = 45.;
   dgh[5] = 56.;
-  dgh[6] = -36.;     
+  dgh[6] = -40.;     
   dgh[7] = 3.3;
   dgh[8] = 56.;
-  dgh[9] = 36.;
+  dgh[9] = 40.;
   dgh[10] = 3.3;
   dgh[11] = 56.;
-  dgh[12] = 76.708;
+  dgh[12] = 77.2;
   dgh[13] = 45.;
   dgh[14] = 56.;
-  gMC->Gsvolu("ITSV", "PCON", idtmed[275], dgh, 15);
+  gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 15);
   
   // --- Place the ghost volume in its mother volume (ITSV) and make it 
   //     invisible 
   
-  gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
-  //gMC->Gsatt("ITSV", "SEEN", 0);
+  gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  //gMC->Gsatt("ITSD", "SEEN", 0);
   
   //     ITS LAYERS (SILICON) 
   
@@ -266,183 +345,366 @@ void AliITSvPPRcoarseasymm::CreateGeometry(){
   dits[1] = rl[0] + drl[0];
   dits[2] = dzl[0];
   gMC->Gsvolu("ITS1", "TUBE", idtmed[199], dits, 3);
-  gMC->Gspos("ITS1", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
   
   dits[0] = rl[1];
   dits[1] = rl[1] + drl[1];
   dits[2] = dzl[1];
   gMC->Gsvolu("ITS2", "TUBE", idtmed[199], dits, 3);
-  gMC->Gspos("ITS2", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
   
   dits[0] = rl[2];
   dits[1] = rl[2] + drl[2];
   dits[2] = dzl[2];
   gMC->Gsvolu("ITS3", "TUBE", idtmed[224], dits, 3);
-  gMC->Gspos("ITS3", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
   
   dits[0] = rl[3];
   dits[1] = rl[3] + drl[3];
   dits[2] = dzl[3];
   gMC->Gsvolu("ITS4", "TUBE", idtmed[224], dits, 3);
-  gMC->Gspos("ITS4", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS4", 1, "ITSD", 0., 0., 0., 0, "ONLY");
   
   dits[0] = rl[4];
   dits[1] = rl[4] + drl[4];
   dits[2] = dzl[4];
   gMC->Gsvolu("ITS5", "TUBE", idtmed[249], dits, 3);
-  gMC->Gspos("ITS5", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS5", 1, "ITSD", 0., 0., 0., 0, "ONLY");
   
   dits[0] = rl[5];
   dits[1] = rl[5] + drl[5];
   dits[2] = dzl[5];
   gMC->Gsvolu("ITS6", "TUBE", idtmed[249], dits, 3);
-  gMC->Gspos("ITS6", 1, "ITSV", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ITS6", 1, "ITSD", 0., 0., 0., 0, "ONLY");
+  
+  // END-LADDER ELECTRONICS BOXES AND CABLES FOR SPD
+  
+  gMC->Gsvolu("IEL1", "TUBE", idtmed[208], dits, 0); 
+  for (i = 0; i < 2; i++) {
+    dits[0] = rl[i];
+    dits[1] = dits[0] + drb[i];
+    dits[2] = dzb[i] / 2.;
+    zpos = dzl[i] + dits[2];
+    gMC->Gsposp("IEL1", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
+    gMC->Gsposp("IEL1", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
+  }
   
-  // END-LADDER ELECTRONICS BOXES AND CABLES 
+  // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
   
-  gMC->Gsvolu("IELE", "TUBE", idtmed[233], dits, 0); // check the medium !!
-  for (i = 0; i < 6; i++) {
+  gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0); 
+  for (i = 2; i < 4; i++) {
     dits[0] = rl[i];
     dits[1] = dits[0] + drb[i];
     dits[2] = dzb[i] / 2.;
     zpos = dzl[i] + dits[2];
-    gMC->Gsposp("IELE", i+1, "ITSV", 0., 0., zpos, 0, "ONLY", dits, 3);
-    gMC->Gsposp("IELE", i+1+6, "ITSV", 0., 0.,-zpos, 0, "ONLY", dits, 3);
+    gMC->Gsposp("IEL2", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
+    gMC->Gsposp("IEL2", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
   }
+  
+  // END-LADDER ELECTRONICS BOXES AND CABLES FOR SSD
+  
+  gMC->Gsvolu("IEL3", "TUBE", idtmed[263], dits, 0); 
+  for (i = 4; i < 6; i++) {
+    dits[0] = rl[i];
+    dits[1] = dits[0] + drb[i];
+    dits[2] = dzb[i] / 2.;
+    zpos = dzl[i] + dits[2];
+    gMC->Gsposp("IEL3", i+1, "ITSD", 0., 0., zpos, 0, "ONLY", dits, 3);
+    gMC->Gsposp("IEL3", i+1+6, "ITSD", 0., 0.,-zpos, 0, "ONLY", dits, 3);
+  }    
     
 
-  //    DEFINE END CONES FOR SPD
-  
-  pcits[0] = 0.;
-  pcits[1] = 360.;
-  pcits[2] = 2.;
-  pcits[3] = 32.;
-  pcits[4] = (rl[0]+rl[1])/2.;
-  pcits[5] = (rl[0]+rl[1])/2.+2.;   // check thickness !!
-  pcits[6] = 39.4;
-  pcits[7] = 10.065;
-  pcits[8] = 10.065+2.;          // check thickness !!
-  gMC->Gsvolu("ICO1", "PCON", idtmed[275], pcits, 9);    // check the medium !!
-  AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
-  gMC->Gspos("ICO1", 1, "ITSV", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO1", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");
-
+  //    DEFINE THERMAL SCREEN FOR SPD
+  
+  pcits[0] = 8.3;
+  pcits[1] = 8.5;
+  pcits[2] = 42.5;
+  gMC->Gsvolu("ICY1", "TUBE", idtmed[274], pcits, 3);   
+  gMC->Gspos("ICY1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
 
   //    DEFINE END CONES FOR SDD
   
-  pcits[0] = 0.;
-  pcits[1] = 360.;
-  pcits[2] = 2.;
-  pcits[3] = 39.4;
-  pcits[4] = 10.065;
-  pcits[5] = 10.065+3.0;   // check thickness !!
-  pcits[6] = 57.4;
-  pcits[7] = 28.;
-  pcits[8] = 28.+3.0;    // check thickness !!
-  gMC->Gsvolu("ICO2", "PCON", idtmed[275], pcits, 9);    // check the medium !!
-  gMC->Gspos("ICO2", 1, "ITSV", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO2", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");
+  pcits[0] = (59.-42.5)/2.;
+  pcits[1] = 8.5;
+  pcits[2] = 8.5+3.0;
+  pcits[3] = 28.;
+  pcits[4] = 28.+3.0;  
+  gMC->Gsvolu("ICO1", "CONE", idtmed[274], pcits, 5);    
+  AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
+  gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 42.5+pcits[0], 0, "ONLY");
+  gMC->Gspos("ICO1", 2, "ITSD", 0., 0., -(42.5+pcits[0]), idrotm[200], "ONLY");
 
+  //    DEFINE CYLINDER BETWEEN SDD AND SSD
+  
+  pcits[0] = (59.5-0.13/2.)/2.;
+  pcits[1] = (59.5+0.13/2.)/2.;
+  pcits[2] = 57.;
+  gMC->Gsvolu("ICY2", "TUBE", idtmed[274], pcits, 3);   
+  gMC->Gspos("ICY2", 1, "ITSD", 0., 0., 0., 0, "ONLY"); 
 
   //    DEFINE END CONES FOR SSD
   
-  pcits[0] = 0.;
-  pcits[1] = 360.;
-  pcits[2] = 2.;
-  pcits[3] = 57.4;
-  pcits[4] = 28.0;
-  pcits[5] = 28.0+4.0;   // check thickness !!
-  pcits[6] = 74.0;
-  pcits[7] = 47.;
-  pcits[8] = 47.+4.0;    // check thickness !!
-  gMC->Gsvolu("ICO3", "PCON", idtmed[275], pcits, 9);    // check the medium !!
-  gMC->Gspos("ICO3", 1, "ITSV", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO3", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");
-
+  pcits[0] = (74.-59.)/2.;
+  pcits[1] = 28.;
+  pcits[2] = 28.+4.;
+  pcits[3] = 47.;
+  pcits[4] = 47.+4.;
+  gMC->Gsvolu("ICO2", "CONE", idtmed[274], pcits, 5);    
+  gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
   
   // SERVICES
+    
+  // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
   
+  dgh[0] = 45.;
+  dgh[1] = 45.+1.0;
+  dgh[2] = 9.5;
   
-  // --- Define cables at the end of the ITS cones
+  gMC->Gsvolu("ICCU", "TUBE", idtmed[279], dgh, 3);  
+  gMC->Gspos("ICCU", 1, "ITSV", 0., 0., 86.7, 0, "ONLY");
+  gMC->Gspos("ICCU", 2, "ITSV", 0., 0., -86.7, idrotm[200], "ONLY");
   
-  dgh[0] = 45.;
-  dgh[1] = 56.;
-  dgh[2] = 9.75;
+  // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
+  
+  dgh[0] = 45.+1.0;
+  dgh[1] = 45.+1.0+1.5;
+  dgh[2] = 9.5;
   
-  gMC->Gsvolu("ICA1", "TUBE", idtmed[275], dgh, 3);  // check medium !!!
-  gMC->Gspos("ICA1", 1, "ALIC", 0., 0., 86.45, 0, "ONLY");
-  gMC->Gspos("ICA1", 2, "ALIC", 0., 0., -86.45, idrotm[200], "ONLY");
+  gMC->Gsvolu("ICCC", "TUBE", idtmed[274], dgh, 3);  
+  gMC->Gspos("ICCC", 1, "ITSV", 0., 0., 86.7, 0, "ONLY");
+  gMC->Gspos("ICCC", 2, "ITSV", 0., 0., -86.7, idrotm[200], "ONLY");  
   
-  // --- Define patch panels at the end of the ITS cones
+  // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
   
   dgh[0] = 45.;
   dgh[1] = 56.;
   dgh[2] = 2.25;
   
-  gMC->Gsvolu("IPAN", "TUBE", idtmed[275], dgh, 3);  // check medium !!!  
-  gMC->Gspos("IPAN", 1, "ALIC", 0., 0., 98.45, 0, "ONLY");  
-  gMC->Gspos("IPAN", 2, "ALIC", 0., 0., -98.45, idrotm[200], "ONLY"); 
+  gMC->Gsvolu("IPAN", "TUBE", idtmed[285], dgh, 3);  
+  gMC->Gspos("IPAN", 1, "ITSV", 0., 0., 98.45, 0, "ONLY");  
+  gMC->Gspos("IPAN", 2, "ITSV", 0., 0., -98.45, idrotm[200], "ONLY"); 
   
-  // --- Define cables/cooling on the absorber side
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
+  //     UPPER PART
   
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = 100.7;
-  dgh[4] = 45.2;
-  dgh[5] = 50.53;    // same cross section
-  dgh[6] = xltpc;
-  dgh[7] = 61.8;
-  dgh[8] = 65.8;    // same cross section
-  gMC->Gsvolu("ICC1", "PCON", idtmed[275], dgh, 9);  // check medium !!!  
-  gMC->Gspos("ICC1", 1, "ALIC", 0., 0., 0., 0, "ONLY");  
-  gMC->Gspos("ICC1", 2, "ALIC", 0., 0., -98.45, idrotm[200], "ONLY"); 
-  
-  // --- Define cables/cooling behind the TPC on the absorber side
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 45.2;
+  dgh[2] = 45.2+1.0;
+  dgh[3] = 61.8;
+  dgh[4] = 61.8+1.0;
+  dgh[5] = 12.;    
+  dgh[6] = 168.;
+  gMC->Gsvolu("ICU1", "CONS", idtmed[279], dgh, 7);    
+  gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 100.7+dgh[0], 0, "ONLY");    
   
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = xltpc;
-  dgh[4] = 62.5;
-  dgh[5] = 74.5;
-  dgh[6] = xltpc+4.;
-  dgh[7] = 62.5;
-  dgh[8] = 74.5;    
-  gMC->Gsvolu("ICC2", "PCON", idtmed[275], dgh, 9);  // check medium !!!  
-  gMC->Gspos("ICC2", 1, "ALIC", 0., 0., 0., 0, "ONLY");  
-  
-  // --- Define cables/cooling on the other side w.r.t. the absorber 
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
+  //     LOWER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 45.2;
+  dgh[2] = 45.2+1.0;
+  dgh[3] = 61.8;
+  dgh[4] = 61.8+1.0;
+  dgh[5] = 192.;    
+  dgh[6] = 348.;
+  gMC->Gsvolu("ICU2", "CONS", idtmed[279], dgh, 7);    
+  gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 100.7+dgh[0], 0, "ONLY");  
+
+   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
+   //     UPPER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 45.2+1.0;
+  dgh[2] = 45.2+1.0+1.5;
+  dgh[3] = 61.8+1.0;
+  dgh[4] = 61.8+1.0+1.5;
+  dgh[5] = 12.;    
+  dgh[6] = 168.;  
+  gMC->Gsvolu("ICC1", "CONS", idtmed[274], dgh, 7);    
+  gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 100.7+dgh[0], 0, "ONLY");   
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
+  //     LOWER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 45.2+1.0;
+  dgh[2] = 45.2+1.0+1.5;
+  dgh[3] = 61.8+1.0;
+  dgh[4] = 61.8+1.0+1.5;
+  dgh[5] = 192.;    
+  dgh[6] = 348.;  
+  gMC->Gsvolu("ICC2", "CONS", idtmed[274], dgh, 7);    
+  gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 100.7+dgh[0], 0, "ONLY");  
+   
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
+  //     UPPER PART
+    
+  dgh[0] = 62.5;
+  dgh[1] = 74.5;
+  dgh[2] = 0.5;
+  dgh[3] = 12.;
+  dgh[4] = 168.;
+  gMC->Gsvolu("ICU3", "TUBS", idtmed[279], dgh, 5);    
+  gMC->Gspos("ICU3", 1, "ITSV", 0., 0., xltpc+1.5+dgh[2], 0, "ONLY");  
+
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
+  //     LOWER PART
+  
+  dgh[0] = 62.5;
+  dgh[1] = 74.5;
+  dgh[2] = 0.5;
+  dgh[3] = 192.;
+  dgh[4] = 348.;
+  gMC->Gsvolu("ICU4", "TUBS", idtmed[279], dgh, 5);    
+  gMC->Gspos("ICU4", 1, "ITSV", 0., 0., xltpc+1.5+dgh[2], 0, "ONLY");      
+     
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
+  //     UPPER PART
+
+  dgh[0] = 62.5;
+  dgh[1] = 74.5;
+  dgh[2] = 0.75;
+  dgh[3] = 12.;
+  dgh[4] = 168.;
+  gMC->Gsvolu("ICC3", "TUBS", idtmed[274], dgh, 5);    
+  gMC->Gspos("ICC3", 1, "ITSV", 0., 0., xltpc+dgh[2], 0, "ONLY");   
+    
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
+  //     LOWER PART
+
+  dgh[0] = 62.5;
+  dgh[1] = 74.5;
+  dgh[2] = 0.75;
+  dgh[3] = 192.;
+  dgh[4] = 348.;
+  gMC->Gsvolu("ICC4", "TUBS", idtmed[274], dgh, 5);    
+  gMC->Gspos("ICC4", 1, "ITSV", 0., 0., xltpc+dgh[2], 0, "ONLY");  
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
+  //     THE ABSORBER - COPPER PART - UPPER PART
+  
+  dgh[0] = 45.;
+  dgh[1] = 45.+1.0;
+  dgh[2] = (xltpc-100.7+1.5)/2.;
+  dgh[3] = 12.;
+  dgh[4] = 168.;
+  gMC->Gsvolu("ICU5", "TUBS", idtmed[279], dgh, 5);   
+  gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -100.7-dgh[2], 0, "ONLY");  
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
+  //     THE ABSORBER - COPPER PART - LOWER PART
   
   dgh[0] = 45.;
-  dgh[1] = 49.;
+  dgh[1] = 45.+1.0;
+  dgh[2] = (xltpc-100.7+1.5)/2.;
+  dgh[3] = 192.;
+  dgh[4] = 348.;  
+  gMC->Gsvolu("ICU6", "TUBS", idtmed[279], dgh, 5);   
+  gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -100.7-dgh[2], 0, "ONLY");    
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
+  //     THE ABSORBER - CARBON PART - UPPER PART
+  
+  dgh[0] = 45.+1.0;
+  dgh[1] = 45.+1.0+1.5;
   dgh[2] = (xltpc-100.7)/2.;
-  gMC->Gsvolu("ICC3", "TUBE", idtmed[275], dgh, 3);  // check medium !!!  
-  gMC->Gspos("ICC3", 1, "ALIC", 0., 0., -100.7-dgh[2], 0, "ONLY");  
+  dgh[3] = 12.;
+  dgh[4] = 168.;  
+  gMC->Gsvolu("ICC5", "TUBS", idtmed[274], dgh, 5);   
+  gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -100.7-dgh[2], 0, "ONLY");   
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
+  //     THE ABSORBER - CARBON PART - LOWER PART
+  
+  dgh[0] = 45.+1.0;
+  dgh[1] = 45.+1.0+1.5;
+  dgh[2] = (xltpc-100.7)/2.;
+  dgh[3] = 192.;
+  dgh[4] = 348.;  
+  gMC->Gsvolu("ICC6", "TUBS", idtmed[274], dgh, 5);   
+  gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -100.7-dgh[2], 0, "ONLY");      
 
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
+  //     COPPER PART - UPPER PART
+    
+  dgh[0] = 45.;
+  dgh[1] = 74.5;
+  dgh[2] = 0.5;
+  dgh[3] = 12.;
+  dgh[4] = 168.;  
+  gMC->Gsvolu("ICU7", "TUBS", idtmed[279], dgh, 5);   
+  gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(xltpc+1.5+dgh[2]), 0, "ONLY");  
   
-  // --- Define cables/cooling behind the TPC on other side w.r.t. the absorber
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
+  //     COPPER PART - LOWER PART
+    
+  dgh[0] = 45.;
+  dgh[1] = 74.5;
+  dgh[2] = 0.5;
+  dgh[3] = 192.;
+  dgh[4] = 348.;   
+  gMC->Gsvolu("ICU8", "TUBS", idtmed[279], dgh, 5);   
+  gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(xltpc+1.5+dgh[2]), 0, "ONLY");      
+    
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
+  //     CARBON PART - UPPER PART
   
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = -xltpc;
-  dgh[4] = 45.;
-  dgh[5] = 74.5;
-  dgh[6] = -xltpc-2.3;
-  dgh[7] = 45.;
-  dgh[8] = 74.5;    
-  gMC->Gsvolu("ICC4", "PCON", idtmed[275], dgh, 9);  // check medium !!!  
-  gMC->Gspos("ICC4", 1, "ALIC", 0., 0., 0., 0, "ONLY");  
+  dgh[0] = 45.+1.0;
+  dgh[1] = 74.5;
+  dgh[2] = 0.75;
+  dgh[3] = 12.;
+  dgh[4] = 168.;   
+  gMC->Gsvolu("ICC7", "TUBS", idtmed[274], dgh, 5);   
+  gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(xltpc+dgh[2]), 0, "ONLY"); 
+  
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
+  //     CARBON PART - LOWER PART
+  
+  dgh[0] = 45.+1.0;
+  dgh[1] = 74.5;
+  dgh[2] = 0.75;
+  dgh[3] = 192.;
+  dgh[4] = 348.;     
+  gMC->Gsvolu("ICC8", "TUBS", idtmed[274], dgh, 5);   
+  gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(xltpc+dgh[2]), 0, "ONLY");        
     
-  // --- Define hook for the TPC on other side w.r.t. the absorber
+  // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
   
   dgh[0] = 74.5;
   dgh[1] = 79.5;
   dgh[2] = 2.5;
-  gMC->Gsvolu("IHOK", "TUBE", idtmed[275], dgh, 3);  // check medium !!!  
-  gMC->Gspos("IHOK", 1, "ALIC", 0., 0., -xltpc-dgh[2], 0, "ONLY");    
+  dgh[3] = 12.;
+  dgh[4] = 168.;    
+  gMC->Gsvolu("IHK1", "TUBS", idtmed[284], dgh, 5);  
+  gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -xltpc-dgh[2], 0, "ONLY");   
   
+  // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
+  
+  dgh[0] = 74.5;
+  dgh[1] = 79.5;
+  dgh[2] = 2.5;
+  dgh[3] = 192.;
+  dgh[4] = 348.;    
+  gMC->Gsvolu("IHK2", "TUBS", idtmed[284], dgh, 5);  
+  gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -xltpc-dgh[2], 0, "ONLY");      
+  
+  // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
+  
+  dgh[0] = 0.85;
+  dgh[1] = 10.;
+  dgh[2] = 190.;  
+  gMC->Gsvolu("IRAI", "BOX ", idtmed[285], dgh, 3);   
+  gMC->Gspos("IRAI", 1, "ITSV", 53., 0., -69.5, 0, "ONLY");
+  gMC->Gspos("IRAI", 2, "ITSV", -53., 0., -69.5, 0, "ONLY");        
+
+  // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
+  
+  dgh[0] = 58.;
+  dgh[1] = 59.;
+  dgh[2] = 0.2;  //check the thickness  
+  gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);   
+  gMC->Gspos("ICYL", 1, "ITSV", 0., 0., 74., 0, "ONLY");
+  gMC->Gspos("ICYL", 2, "ITSV", 0., 0., -74., idrotm[200], "ONLY");     
   
   // --- Outputs the geometry tree in the EUCLID/CAD format 
   
@@ -491,10 +753,15 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   Float_t apoly[2] = { 12.01,1. };
   Float_t zpoly[2] = { 6.,1. };
   Float_t wpoly[2] = { .33,.67 };
-  // SERVICES
+  // old SERVICES
   Float_t zserv[4] = { 1.,6.,26.,29. };
   Float_t aserv[4] = { 1.,12.,55.8,63.5 };
   Float_t wserv[4] = { .014,.086,.42,.48 };
+  // Stainless steel
+  Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
+  Float_t zsteel[4] = { 26.,24.,28.,14. };
+  Float_t wsteel[4] = { .715,.18,.1,.005 };
+  
   
   Int_t  isxfld  = gAlice->Field()->Integ();
   Float_t sxmgmx = gAlice->Field()->Max();
@@ -514,16 +781,20 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMaterial(6, "SPD Al$",     26.981539, 13., 2.6989, 8.9, 999);
   AliMixture( 7, "SPD Water $", awat, zwat, denswat, -2, wwat);
   AliMixture( 8, "SPD Freon$",  afre, zfre, densfre, -2, wfre);
+  AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999); 
+  AliMaterial(10, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);       // check !!!!
   // ** 
-  AliMedium(0, "SPD Si$",      0, 1,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(1, "SPD Si chip$", 1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(2, "SPD Si bus$",  2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(3, "SPD C$",       3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(4, "SPD Air$",     4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(5, "SPD Vacuum$",  5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
-  AliMedium(6, "SPD Al$",      6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(7, "SPD Water $",  7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(8, "SPD Freon$",   8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(0, "SPD Si$",       0, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(1, "SPD Si chip$",  1, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(2, "SPD Si bus$",   2, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(3, "SPD C$",        3, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(4, "SPD Air$",      4, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(5, "SPD Vacuum$",   5, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
+  AliMedium(6, "SPD Al$",       6, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(7, "SPD Water $",   7, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(8, "SPD Freon$",    8, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(9, "SPD End ladder",9, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(10, "SPD cone$",   10, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);   
   
   //  225-249 --> Silicon Drift Detectors (detectors, chips, buses, cooling,..)
   
@@ -549,9 +820,11 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMaterial(35, "SDD Copper$", 63.546, 29., 8.96, 1.43, 999);
   AliMixture( 36, "SDD Ceramics$", acer, zcer, denscer, -5, wcer);
   AliMaterial(37, "SDD Kapton$", 12.011, 6., 1.3, 31.27, 999);
+  AliMaterial(38, "SDD End ladder$",28.0855, 14., 2.33, 9.36, 999); // check !!!!
+  AliMaterial(39, "SDD cone$",28.0855, 14., 2.33, 9.36, 999);       // check !!!!
   // ** 
   // check A and Z 
-  AliMedium(25, "SDD Si$",      25, 1,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(25, "SDD Si$",      25, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(26, "SDD Si chip$", 26, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(27, "SDD Si bus$",  27, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(28, "SDD C$",       28, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
@@ -564,6 +837,8 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMedium(35, "SDD Copper$",  35, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(36, "SDD Ceramics$",36, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(37, "SDD Kapton$",  37, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(38, "SDD End ladder",38, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(39, "SDD cone$",   39, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   
   //  250-274 --> Silicon Strip Detectors (detectors, chips, buses, cooling,..)
   
@@ -594,9 +869,11 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMixture( 61, "SSD Ceramics$", acer, zcer, denscer, 5, wcer);
   AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
   // check A and Z 
-  AliMaterial(63, "SDD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
+  AliMaterial(63, "SSD G10FR4$", 17.749, 8.875, 1.8, 21.822, 999.);
+  AliMaterial(64, "SSD End ladder$",28.0855, 14., 2.33, 9.36, 999); // check !!!!
+  AliMaterial(65, "SSD cone$",28.0855, 14., 2.33, 9.36, 999);       // check !!!! 
   // ** 
-  AliMedium(50, "SSD Si$",      50, 1,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(50, "SSD Si$",      50, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(51, "SSD Si chip$", 51, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(52, "SSD Si bus$",  52, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(53, "SSD C$",       53, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
@@ -610,6 +887,8 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMedium(61, "SSD Ceramics$",61, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(62, "SSD Kapton$",  62, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(63, "SSD G10FR4$",  63, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(64, "SPD End ladder",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(65, "SPD cone$",   65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   
   //     275-299 --> General (end-caps, frames, cooling, cables, etc.) 
   
@@ -625,6 +904,11 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   // calls with the same array must specify the number of elements as 
   // positive 
   AliMixture(81, "GEN Water $", awat, zwat, denswat, 2, wwat);
+//  AliMaterial(82, "GEN Cables$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!
+//  AliMaterial(83, "GEN patch pan$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!  
+//  AliMaterial(84, "GEN serv$", 12.011, 6., 2.265, 18.8, 999.);  // check !!!  
+  AliMixture(85, "GEN Inox$", asteel, zsteel, 7.88, 4, wsteel);
+  AliMaterial(86, "GEN Al$",      26.981539, 13., 2.6989, 8.9, 999);
   // ** 
   AliMedium(75,"GEN C$",        75, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(76,"GEN Air$",      76, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
@@ -633,6 +917,11 @@ void AliITSvPPRcoarseasymm::CreateMaterials(){
   AliMedium(79,"GEN SERVICES$", 79, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(80,"GEN Copper$",   80, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   AliMedium(81,"GEN Water $",   81, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+//  AliMedium(82,"GEN Cables$",   82, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+//  AliMedium(83,"GEN patch pan$",83, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);  
+//  AliMedium(84,"GEN serv$",     84, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(85,"GEN Inox$",     85, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(86, "GEN Al$",      86, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
 }
 //_____________________________________________________________________________
 void AliITSvPPRcoarseasymm::Init(){
@@ -701,6 +990,8 @@ void AliITSvPPRcoarseasymm::StepManager(){
 //    Called for every step in the ITS, then calls the AliITShit class
 // creator with the information to be recoreded about that hit.
 ////////////////////////////////////////////////////////////////////////
+
+/*
   Int_t         copy, id;
   Float_t       hits[8];
   Int_t         vol[4];
@@ -772,7 +1063,7 @@ void AliITSvPPRcoarseasymm::StepManager(){
 //
 // no hits for this coarse asymmetric version.
 //
-
+*/
 }
 /*
 //____________________________________________________________________________