]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSvPPRcoarsesymm.cxx
Some mother volumes sligthly modified to eliminate an overlap with the absorber
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRcoarsesymm.cxx
index d8e607e2833cc625d389316b0aec937966ad0065..e02f9e53c88a7dcc0f330bf94775266249271c45 100644 (file)
 
 /*
 $Log$
+Revision 1.16  2001/02/09 00:05:31  nilsen
+Added fMajor/MinorVersion variables and made other changes to better make
+use of the new code changes in AliITSgeom related classes.
+
+Revision 1.15  2001/01/30 09:23:13  hristov
+Streamers removed (R.Brun)
+
+Revision 1.14  2001/01/17 07:41:29  barbera
+Some media parameters modified
+
+Revision 1.13  2001/01/15 13:13:52  barbera
+Some comments added
+
+Revision 1.12  2000/12/10 16:00:44  barbera
+Added last definition of special media like end-ladder boxes and cones
+
+Revision 1.11  2000/10/30 08:02:25  barbera
+PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
+
+Revision 1.3.2.7  2000/10/27 17:20:00  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
 
@@ -83,7 +114,7 @@ Introduction of the Copyright and cvs Log
 // strongly encouraged to uses AliITSv5.
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
+#include <iostream.h> 
 #include <TMath.h>
 #include <TRandom.h>
 #include <TVector.h>
@@ -113,16 +144,11 @@ AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm() {
 //    Standard default constructor for the ITS version 7.
 ////////////////////////////////////////////////////////////////////////
 
-  fIdN = 6;
-  fIdName = new TString[fIdN];
-  fIdName[0] = "ITS1";
-  fIdName[1] = "ITS2";
-  fIdName[2] = "ITS3";
-  fIdName[3] = "ITS4";
-  fIdName[4] = "ITS5";
-  fIdName[5] = "ITS6";
-  fIdSens    = new Int_t[fIdN];
-  for (Int_t i=0;i<fIdN;i++) fIdSens[i]=fIdName[i].Length();
+    fIdN = 0;
+    fIdName = 0;
+    fIdSens    = 0;
+    fMajorVersion = 8;
+    fMinorVersion = 0;
 }
 //_____________________________________________________________________________
 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title) : AliITS(name, title){
@@ -130,17 +156,18 @@ AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const char *name, const char *title)
 //    Standard constructor for the ITS version 7.
 ////////////////////////////////////////////////////////////////////////
 
-  fIdN = 6;
-  fIdName = new TString[fIdN];
-  fIdName[0] = "ITS1";
-  fIdName[1] = "ITS2";
-  fIdName[2] = "ITS3";
-  fIdName[3] = "ITS4";
-  fIdName[4] = "ITS5";
-  fIdName[5] = "ITS6";
-  fIdSens    = new Int_t[fIdN];
-  for (Int_t i=0;i<fIdN;i++) fIdSens[i]=fIdName[i].Length();
-
+    fIdN = 6;
+    fIdName = new TString[fIdN];
+    fIdName[0] = "ITS1";
+    fIdName[1] = "ITS2";
+    fIdName[2] = "ITS3";
+    fIdName[3] = "ITS4";
+    fIdName[4] = "ITS5";
+    fIdName[5] = "ITS6";
+    fIdSens    = new Int_t[fIdN];
+    for (Int_t i=0;i<fIdN;i++) fIdSens[i]=0;
+    fMajorVersion = 9;
+    fMinorVersion = 0;
 }
 //____________________________________________________________________________
 AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
@@ -148,7 +175,7 @@ AliITSvPPRcoarsesymm::AliITSvPPRcoarsesymm(const AliITSvPPRcoarsesymm &source){
 //     Copy Constructor for ITS version 7.
 ////////////////////////////////////////////////////////////////////////
     if(&source == this) return;
-    printf("Not allowed to copy AliITSvPPRcoarsesymm\n");
+    Warning("Copy Constructor","Not allowed to copy AliITSvPPRcoarsesymm");
     return;
 }
 //_____________________________________________________________________________
@@ -157,7 +184,7 @@ AliITSvPPRcoarsesymm& AliITSvPPRcoarsesymm::operator=(const AliITSvPPRcoarsesymm
 //    Assignment operator for the ITS version 7.
 ////////////////////////////////////////////////////////////////////////
   if(&source == this) return *this;
-    printf("Not allowed to copy AliITSvPPRcoarsesymm\n");
+    Warning("= operator","Not allowed to copy AliITSvPPRcoarsesymm");
   return *this;
 }
 //_____________________________________________________________________________
@@ -220,15 +247,15 @@ void AliITSvPPRcoarsesymm::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,13.5,15.,7.5,7.5 };    
   //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.,4.,4. };         
 
  
   Float_t dits[3], rlim, zmax;
@@ -271,11 +298,32 @@ void AliITSvPPRcoarsesymm::CreateGeometry(){
   dgh[15] = -77.2;
   dgh[16] = 44.9;
   dgh[17] = 56.1;
-  dgh[18] = -36.;
-  dgh[19] = 3.29;
+  dgh[18] = -40.;
+  dgh[19] = 3.295;
   dgh[20] = 56.1; 
-  dgh[21] = 36.;
-  dgh[22] = 3.29;
+
+/*
+  dgh[21] = -35.;
+  dgh[22] = 3.295;
+  dgh[23] = 56.1;
+
+  dgh[24] = -35.;
+  dgh[25] = 5.;
+  dgh[26] = 56.1;
+
+  dgh[27] = -29.;
+  dgh[28] = 5.;
+  dgh[29] = 56.1;
+  
+  dgh[30] = -29.;
+  dgh[31] = 3.295;
+  dgh[32] = 56.1;
+
+*/
+
+
+  dgh[21] = 40.;
+  dgh[22] = 3.295;
   dgh[23] = 56.1;
   dgh[24] = 77.2;
   dgh[25] = 44.9;
@@ -292,7 +340,6 @@ void AliITSvPPRcoarsesymm::CreateGeometry(){
   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 
@@ -308,16 +355,16 @@ void AliITSvPPRcoarsesymm::CreateGeometry(){
   dgh[1] = 360.;
   dgh[2] = 4.;
   dgh[3] = -77.2;
-  dgh[4] = 45.;
+  dgh[4] = 46.;
   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] = 77.2;
-  dgh[13] = 45.;
+  dgh[13] = 46.;
   dgh[14] = 56.;
   gMC->Gsvolu("ITSD", "PCON", idtmed[275], dgh, 15);
   
@@ -380,102 +427,110 @@ void AliITSvPPRcoarsesymm::CreateGeometry(){
   // END-LADDER ELECTRONICS BOXES AND CABLES FOR SDD
   
   gMC->Gsvolu("IEL2", "TUBE", idtmed[237], dits, 0); 
-  for (i = 2; i < 4; i++) {
-    dits[0] = rl[i];
+  for (i = 2; i < 3; i++) {
+    dits[0] = rl[i]-2.5;
+    dits[1] = dits[0] + drb[i];
+    dits[2] = dzb[i] / 2.;
+    zpos = dzl[i] + dits[2];
+    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);
+  }
+  for (i = 3; i < 4; i++) {
+    dits[0] = rl[i]-1.4;
     dits[1] = dits[0] + drb[i];
     dits[2] = dzb[i] / 2.;
     zpos = dzl[i] + dits[2];
     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];
+  for (i = 4; i < 5; i++) {
+    dits[0] = rl[i]+1.4;
     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);
   }    
+  for (i = 5; i < 6; i++) {
+    dits[0] = rl[i]+0.4235;
+    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[209], pcits, 9);   
-  AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
-  gMC->Gspos("ICO1", 1, "ITSD", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO1", 2, "ITSD", 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[238], pcits, 9);    
-  gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO2", 2, "ITSD", 0., 0., 0., idrotm[200], "ONLY");
+  pcits[0] = (59.-42.5)/2.;
+  pcits[1] = 8.5;
+  pcits[2] = 8.5+0.1;
+  pcits[3] = 28.;
+  pcits[4] = 28.+0.1;  
+  gMC->Gsvolu("ICO1", "CONE", idtmed[238], 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[264], pcits, 9);    
-  gMC->Gspos("ICO3", 1, "ITSD", 0., 0., 0., 0, "ONLY");
-  gMC->Gspos("ICO3", 2, "ITSD", 0., 0., 0., idrotm[200], "ONLY");
+  pcits[0] = (74.-59.)/2.;
+  pcits[1] = 28.;
+  pcits[2] = 28.+0.1;
+  pcits[3] = 47.;
+  pcits[4] = 47.+0.1;
+  gMC->Gsvolu("ICO2", "CONE", idtmed[264], pcits, 5);    
+  gMC->Gspos("ICO2", 1, "ITSD", 0., 0., 59.+pcits[0], 0, "ONLY");
+  gMC->Gspos("ICO2", 2, "ITSD", 0., 0., -(59.+pcits[0]), idrotm[200], "ONLY");
+
 
-  
   // SERVICES
   
   
-  // --- Define cables at the end of the ITS cones - copper part
+  // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
   
-  dgh[0] = 45.;
-  dgh[1] = 45.+1.0;
+  dgh[0] = 46.;
+  dgh[1] = 46.+1.0;
   dgh[2] = 9.5;
   
   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");
   
-  // --- Define cables at the end of the ITS cones - carbon part
+  // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
   
-  dgh[0] = 45.+1.0;
-  dgh[1] = 45.+1.0+1.5;
+  dgh[0] = 46.+1.0;
+  dgh[1] = 46.+1.0+1.5;
   dgh[2] = 9.5;
   
   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[0] = 46.;
   dgh[1] = 56.;
   dgh[2] = 2.25;
   
@@ -483,75 +538,140 @@ void AliITSvPPRcoarsesymm::CreateGeometry(){
   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 below the TPC - copper part
-  
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = 100.7;
-  dgh[4] = 45.2;
-  dgh[5] = 45.2+1.0;    
-  dgh[6] = xltpc;
-  dgh[7] = 61.8;
-  dgh[8] = 61.8+1.0;    
-  gMC->Gsvolu("ICU1", "PCON", idtmed[279], dgh, 9);    
-  gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 0., 0, "ONLY");  
-  gMC->Gspos("ICU1", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY"); 
-  
-  // --- Define cables/cooling below the TPC - carbon part
-  
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = 100.7;
-  dgh[4] = 45.2+1.0;
-  dgh[5] = 45.2+1.0+1.5;    
-  dgh[6] = xltpc;
-  dgh[7] = 61.8+1.0;
-  dgh[8] = 61.8+1.0+1.5;    
-  gMC->Gsvolu("ICC1", "PCON", idtmed[274], dgh, 9);    
-  gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 0., 0, "ONLY");  
-  gMC->Gspos("ICC1", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");   
-  
-  
-  // --- Define cables/cooling behind the TPC - copper part
+  // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 46.2;
+  dgh[2] = 46.2+1.0;
+  dgh[3] = 62.3;
+  dgh[4] = 62.3+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");  
+  gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(100.7+dgh[0]), idrotm[200], "ONLY");   
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 46.2;
+  dgh[2] = 46.2+1.0;
+  dgh[3] = 62.3;
+  dgh[4] = 62.3+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");  
+  gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(100.7+dgh[0]), idrotm[200], "ONLY");     
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 46.2+1.0;
+  dgh[2] = 46.2+1.0+1.5;
+  dgh[3] = 62.3+1.0;
+  dgh[4] = 62.3+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");  
+  gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(100.7+dgh[0]), idrotm[200], "ONLY");   
+  
+  // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
+  
+  dgh[0] = (xltpc-100.7)/2.;
+  dgh[1] = 46.2+1.0;
+  dgh[2] = 46.2+1.0+1.5;
+  dgh[3] = 62.3+1.0;
+  dgh[4] = 62.3+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");  
+  gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(100.7+dgh[0]), idrotm[200], "ONLY");     
+    
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
+    
+  dgh[0] = 62.1;
+  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");  
+  gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(xltpc+1.5+dgh[2]), idrotm[200], "ONLY");      
+  
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
+  
+  dgh[0] = 62.1;
+  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");  
+  gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(xltpc+1.5+dgh[2]), idrotm[200], "ONLY");      
+     
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
+
+  dgh[0] = 62.1;
+  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");  
+  gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(xltpc+dgh[2]), idrotm[200], "ONLY"); 
+    
+  // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
+
+  dgh[0] = 62.1;
+  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");  
+  gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(xltpc+dgh[2]), idrotm[200], "ONLY"); 
+
+  // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
   
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = xltpc+1.5;
-  dgh[4] = 62.5;
-  dgh[5] = 74.5;
-  dgh[6] = xltpc+1.5+1.0;
-  dgh[7] = 62.5;
-  dgh[8] = 74.5;    
-  gMC->Gsvolu("ICU2", "PCON", idtmed[279], dgh, 9);    
-  gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 0., 0, "ONLY");  
-  gMC->Gspos("ICU2", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");   
-  
-  // --- Define cables/cooling behind the TPC - carbon part
+  dgh[0] = 74.5;
+  dgh[1] = 79.5;
+  dgh[2] = 2.5;
+  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");      
   
-  dgh[0] = 0.;
-  dgh[1] = 360.;
-  dgh[2] = 2.;
-  dgh[3] = xltpc;
-  dgh[4] = 62.5;
-  dgh[5] = 74.5;
-  dgh[6] = xltpc+1.5;
-  dgh[7] = 62.5;
-  dgh[8] = 74.5;    
-  gMC->Gsvolu("ICC2", "PCON", idtmed[274], dgh, 9);    
-  gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 0., 0, "ONLY");  
-  gMC->Gspos("ICC2", 2, "ITSV", 0., 0., 0., idrotm[200], "ONLY");     
-    
-  // --- Define hook to the TPC on other side w.r.t. the absorber
+  // --- 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;
-  gMC->Gsvolu("IHOK", "TUBE", idtmed[284], dgh, 3);   
-  gMC->Gspos("IHOK", 1, "ITSV", 0., 0., -xltpc-dgh[2], 0, "ONLY");    
+  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.6;   
+  gMC->Gsvolu("ICYL", "TUBE", idtmed[285], dgh, 3);   
+  gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74., 0, "ONLY");
+  gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74., idrotm[200], "ONLY");     
   
   // --- Outputs the geometry tree in the EUCLID/CAD format 
   
@@ -628,20 +748,21 @@ void AliITSvPPRcoarsesymm::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$",28.0855, 14., 2.33, 9.36, 999); // check !!!!
+  AliMaterial(9, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999); 
+  //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, 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);   
+  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,..)
   
@@ -667,25 +788,27 @@ void AliITSvPPRcoarsesymm::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 !!!!
+  AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); 
+  AliMaterial(39, "SDD cone$", 63.546, 29., 1.15, 1.265, 999);  
+  //AliMaterial(38, "SDD End ladder$", 69.9298, 29.8246, -0.3824, -36.5103, 999); 
+  //AliMaterial(39, "SDD cone$", 63.546, 29., -1.15, -1.265, 999);         
   // ** 
   // check A and Z 
-  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);
-  AliMedium(29, "SDD Air$",     29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(30, "SDD Vacuum$",  30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
-  AliMedium(31, "SDD Al$",      31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(32, "SDD Water $",  32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(33, "SDD Freon$",   33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(34, "SDD PCB$",     34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  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);
+  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);
+  AliMedium(29, "SDD Air$",       29, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(30, "SDD Vacuum$",    30, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
+  AliMedium(31, "SDD Al$",        31, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(32, "SDD Water $",    32, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(33, "SDD Freon$",     33, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(34, "SDD PCB$",       34, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  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,..)
   
@@ -717,25 +840,27 @@ void AliITSvPPRcoarsesymm::CreateMaterials(){
   AliMaterial(62, "SSD Kapton$", 12.011, 6., 1.3, 31.27, 999.);
   // check A and Z 
   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 !!!! 
+  AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); 
+  AliMaterial(65, "SSD cone$",63.546, 29., 1.15, 1.265, 999);   
+  //AliMaterial(64, "SSD End ladder$", 32.0988, 15.4021, -0.68, -35.3238, 999); 
+  //AliMaterial(65, "SSD cone$",63.546, 29., -1.15, -1.265, 999);     
   // ** 
-  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);
-  AliMedium(54, "SSD Air$",     54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(55, "SSD Vacuum$",  55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
-  AliMedium(56, "SSD Al$",      56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(57, "SSD Water $",  57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(58, "SSD Freon$",   58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(59, "SSD PCB$",     59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  AliMedium(60, "SSD Copper$",  60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  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);
+  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);
+  AliMedium(54, "SSD Air$",       54, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(55, "SSD Vacuum$",    55, 0,isxfld,sxmgmx, 10.,1.00, .1, .100,10.00);
+  AliMedium(56, "SSD Al$",        56, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(57, "SSD Water $",    57, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(58, "SSD Freon$",     58, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(59, "SSD PCB$",       59, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(60, "SSD Copper$",    60, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  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, "SSD End ladder$",64, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
+  AliMedium(65, "SSD cone$",      65, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
   
   //     275-299 --> General (end-caps, frames, cooling, cables, etc.) 
   
@@ -776,11 +901,17 @@ void AliITSvPPRcoarsesymm::Init(){
 ////////////////////////////////////////////////////////////////////////
 //     Initialise the ITS after it has been created.
 ////////////////////////////////////////////////////////////////////////
+    Int_t i;
 
-    //
+    cout << endl;
+    for(i=0;i<25;i++) cout << "*";cout << " ITSvPPRcoarsesymm_Init ";
+    for(i=0;i<25;i++) cout << "*";cout << endl;
+//
     AliITS::Init();
-    fMajorVersion = 1;
-    fMinorVersion = 0;
+//
+    for(i=0;i<72;i++) cout << "*";
+    cout << endl;
+
 }  
  
 //_____________________________________________________________________________
@@ -913,21 +1044,3 @@ void AliITSvPPRcoarsesymm::StepManager(){
 //
 */
 }
-/*
-//____________________________________________________________________________
-void AliITSvPPRcoarsesymm::Streamer(TBuffer &R__b){
-////////////////////////////////////////////////////////////////////////
-//    A dummy Streamer function for this class AliITSvPPRcoarsesymm. By default it
-// only streams the AliITS class as it is required. Since this class
-// dosen't contain any "real" data to be saved, it doesn't.
-////////////////////////////////////////////////////////////////////////
-
-   if (R__b.IsReading()) {
-      Version_t R__v = R__b.ReadVersion(); if (R__v) { }
-      AliITS::Streamer(R__b);
-   } else {
-      R__b.WriteVersion(AliITSvPPRcoarsesymm::IsA());
-      AliITS::Streamer(R__b);
-   } // end if R__b.IsReading()
-}
-*/