]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/UPGRADE/AliITSUv1Layer.cxx
Print also cluster pattern in readClusters
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUv1Layer.cxx
index a4ed8fc82ee4fce1f3ec2dea61d988d6a1647b91..1cf9990117b2119d570eeabfeb45326c9a7de805 100644 (file)
 #include <TGeoTrd1.h>
 using namespace TMath;
 
-const Double_t AliITSUv1Layer::fgkDefaultSensorThick = 300*fgkmicron;
-const Double_t AliITSUv1Layer::fgkDefaultLadderThick =   1*fgkcm;
-
-const Double_t AliITSUv1Layer::fgkOBHalfStaveWidth   =   3.01 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBModuleGap        =   0.01 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBFlexCable1Thick  =   0.005*fgkcm;
-const Double_t AliITSUv1Layer::fgkOBFlexCable2Thick  =   0.01 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBBusCable1Thick   =   0.02 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBBusCable2Thick   =   0.02 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBColdPlateThick   =   0.012*fgkcm;
-const Double_t AliITSUv1Layer::fgkOBCarbonPlateThick =   0.012*fgkcm;
-const Double_t AliITSUv1Layer::fgkOBGlueThick        =   0.03 *fgkcm;
-const Double_t AliITSUv1Layer::fgkOBModuleZLength    =  21.06 *fgkcm;
+// General Parameters
+const Int_t    AliITSUv1Layer::fgkNumberOfInnerLayers =   3;
+
+const Double_t AliITSUv1Layer::fgkDefaultSensorThick  = 300*fgkmicron;
+const Double_t AliITSUv1Layer::fgkDefaultStaveThick   =   1*fgkcm;
+
+// Inner Barrel Parameters
+const Int_t    AliITSUv1Layer::fgkIBChipsPerRow       =   9;
+const Int_t    AliITSUv1Layer::fgkIBNChipRows         =   1;
+
+// Outer Barrel Parameters
+const Int_t    AliITSUv1Layer::fgkOBChipsPerRow       =   7;
+const Int_t    AliITSUv1Layer::fgkOBNChipRows         =   2;
+
+const Double_t AliITSUv1Layer::fgkOBHalfStaveWidth    =   3.01 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBModuleWidth       = fgkOBHalfStaveWidth;
+const Double_t AliITSUv1Layer::fgkOBModuleGap         =   0.01 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBChipXGap          =   0.01 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBChipZGap          =   0.01 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBFlexCableAlThick  =   0.005*fgkcm;
+const Double_t AliITSUv1Layer::fgkOBFlexCableKapThick =   0.01 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBBusCableAlThick   =   0.02 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBBusCableKapThick  =   0.02 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBColdPlateThick    =   0.012*fgkcm;
+const Double_t AliITSUv1Layer::fgkOBCarbonPlateThick  =   0.012*fgkcm;
+const Double_t AliITSUv1Layer::fgkOBGlueThick         =   0.03 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBModuleZLength     =  21.06 *fgkcm;
+const Double_t AliITSUv1Layer::fgkOBHalfStaveYTrans   =   1.76 *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBHalfStaveXOverlap =   2.3  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBGraphiteFoilThick =  30.0  *fgkmicron;
+const Double_t AliITSUv1Layer::fgkOBCoolTubeInnerD    =   2.67 *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBCoolTubeThick     =  64.0  *fgkmicron;
+const Double_t AliITSUv1Layer::fgkOBCoolTubeXDist     =  11.1  *fgkmm;
+
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameWidth   =  42.0  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameTotHigh =  43.1  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSFrameBeamRadius  =   0.6  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameLa      =   3.0  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameHa      =   0.721979*fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameLb      =   3.7  *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameHb      =   0.890428*fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSpaceFrameL       =   0.25 *fgkmm;
+const Double_t AliITSUv1Layer::fgkOBSFBotBeamAngle    =  56.5;
+const Double_t AliITSUv1Layer::fgkOBSFrameBeamSidePhi =  65.0;
 
 
 ClassImp(AliITSUv1Layer)
@@ -71,18 +102,20 @@ AliITSUv1Layer::AliITSUv1Layer():
   fLayRadius(0),
   fZLength(0),
   fSensorThick(0),
-  fLadderThick(0),
-  fLadderWidth(0),
-  fLadderTilt(0),
-  fNLadders(0),
+  fStaveThick(0),
+  fStaveWidth(0),
+  fStaveTilt(0),
+  fNStaves(0),
   fNModules(0),
-  fDetTypeID(0),
+  fNChips(0),
+  fChipTypeID(0),
   fIsTurbo(0),
   fBuildLevel(0),
   fStaveModel(AliITSUv1::kIBModelDummy)
 {
   //
   // Standard constructor
+  for (int i=kNHLevels;i--;) fHierarchy[i] = 0;
   //
 }
 
@@ -94,18 +127,20 @@ AliITSUv1Layer::AliITSUv1Layer(Int_t debug):
   fLayRadius(0),
   fZLength(0),
   fSensorThick(0),
-  fLadderThick(0),
-  fLadderWidth(0),
-  fLadderTilt(0),
-  fNLadders(0),
+  fStaveThick(0),
+  fStaveWidth(0),
+  fStaveTilt(0),
+  fNStaves(0),
   fNModules(0),
-  fDetTypeID(0),
+  fNChips(0),
+  fChipTypeID(0),
   fIsTurbo(0),
   fBuildLevel(0),
   fStaveModel(AliITSUv1::kIBModelDummy)
 {
   //
   // Constructor setting debugging level
+  for (int i=kNHLevels;i--;) fHierarchy[i] = 0;
   //
 }
 
@@ -117,18 +152,20 @@ AliITSUv1Layer::AliITSUv1Layer(Int_t lay, Int_t debug):
   fLayRadius(0),
   fZLength(0),
   fSensorThick(0),
-  fLadderThick(0),
-  fLadderWidth(0),
-  fLadderTilt(0),
-  fNLadders(0),
+  fStaveThick(0),
+  fStaveWidth(0),
+  fStaveTilt(0),
+  fNStaves(0),
   fNModules(0),
-  fDetTypeID(0),
+  fNChips(0),
+  fChipTypeID(0),
   fIsTurbo(0),
   fBuildLevel(0),
   fStaveModel(AliITSUv1::kIBModelDummy)
 {
   //
   // Constructor setting layer number and debugging level
+  for (int i=kNHLevels;i--;) fHierarchy[i] = 0;
   //
 }
 
@@ -140,19 +177,21 @@ AliITSUv1Layer::AliITSUv1Layer(Int_t lay, Bool_t turbo, Int_t debug):
   fLayRadius(0),
   fZLength(0),
   fSensorThick(0),
-  fLadderThick(0),
-  fLadderWidth(0),
-  fLadderTilt(0),
-  fNLadders(0),
+  fStaveThick(0),
+  fStaveWidth(0),
+  fStaveTilt(0),
+  fNStaves(0),
   fNModules(0),
-  fDetTypeID(0),
+  fNChips(0),
+  fChipTypeID(0),
   fIsTurbo(turbo),
   fBuildLevel(0),
   fStaveModel(AliITSUv1::kIBModelDummy)
 {
   //
   // Constructor setting layer number and debugging level
-  // for a "turbo" layer (i.e. where ladders overlap in phi)
+  // for a "turbo" layer (i.e. where staves overlap in phi)
+  for (int i=kNHLevels;i--;) fHierarchy[i] = 0;
   //
 }
 
@@ -164,18 +203,20 @@ AliITSUv1Layer::AliITSUv1Layer(const AliITSUv1Layer &s):
   fLayRadius(s.fLayRadius),
   fZLength(s.fZLength),
   fSensorThick(s.fSensorThick),
-  fLadderThick(s.fLadderThick),
-  fLadderWidth(s.fLadderWidth),
-  fLadderTilt(s.fLadderTilt),
-  fNLadders(s.fNLadders),
+  fStaveThick(s.fStaveThick),
+  fStaveWidth(s.fStaveWidth),
+  fStaveTilt(s.fStaveTilt),
+  fNStaves(s.fNStaves),
   fNModules(s.fNModules),
-  fDetTypeID(s.fDetTypeID),
+  fNChips(s.fNChips),
+  fChipTypeID(s.fChipTypeID),
   fIsTurbo(s.fIsTurbo),
   fBuildLevel(s.fBuildLevel),
   fStaveModel(s.fStaveModel)
 {
   //
   // Copy constructor
+  for (int i=kNHLevels;i--;) fHierarchy[i] = s.fHierarchy[i];
   //
 }
 
@@ -192,16 +233,18 @@ AliITSUv1Layer& AliITSUv1Layer::operator=(const AliITSUv1Layer &s)
   fLayRadius   = s.fLayRadius;
   fZLength     = s.fZLength;
   fSensorThick = s.fSensorThick;
-  fLadderThick = s.fLadderThick;
-  fLadderWidth = s.fLadderWidth;
-  fLadderTilt  = s.fLadderTilt;
-  fNLadders    = s.fNLadders;
+  fStaveThick  = s.fStaveThick;
+  fStaveWidth  = s.fStaveWidth;
+  fStaveTilt   = s.fStaveTilt;
+  fNStaves     = s.fNStaves;
   fNModules    = s.fNModules;
+  fNChips      = s.fNChips;
   fIsTurbo     = s.fIsTurbo;
-  fDetTypeID   = s.fDetTypeID;
+  fChipTypeID  = s.fChipTypeID;
   fBuildLevel  = s.fBuildLevel;
   fStaveModel  = s.fStaveModel;
-
+  for (int i=kNHLevels;i--;) fHierarchy[i] = s.fHierarchy[i];
+  //
   return *this;
 }
 
@@ -235,15 +278,18 @@ void AliITSUv1Layer::CreateLayer(TGeoVolume *moth){
 
 
   // Check if the user set the proper parameters
-  if (fLayRadius <= 0) AliFatal(Form("Wrong layer radius (%f)",fLayRadius));
-  if (fZLength   <= 0) AliFatal(Form("Wrong layer length (%f)",fZLength));
-  if (fNLadders  <= 0) AliFatal(Form("Wrong number of ladders (%d)",fNLadders));
-  if (fNModules  <= 0) AliFatal(Form("Wrong number of modules (%d)",fNModules));
-
-  if (fLadderThick <= 0) {
-    AliInfo(Form("Ladder thickness wrong or not set (%f), using default (%f)",
-                fLadderThick,fgkDefaultLadderThick));
-    fLadderThick = fgkDefaultLadderThick;
+  if (fLayRadius<= 0) AliFatal(Form("Wrong layer radius (%f)",fLayRadius));
+  if (fZLength  <= 0) AliFatal(Form("Wrong layer length (%f)",fZLength));
+  if (fNStaves  <= 0) AliFatal(Form("Wrong number of staves (%d)",fNStaves));
+  if (fNChips   <= 0) AliFatal(Form("Wrong number of chips (%d)",fNChips));
+
+  if (fLayerNumber >= fgkNumberOfInnerLayers && fNModules <= 0)
+    AliFatal(Form("Wrong number of modules (%d)",fNModules));
+
+  if (fStaveThick <= 0) {
+    AliInfo(Form("Stave thickness wrong or not set (%f), using default (%f)",
+                fStaveThick,fgkDefaultStaveThick));
+    fStaveThick = fgkDefaultStaveThick;
   }
 
   if (fSensorThick <= 0) {
@@ -252,10 +298,10 @@ void AliITSUv1Layer::CreateLayer(TGeoVolume *moth){
     fSensorThick = fgkDefaultSensorThick;
   }
 
-  if (fSensorThick > fLadderThick) {
-    AliWarning(Form("Sensor thickness (%f) is greater than ladder thickness (%f), fixing",
-                fSensorThick,fLadderThick));
-    fSensorThick = fLadderThick;
+  if (fSensorThick > fStaveThick) {
+    AliWarning(Form("Sensor thickness (%f) is greater than stave thickness (%f), fixing",
+                fSensorThick,fStaveThick));
+    fSensorThick = fStaveThick;
   }
 
 
@@ -266,32 +312,32 @@ void AliITSUv1Layer::CreateLayer(TGeoVolume *moth){
   }
 
 
-  // First create the ladder container
-  alpha = (360./(2*fNLadders))*DegToRad();
+  // First create the stave container
+  alpha = (360./(2*fNStaves))*DegToRad();
 
-  //  fLadderWidth = fLayRadius*Tan(alpha);
+  //  fStaveWidth = fLayRadius*Tan(alpha);
 
   snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSLayerPattern(),fLayerNumber);
   TGeoVolume *layVol = new TGeoVolumeAssembly(volname);
-  layVol->SetUniqueID(fDetTypeID);
+  layVol->SetUniqueID(fChipTypeID);
 
 //  layVol->SetVisibility(kFALSE);
   layVol->SetVisibility(kTRUE);
   layVol->SetLineColor(1);
 
-  TGeoVolume *laddVol = CreateLadder();
+  TGeoVolume *stavVol = CreateStave();
 
 
   // Now build up the layer
-  alpha = 360./fNLadders;
-  Double_t r = fLayRadius + ((TGeoBBox*)laddVol->GetShape())->GetDY();
-  for (Int_t j=0; j<fNLadders; j++) {
+  alpha = 360./fNStaves;
+  Double_t r = fLayRadius + ((TGeoBBox*)stavVol->GetShape())->GetDY() + 0.2;
+  for (Int_t j=0; j<fNStaves; j++) {
     Double_t phi = j*alpha + fPhi0;
     xpos = r*CosD(phi);// r*SinD(-phi);
     ypos = r*SinD(phi);// r*CosD(-phi);
     zpos = 0.;
     phi += 90;
-    layVol->AddNode(laddVol, j, new TGeoCombiTrans( xpos, ypos, zpos,
+    layVol->AddNode(stavVol, j, new TGeoCombiTrans( xpos, ypos, zpos,
                                                    new TGeoRotation("",phi,0,0)));
   }
 
@@ -308,7 +354,7 @@ void AliITSUv1Layer::CreateLayer(TGeoVolume *moth){
 void AliITSUv1Layer::CreateLayerTurbo(TGeoVolume *moth){
 //
 // Creates the actual Layer and places inside its mother volume
-// A so-called "turbo" layer is a layer where ladders overlap in phi
+// A so-called "turbo" layer is a layer where staves overlap in phi
 // User can set width and tilt angle, no check is performed here
 // to avoid volume overlaps
 //
@@ -332,31 +378,31 @@ void AliITSUv1Layer::CreateLayerTurbo(TGeoVolume *moth){
 
 
   // Check if the user set the proper (remaining) parameters
-  if (fLadderWidth <= 0)
-    AliFatal(Form("Wrong ladder width (%f)",fLadderWidth));
-  if (Abs(fLadderTilt) > 45)
-    AliWarning(Form("Ladder tilt angle (%f) greater than 45deg",fLadderTilt));
+  if (fStaveWidth <= 0)
+    AliFatal(Form("Wrong stave width (%f)",fStaveWidth));
+  if (Abs(fStaveTilt) > 45)
+    AliWarning(Form("Stave tilt angle (%f) greater than 45deg",fStaveTilt));
 
 
   snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSLayerPattern(), fLayerNumber);
   TGeoVolume *layVol = new TGeoVolumeAssembly(volname);
-  layVol->SetUniqueID(fDetTypeID);
+  layVol->SetUniqueID(fChipTypeID);
   layVol->SetVisibility(kTRUE);
   layVol->SetLineColor(1);
-  TGeoVolume *laddVol = CreateLadder();
+  TGeoVolume *stavVol = CreateStave();
 
 
   // Now build up the layer
-  alpha = 360./fNLadders;
-  Double_t r = fLayRadius /* +module thick ?! */;
-  for (Int_t j=0; j<fNLadders; j++) {
+  alpha = 360./fNStaves;
+  Double_t r = fLayRadius /* +chip thick ?! */;
+  for (Int_t j=0; j<fNStaves; j++) {
     Double_t phi = j*alpha + fPhi0;
     xpos = r*CosD(phi);// r*SinD(-phi);
     ypos = r*SinD(phi);// r*CosD(-phi);
     zpos = 0.;
     phi += 90;
-    layVol->AddNode(laddVol, j, new TGeoCombiTrans( xpos, ypos, zpos,
-                                                   new TGeoRotation("", phi-fLadderTilt,0,0)));
+    layVol->AddNode(stavVol, j, new TGeoCombiTrans( xpos, ypos, zpos,
+                                                   new TGeoRotation("", phi-fStaveTilt,0,0)));
   }
 
 
@@ -367,9 +413,9 @@ void AliITSUv1Layer::CreateLayerTurbo(TGeoVolume *moth){
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateLadder(const TGeoManager * /*mgr*/){
+TGeoVolume* AliITSUv1Layer::CreateStave(const TGeoManager * /*mgr*/){
 //
-// Creates the actual Ladder
+// Creates the actual Stave
 //
 // Input:
 //         mgr  : the GeoManager (used only to get the proper material)
@@ -383,97 +429,187 @@ TGeoVolume* AliITSUv1Layer::CreateLadder(const TGeoManager * /*mgr*/){
 //
 
   char volname[30];
-  Double_t xLenO = 5.79/2;
  
-  Double_t xlenI, ylen, zlen;
-  Double_t xpos, ypos, zpos, zmod;
+  Double_t xlen, ylen, zlen;
+  Double_t xpos, ypos;
   Double_t alpha;
 
 
   // First create all needed shapes
-  alpha = (360./(2*fNLadders))*DegToRad();
+  alpha = (360./(2*fNStaves))*DegToRad();
 
-  // The ladder
-  xlenI = fLayRadius*Tan(alpha);
-  if (fIsTurbo) xlenI = 0.5*fLadderWidth;
-  ylen = 0.5*fLadderThick;
+  // The stave
+  xlen = fLayRadius*Tan(alpha);
+  if (fIsTurbo) xlen = 0.5*fStaveWidth;
+  ylen = 0.5*fStaveThick;
   zlen = 0.5*fZLength;
 
   Double_t yplus = 0.46;
-  TGeoXtru *ladder = new TGeoXtru(2); //z sections
-  Double_t xv[5] = {xlenI,xlenI,0,-xlenI,-xlenI};
+  TGeoXtru *stave = new TGeoXtru(2); //z sections
+  Double_t xv[5] = {xlen,xlen,0,-xlen,-xlen};
   Double_t yv[5] = {ylen+0.09,-0.15,-yplus-fSensorThick,-0.15,ylen+0.09};    
-  ladder->DefinePolygon(5,xv,yv);
-  ladder->DefineSection(0,-zlen,0,0,1.);
-  ladder->DefineSection(1,+zlen,0,0,1.);
+  stave->DefinePolygon(5,xv,yv);
+  stave->DefineSection(0,-zlen,0,0,1.);
+  stave->DefineSection(1,+zlen,0,0,1.);
 
   // We have all shapes: now create the real volumes
 
-  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
-//  TGeoVolume *laddVol = new TGeoVolume(volname, ladder, medAir);
-  TGeoVolume *laddVol = new TGeoVolumeAssembly(volname);
-
-  //  laddVol->SetVisibility(kFALSE);
-  laddVol->SetVisibility(kTRUE);
-  laddVol->SetLineColor(2);
-  TGeoVolume *modVol = 0;
-  TGeoVolume *mechLaddVol = 0;
-
-  // Now build up the ladder
-  if (fLayerNumber<3) {
-    modVol = CreateModuleInnerB(xlenI,ylen,zlen);
-    zmod = ((TGeoBBox*)modVol->GetShape())->GetDZ();
-    for (Int_t j=0; j<fNModules; j++) {
-      xpos = 0.;
-      ypos = 0.021;  // Remove small overlap - M.S: 21may13
-      zpos = -ladder->GetDZ() + j*2*zmod + zmod;
-      laddVol->AddNode(modVol, j, new TGeoTranslation(xpos, ypos, zpos));
-    }
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
+//  TGeoVolume *staveVol = new TGeoVolume(volname, stave, medAir);
+  TGeoVolume *staveVol = new TGeoVolumeAssembly(volname);
+
+  //  staveVol->SetVisibility(kFALSE);
+  staveVol->SetVisibility(kTRUE);
+  staveVol->SetLineColor(2);
+  TGeoVolume *mechStaveVol = 0;
+
+  // Now build up the stave
+  if (fLayerNumber < fgkNumberOfInnerLayers) {
+    TGeoVolume *modVol = CreateStaveInnerB(xlen,ylen,zlen);
+    staveVol->AddNode(modVol, 0);
+    fHierarchy[kHalfStave] = 1;
  
-  // put mechanical stave structure, only inner barrel up to now
-    mechLaddVol = CreateStaveStructInnerB(xlenI,zlen); 
-    if (mechLaddVol)
-      laddVol->AddNode(mechLaddVol, fNModules, new TGeoCombiTrans(0, -0.15-ylen, 0, new TGeoRotation("",0, 0, 180)));
+  // Mechanical stave structure
+    mechStaveVol = CreateStaveStructInnerB(xlen,zlen); 
+    if (mechStaveVol) {
+      ypos = ((TGeoBBox*)(modVol->GetShape()))->GetDY() +
+             ((TGeoBBox*)(mechStaveVol->GetShape()))->GetDY();
+      staveVol->AddNode(mechStaveVol, 1, new TGeoCombiTrans(0, -ypos, 0, new TGeoRotation("",0, 0, 180)));
+    }
   }
 
   else{
+    TGeoVolume *hstaveVol = CreateStaveOuterB();
     if (fStaveModel == AliITSUv1::kOBModel0) { // Create simplified stave struct as in v0
-      modVol = CreateModuleInnerB(xlenI,ylen,zlen);
-  printf("?????? %f %f %f\n",xlenI,ylen,zlen);
-      zmod = ((TGeoBBox*)modVol->GetShape())->GetDZ();
-      for (Int_t j=0; j<fNModules; j++) {
-       xpos = 0.;
-       ypos = 0.021;  // Remove small overlap - M.S: 21may13
-       zpos = -ladder->GetDZ() + j*2*zmod + zmod;
-       laddVol->AddNode(modVol, j, new TGeoTranslation(xpos, ypos, zpos));
-      }
+      staveVol->AddNode(hstaveVol, 0);
+      fHierarchy[kHalfStave] = 1;
     } else { // (if fStaveModel) Create new stave struct as in TDR
-      modVol = CreateStaveOuterB(xLenO);
-      laddVol->AddNode(modVol, 1, new TGeoTranslation(0, 2.5, 0));
-
-      mechLaddVol = CreateSpaceFrameOuterB(xLenO); 
-      if (mechLaddVol)
-       laddVol->AddNode(mechLaddVol, 1,
-                        new TGeoCombiTrans(0, 0, 0,
-                                           new TGeoRotation("", 180, 0, 0)));
+      xpos = ((TGeoBBox*)(hstaveVol->GetShape()))->GetDX()
+          - fgkOBHalfStaveXOverlap/2;
+      ypos = 2*((TGeoBBox*)(hstaveVol->GetShape()))->GetDY()
+          + fgkOBSpaceFrameTotHigh/2;
+      staveVol->AddNode(hstaveVol, 0, new TGeoTranslation(-xpos, ypos, 0));
+      staveVol->AddNode(hstaveVol, 1, new TGeoTranslation( xpos, ypos+fgkOBHalfStaveYTrans, 0));
+      fHierarchy[kHalfStave] = 2; // RS 
+      mechStaveVol = CreateSpaceFrameOuterB();
+      if (mechStaveVol)
+       staveVol->AddNode(mechStaveVol, 1,
+                         new TGeoCombiTrans(0, 0, 0,
+                                            new TGeoRotation("", 180, 0, 0)));
     } // if (fStaveModel)
   }
   
 
-  // Done, return the ladder
-  return laddVol;
+  // Done, return the stave
+  return staveVol;
+}
+
+//________________________________________________________________________
+TGeoVolume* AliITSUv1Layer::CreateStaveInnerB(const Double_t xsta,
+                                             const Double_t ysta,
+                                             const Double_t zsta,
+                                             const TGeoManager *mgr){
+//
+// Create the chip stave for the Inner Barrel
+// (Here we fake the halfstave volume to have the same
+// formal geometry hierarchy as for the Outer Barrel)
+//
+// Input:
+//         xsta, ysta, zsta : X, Y, Z stave half lengths
+//         mgr  : the GeoManager (used only to get the proper material)
+//
+// Output:
+//
+// Return:
+//
+// Created:      06 Mar 2014  Mario Sitta
+//
+
+  // Local variables
+  Double_t xmod, ymod, zmod;
+  char volname[30];
+
+  // First we create the module (i.e. the HIC with 9 chips)
+  TGeoVolume *moduleVol = CreateModuleInnerB(xsta, ysta, zsta);
+
+  // Then we create the fake halfstave and the actual stave
+  xmod = ((TGeoBBox*)(moduleVol->GetShape()))->GetDX();
+  ymod = ((TGeoBBox*)(moduleVol->GetShape()))->GetDY();
+  zmod = ((TGeoBBox*)(moduleVol->GetShape()))->GetDZ();
+
+  TGeoBBox *hstave = new TGeoBBox(xmod, ymod, zmod);
+
+  TGeoMedium *medAir = mgr->GetMedium("ITS_AIR$");
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSHalfStavePattern(), fLayerNumber);
+  TGeoVolume *hstaveVol  = new TGeoVolume(volname, hstave, medAir);
+
+
+  // Finally build it up
+  hstaveVol->AddNode(moduleVol, 0);
+  fHierarchy[kModule] = 1;
+
+  // Done, return the stave structure
+  return hstaveVol;
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveStructInnerB(const Double_t xlad,
-                                                   const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateModuleInnerB(Double_t xmod,
+                                              Double_t ymod,
+                                              Double_t zmod,
+                                              const TGeoManager *mgr){
+//
+// Creates the IB Module: (only the chips for the time being)
+//
+// Input:
+//         xmod, ymod, zmod : X, Y, Z module half lengths
+//         mgr  : the GeoManager (used only to get the proper material)
+//
+// Output:
+//
+// Return:
+//         the module as a TGeoVolume
+//
+// Created:      06 Mar 2014  M. Sitta
+//
+
+  Double_t zchip;
+  Double_t zpos;
+  char volname[30];
+
+  // First create the single chip
+  zchip = zmod/fgkIBChipsPerRow;
+  TGeoVolume *chipVol = CreateChipInnerB(xmod, ymod, zchip);
+
+  // Then create the module and populate it with the chips
+  TGeoBBox *module = new TGeoBBox(xmod, ymod, zmod);
+
+  TGeoMedium *medAir = mgr->GetMedium("ITS_AIR$");
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSModulePattern(), fLayerNumber);
+  TGeoVolume *modVol = new TGeoVolume(volname, module, medAir);
+
+  // mm (not used)  zlen = ((TGeoBBox*)chipVol->GetShape())->GetDZ();
+  for (Int_t j=0; j<fgkIBChipsPerRow; j++) {
+    zpos = -zmod + j*2*zchip + zchip;
+    modVol->AddNode(chipVol, j, new TGeoTranslation(0, 0, zpos));
+    fHierarchy[kChip]++;
+  }
+
+  // Done, return the module
+  return modVol;
+}
+
+//________________________________________________________________________
+TGeoVolume* AliITSUv1Layer::CreateStaveStructInnerB(const Double_t xsta,
+                                                   const Double_t zsta,
                                                    const TGeoManager *mgr){
 //
 // Create the mechanical stave structure
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -484,33 +620,33 @@ TGeoVolume* AliITSUv1Layer::CreateStaveStructInnerB(const Double_t xlad,
 // Updated:      26 Apr 2013  Mario Sitta
 //
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   switch (fStaveModel) {
     case AliITSUv1::kIBModelDummy:
-      mechLaddVol = CreateStaveModelInnerBDummy(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerBDummy(xsta,zsta,mgr);
       break;
     case AliITSUv1::kIBModel0:
-      mechLaddVol = CreateStaveModelInnerB0(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerB0(xsta,zsta,mgr);
       break;
     case AliITSUv1::kIBModel1:
-      mechLaddVol = CreateStaveModelInnerB1(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerB1(xsta,zsta,mgr);
       break;
     case AliITSUv1::kIBModel21:
-      mechLaddVol = CreateStaveModelInnerB21(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerB21(xsta,zsta,mgr);
       break;
     case AliITSUv1::kIBModel22:
-      mechLaddVol = CreateStaveModelInnerB22(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerB22(xsta,zsta,mgr);
       break;
     case AliITSUv1::kIBModel3:
-      mechLaddVol = CreateStaveModelInnerB3(xlad,zlad,mgr);
+      mechStavVol = CreateStaveModelInnerB3(xsta,zsta,mgr);
       break;
     default:
       AliFatal(Form("Unknown stave model %d",fStaveModel));
       break;
   }
 
-  return mechLaddVol; 
+  return mechStavVol; 
 }
 
 
@@ -522,8 +658,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerBDummy(const Double_t ,
 // Create dummy stave
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -539,15 +675,15 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerBDummy(const Double_t ,
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
-                                                   const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xsta,
+                                                   const Double_t zsta,
                                                    const TGeoManager *mgr){
 //
 // Create the mechanical stave structure for Model 0 of TDR
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -570,8 +706,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
   // Local parameters
   Double_t kConeOutRadius = 0.15/2;
   Double_t kConeInRadius = 0.1430/2;
-  Double_t kStaveLength = zlad*2;
-  Double_t kStaveWidth = xlad*2-kConeOutRadius*2;
+  Double_t kStaveLength = zsta*2;
+  Double_t kStaveWidth = xsta*2-kConeOutRadius*2;
   Double_t kWidth = kStaveWidth/4;//1/2 of kWidth
   Double_t kStaveHeight = 0.3;
   Double_t kHeight = kStaveHeight/2;
@@ -589,11 +725,11 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
   AliDebug(1, Form("BuildLevel %d\n",fBuildLevel));
 
   char volname[30];
-  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
+  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
 
   Double_t z=0, y=-0.011+0.0150, x=0;
 
-   TGeoVolume *mechLaddVol = 0;
+   TGeoVolume *mechStavVol = 0;
 
   if (fBuildLevel < 5) {
 
@@ -605,10 +741,10 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     mechStruct->DefineSection(0,-kStaveLength-0.1,0,0,1.);
     mechStruct->DefineSection(1,kStaveLength+0.1,0,0,1.);
 
-    mechLaddVol = new TGeoVolume(volname, mechStruct, medAir);
-    mechLaddVol->SetLineColor(12);
-    mechLaddVol->SetFillColor(12); 
-    mechLaddVol->SetVisibility(kTRUE);
+    mechStavVol = new TGeoVolume(volname, mechStruct, medAir);
+    mechStavVol->SetLineColor(12);
+    mechStavVol->SetFillColor(12); 
+    mechStavVol->SetVisibility(kTRUE);
       
     // detailed structure ++++++++++++++
     //Pipe Kapton grey-35
@@ -616,8 +752,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     TGeoVolume *volCoolTube= new TGeoVolume("pipe", coolTube, medKapton);
     volCoolTube->SetFillColor(35);
     volCoolTube->SetLineColor(35);
-    mechLaddVol->AddNode(volCoolTube,0,new TGeoTranslation(x+(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
-    mechLaddVol->AddNode(volCoolTube,1,new TGeoTranslation(x-(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
+    mechStavVol->AddNode(volCoolTube,0,new TGeoTranslation(x+(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
+    mechStavVol->AddNode(volCoolTube,1,new TGeoTranslation(x-(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
   }
 
   if (fBuildLevel < 4) {
@@ -625,8 +761,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     TGeoVolume *volCoolTubeW= new TGeoVolume("pipeWater", coolTubeW, medWater);
     volCoolTubeW->SetFillColor(4);
     volCoolTubeW->SetLineColor(4);
-    mechLaddVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x+(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
-    mechLaddVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x-(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
+    mechStavVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x+(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
+    mechStavVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x-(kStaveWidth/2),y-(kHeight-kConeOutRadius),0));
   }
 
   //frequency of filament
@@ -642,16 +778,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     volT2->SetFillColor(12); 
 
     for(int i=1;i<loop;i++){  //i<60;i++){
-      mechLaddVol->AddNode(volT2,4*i+0,
+      mechStavVol->AddNode(volT2,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y+(2*kConeOutRadius),z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2,//z-14.25+(i*2*kL1),
                                                     new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+1,
+      mechStavVol->AddNode(volT2,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y+(2*kConeOutRadius),z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2,//z-14.25+(i*2*kL1),
                                                     new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+2,
+      mechStavVol->AddNode(volT2,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y+(2*kConeOutRadius),z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2,//z-14.25+(i*2*kL1),
                                                     new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+3,
+      mechStavVol->AddNode(volT2,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y+(2*kConeOutRadius),z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2,//z-14.25+(i*2*kL1),  
                                                     new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
     }
@@ -664,16 +800,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     volT1->SetFillColor(12); 
 
     for(int i=1;i<loop;i++){
-      mechLaddVol->AddNode(volT1,4*i+0,
+      mechStavVol->AddNode(volT1,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight,z-kStaveLength/2+((4/n)*kL1*i)+kS1/2, //z-14.25+(i*2*kL1),  
                                                     new TGeoRotation("volT1",-90,kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+1,
+      mechStavVol->AddNode(volT1,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight,z-kStaveLength/2+((4/n)*kL1*i)+kS1/2,  //z-14.25+(i*2*kL1), 
                                                     new TGeoRotation("volT1",90,kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+2,
+      mechStavVol->AddNode(volT1,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight,z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2, //z-14.25+(i*2*kL1), 
                                                     new TGeoRotation("volT1",-90,-kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+3,
+      mechStavVol->AddNode(volT1,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight,z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2, //z-14.25+(i*2*kL1), 
                                                     new TGeoRotation("volT1",-90,+kAlpha,0)));
     }
@@ -687,52 +823,52 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB0(const Double_t xlad,
     volTG->SetFillColor(5); 
 
     for(int i=1;i<loop;i++){ //i<60;i++){
-      mechLaddVol->AddNode(volTG,4*i+0,
+      mechStavVol->AddNode(volTG,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y-0.16,z-kStaveLength/2+((4/n)*kL1*i)+kS1/2, //z-14.25+(2*kL1*i), 
                                                     new TGeoRotation("volTG",-90,kAlpha,0)));
-      mechLaddVol->AddNode(volTG,4*i+1,
+      mechStavVol->AddNode(volTG,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y-0.16,z-kStaveLength/2+((4/n)*kL1*i)+kS1/2, //z-14.25+(2*kL1*i), 
                                                     new TGeoRotation("volTG",90,kAlpha,0)));
-      mechLaddVol->AddNode(volTG,4*i+2,
+      mechStavVol->AddNode(volTG,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y-0.16,z-kStaveLength/2+((4/n)*i*kL1)+kS1/2, //z-14.25+(i*2*kL1), 
                                                     new TGeoRotation("volTG",-90,-kAlpha,0)));
-      mechLaddVol->AddNode(volTG,4*i+3,
+      mechStavVol->AddNode(volTG,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y-0.16,z-kStaveLength/2+(i*(4/n)*kL1)+kS1/2, //z-14.25+(i*2*kL1), 
                                                     new TGeoRotation("volTG",-90,+kAlpha,0)));
     }
 
-    TGeoBBox *glue = new TGeoBBox(xlad, 0.005/2, zlad);
+    TGeoBBox *glue = new TGeoBBox(xsta, 0.005/2, zsta);
     TGeoVolume *volGlue=new TGeoVolume("Glue2", glue, medGlue);
     volGlue->SetLineColor(5);
     volGlue->SetFillColor(5); 
-    //mechLaddVol->AddNode(volGlue, 0, new TGeoCombiTrans(x, y-0.16, z, new TGeoRotation("",0, 0, 0)));
-    mechLaddVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005, z, new TGeoRotation("",0, 0, 0)));
+    //mechStavVol->AddNode(volGlue, 0, new TGeoCombiTrans(x, y-0.16, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005, z, new TGeoRotation("",0, 0, 0)));
   }
 
   if (fBuildLevel < 1) {
     //Flex cable brown-28 TGeoBBox(width,thickness,length); 
-    TGeoBBox *kapCable = new TGeoBBox(xlad, 0.01/2, zlad);
+    TGeoBBox *kapCable = new TGeoBBox(xsta, 0.01/2, zsta);
     TGeoVolume *volCable=new TGeoVolume("FlexCable", kapCable, medFlexCable);
     volCable->SetLineColor(28);
     volCable->SetFillColor(28); 
-    mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005-0.01, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005-0.01, z, new TGeoRotation("",0, 0, 0)));
  }
 
   // Done, return the stave structur
-  return mechLaddVol;
+  return mechStavVol;
 }
 
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
-                                                   const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xsta,
+                                                   const Double_t zsta,
                                                    const TGeoManager *mgr){
 //
 // Create the mechanical stave structure for Model 1 of TDR
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -755,9 +891,9 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
   // Local parameters
   Double_t kConeOutRadius = 0.15/2;
   //    Double_t kConeInRadius = 0.1430/2;
-  Double_t kStaveLength = zlad*2;
-  //    Double_t kStaveWidth = xlad*2-kConeOutRadius*2;
-  Double_t kStaveWidth = xlad*2;
+  Double_t kStaveLength = zsta*2;
+  //    Double_t kStaveWidth = xsta*2-kConeOutRadius*2;
+  Double_t kStaveWidth = xsta*2;
   Double_t kWidth = kStaveWidth/4;//1/2 of kWidth
   Double_t kStaveHeight = 0.3;
   Double_t kHeight = kStaveHeight/2;
@@ -771,10 +907,10 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
   Int_t  loop = (Int_t)((kStaveLength/(2*kL1))/2);
   
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   char volname[30];
-  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
+  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
     
 
   // detailed structure ++++++++++++++
@@ -783,7 +919,7 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
   // Polimide micro channels numbers
   Double_t yMC = y-kHeight+0.01;
   Int_t nb = (Int_t)(kStaveWidth/0.1)+1;
-  Double_t xladMC = (nb*0.1-0.08)/2;
+  Double_t xstaMC = (nb*0.1-0.08)/2;
 
 
   if (fBuildLevel < 5) {
@@ -795,37 +931,37 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
     mechStruct->DefineSection(0,-kStaveLength-0.1,0,0,1.);
     mechStruct->DefineSection(1,kStaveLength+0.1,0,0,1.);
 
-    mechLaddVol = new TGeoVolume(volname, mechStruct, medAir);
-    mechLaddVol->SetLineColor(12);
-    mechLaddVol->SetFillColor(12); 
-    mechLaddVol->SetVisibility(kTRUE);
+    mechStavVol = new TGeoVolume(volname, mechStruct, medAir);
+    mechStavVol->SetLineColor(12);
+    mechStavVol->SetFillColor(12); 
+    mechStavVol->SetVisibility(kTRUE);
       
     // Polimide micro channels numbers
-    TGeoBBox *tM0=new TGeoBBox(xladMC, 0.005/2, zlad);
+    TGeoBBox *tM0=new TGeoBBox(xstaMC, 0.005/2, zsta);
     TGeoVolume *volTM0=new TGeoVolume("MicroChanCover", tM0, medKapton);
     volTM0->SetLineColor(35);
     volTM0->SetFillColor(35); 
-    mechLaddVol->AddNode(volTM0, 0, new TGeoCombiTrans(x,-0.0125+yMC, z, new TGeoRotation("",0, 0, 0)));
-    mechLaddVol->AddNode(volTM0, 1, new TGeoCombiTrans(x,+0.0125+yMC, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volTM0, 0, new TGeoCombiTrans(x,-0.0125+yMC, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volTM0, 1, new TGeoCombiTrans(x,+0.0125+yMC, z, new TGeoRotation("",0, 0, 0)));
       
-    TGeoBBox *tM0b=new TGeoBBox(0.02/2, 0.02/2, zlad);
+    TGeoBBox *tM0b=new TGeoBBox(0.02/2, 0.02/2, zsta);
     TGeoVolume *volTM0b=new TGeoVolume("MicroChanWalls", tM0b, medKapton);
     volTM0b->SetLineColor(35);
     volTM0b->SetFillColor(35); 
     for (Int_t ib=0;ib<nb;ib++) {
-      mechLaddVol->AddNode(volTM0b, ib, new TGeoCombiTrans(x+ib*0.1-xladMC+0.01,yMC, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0b, ib, new TGeoCombiTrans(x+ib*0.1-xstaMC+0.01,yMC, z, new TGeoRotation("",0, 0, 0)));
     }
       
   }
     
   if (fBuildLevel < 4) {
     // Water in Polimide micro channels
-    TGeoBBox *water=new TGeoBBox(0.08/2, 0.02/2, zlad+0.1);
+    TGeoBBox *water=new TGeoBBox(0.08/2, 0.02/2, zsta+0.1);
     TGeoVolume *volWater=new TGeoVolume("Water", water, medWater);
     volWater->SetLineColor(4);
     volWater->SetFillColor(4); 
     for (Int_t ib=0;ib<(nb-1);ib++) {
-      mechLaddVol->AddNode(volWater, ib, new TGeoCombiTrans(x+ib*0.1-xladMC+0.06,yMC, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volWater, ib, new TGeoCombiTrans(x+ib*0.1-xstaMC+0.06,yMC, z, new TGeoRotation("",0, 0, 0)));
     }
   }
     
@@ -838,16 +974,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
     volT1->SetLineColor(12);
     volT1->SetFillColor(12); 
     for(int i=0;i<loop;i++){//i<30;i++){
-      mechLaddVol->AddNode(volT1,4*i+0,
+      mechStavVol->AddNode(volT1,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight+0.04+filHeight/2,z-kStaveLength/2+(4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+1,
+      mechStavVol->AddNode(volT1,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight+0.04+filHeight/2,z-kStaveLength/2+(4*kL1*i)+kS1/2, 
                                                     new TGeoRotation("volT1",90,kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+2,
+      mechStavVol->AddNode(volT1,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight+0.04+filHeight/2,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,-kAlpha,0)));
-      mechLaddVol->AddNode(volT1,4*i+3,
+      mechStavVol->AddNode(volT1,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight+0.04+filHeight/2,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,+kAlpha,0)));
     }
@@ -858,16 +994,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
     volT2->SetLineColor(12);
     volT2->SetFillColor(12); 
     for(int i=0;i<loop;i++){ //i<30;i++){
-      mechLaddVol->AddNode(volT2,4*i+0,
+      mechStavVol->AddNode(volT2,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y+0.04+filHeight/2,z-kStaveLength/2+(i*4*kL1)+kS1/2,
                                                     new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+1,
+      mechStavVol->AddNode(volT2,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y+0.04+filHeight/2,z-kStaveLength/2+(i*4*kL1)+kS1/2,
                                                     new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+2,
+      mechStavVol->AddNode(volT2,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y+0.04+filHeight/2,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2,
                                                     new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,4*i+3,
+      mechStavVol->AddNode(volT2,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y+0.04+filHeight/2,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
     }
@@ -880,58 +1016,58 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB1(const Double_t xlad,
     volT3->SetLineColor(5);
     volT3->SetFillColor(5); 
     for(int i=0;i<loop;i++){//i<30;i++){
-      mechLaddVol->AddNode(volT3,4*i+0,
+      mechStavVol->AddNode(volT3,4*i+0,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight+0.0325,z-kStaveLength/2+(4*kL1*i)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,kAlpha,0)));
-      mechLaddVol->AddNode(volT3,4*i+1,
+      mechStavVol->AddNode(volT3,4*i+1,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight+0.0325,z-kStaveLength/2+(4*kL1*i)+kS1/2, 
                                                     new TGeoRotation("volT1",90,kAlpha,0)));
-      mechLaddVol->AddNode(volT3,4*i+2,
+      mechStavVol->AddNode(volT3,4*i+2,
                                  new TGeoCombiTrans(x+kWidth,y-kHeight+0.0325,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,-kAlpha,0)));
-      mechLaddVol->AddNode(volT3,4*i+3,
+      mechStavVol->AddNode(volT3,4*i+3,
                                  new TGeoCombiTrans(x-kWidth,y-kHeight+0.0325,z-kStaveLength/2+2*kL1+(i*4*kL1)+kS1/2, 
                                                     new TGeoRotation("volT1",-90,+kAlpha,0)));
     }
       
     // Glue microchannel and sensor
-    TGeoBBox *glueM = new TGeoBBox(xlad, 0.01/2, zlad);
+    TGeoBBox *glueM = new TGeoBBox(xsta, 0.01/2, zsta);
     TGeoVolume *volGlueM=new TGeoVolume("MicroChanGlue", glueM, medGlue);
     volGlueM->SetLineColor(5);
     volGlueM->SetFillColor(5); 
-    mechLaddVol->AddNode(volGlueM, 0, new TGeoCombiTrans(x, y-0.16, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volGlueM, 0, new TGeoCombiTrans(x, y-0.16, z, new TGeoRotation("",0, 0, 0)));
 
     // Glue sensor and kapton
-    TGeoBBox *glue = new TGeoBBox(xlad, 0.005/2, zlad);
+    TGeoBBox *glue = new TGeoBBox(xsta, 0.005/2, zsta);
     TGeoVolume *volGlue=new TGeoVolume("SensorGlue", glue, medGlue);
     volGlue->SetLineColor(5);
     volGlue->SetFillColor(5); 
-    mechLaddVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005, z, new TGeoRotation("",0, 0, 0)));
   }
 
   if (fBuildLevel < 1) {
-    TGeoBBox *kapCable = new TGeoBBox(xlad, 0.01/2, zlad);
+    TGeoBBox *kapCable = new TGeoBBox(xsta, 0.01/2, zsta);
     TGeoVolume *volCable=new TGeoVolume("FlexCable", kapCable, medFlexCable);
     volCable->SetLineColor(28);
     volCable->SetFillColor(28); 
-    mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005-0.01, z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.165-fSensorThick-0.005-0.01, z, new TGeoRotation("",0, 0, 0)));
   }
     
   // Done, return the stave structur
-  return mechLaddVol;
+  return mechStavVol;
 
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
-                                                    const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xsta,
+                                                    const Double_t zsta,
                                                     const TGeoManager *mgr){
 //
 // Create the mechanical stave structure for Model 2.1 of TDR
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -957,8 +1093,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
   // Local parameters
   Double_t kConeOutRadius =0.151384/2;
   Double_t kConeInRadius = 0.145034/2;
-  Double_t kStaveLength = zlad;
-  Double_t kStaveWidth = xlad*2;
+  Double_t kStaveLength = zsta;
+  Double_t kStaveWidth = xsta*2;
   Double_t kWidth = (kStaveWidth+0.005)/4;
   Double_t kStaveHeigth = 0.33;//0.33;
   Double_t kHeight = (kStaveHeigth+0.025)/2;
@@ -978,11 +1114,11 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
 
 
   char volname[30];
-  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
+  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
 
   Double_t z=0, y=-(kConeOutRadius+0.03)+0.0385, x=0;
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   if (fBuildLevel < 5) {
     // world (trapezoid)
@@ -993,18 +1129,18 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
     mechStruct->DefineSection(0,-kStaveLength-0.1,0,0,1.);
     mechStruct->DefineSection(1,kStaveLength+0.1,0,0,1.);
 
-    mechLaddVol = new TGeoVolume(volname, mechStruct, medAir);
-    mechLaddVol->SetLineColor(12);
-    mechLaddVol->SetFillColor(12); 
-    mechLaddVol->SetVisibility(kTRUE);  
+    mechStavVol = new TGeoVolume(volname, mechStruct, medAir);
+    mechStavVol->SetLineColor(12);
+    mechStavVol->SetFillColor(12); 
+    mechStavVol->SetVisibility(kTRUE);  
       
     //Pipe Kapton grey-35 
     TGeoCone *cone1 = new TGeoCone(kStaveLength,kConeInRadius,kConeOutRadius,kConeInRadius,kConeOutRadius);
     TGeoVolume *volCone1= new TGeoVolume("PolyimidePipe", cone1, medKapton);
     volCone1->SetFillColor(35);
     volCone1->SetLineColor(35);
-    mechLaddVol->AddNode(volCone1,1,new TGeoTranslation(x+0.25,y,z));
-    mechLaddVol->AddNode(volCone1,2,new TGeoTranslation(x-0.25,y,z));
+    mechStavVol->AddNode(volCone1,1,new TGeoTranslation(x+0.25,y,z));
+    mechStavVol->AddNode(volCone1,2,new TGeoTranslation(x-0.25,y,z));
   }
 
   if (fBuildLevel < 4) {
@@ -1013,8 +1149,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
     TGeoVolume *volCoolTubeW= new TGeoVolume("Water", coolTubeW, medWater);
     volCoolTubeW->SetFillColor(4);
     volCoolTubeW->SetLineColor(4);
-    mechLaddVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x-0.25,y,z));
-    mechLaddVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x+0.25,y,z));
+    mechStavVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x-0.25,y,z));
+    mechStavVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x+0.25,y,z));
   }
 
   if (fBuildLevel < 3) {
@@ -1025,11 +1161,11 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
     volT2->SetLineColor(12);
     volT2->SetFillColor(12); 
     for(int i=0;i<loop;i++){// i<28;i++){
-      mechLaddVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,i*4+2,new TGeoCombiTrans(x-kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
-      mechLaddVol->AddNode(volT2,i*4+3,new TGeoCombiTrans(x+kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
-      mechLaddVol->AddNode(volT2,i*4+4,new TGeoCombiTrans(x-kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
-//    mechLaddVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight-(0.12/2)+0.072,z+kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
+      mechStavVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
+      mechStavVol->AddNode(volT2,i*4+2,new TGeoCombiTrans(x-kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
+      mechStavVol->AddNode(volT2,i*4+3,new TGeoCombiTrans(x+kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
+      mechStavVol->AddNode(volT2,i*4+4,new TGeoCombiTrans(x-kWidth,y+kHeight+(0.12/2)-0.014+0.007,z-kStaveLength+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
+//    mechStavVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight-(0.12/2)+0.072,z+kStaveLength+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
 
  }
  
@@ -1038,75 +1174,75 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
     TGeoVolume *plate4 = new TGeoVolume("WallOut",box4,medM60J3K);
     plate4->SetFillColor(35);
     plate4->SetLineColor(35);
-    mechLaddVol->AddNode(plate4,1,new TGeoCombiTrans(x+(2*kStaveWidth/4)-(0.03/2),y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate4",0,0,0)));
-    mechLaddVol->AddNode(plate4,2,new TGeoCombiTrans(x-(2*kStaveWidth/4)+(0.03/2),y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate4",0,0,0)));
+    mechStavVol->AddNode(plate4,1,new TGeoCombiTrans(x+(2*kStaveWidth/4)-(0.03/2),y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate4",0,0,0)));
+    mechStavVol->AddNode(plate4,2,new TGeoCombiTrans(x-(2*kStaveWidth/4)+(0.03/2),y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate4",0,0,0)));
     //wall side in
     TGeoBBox *box5 = new TGeoBBox(0.015/2,0.12/2,kStaveLength-0.50);
     TGeoVolume *plate5 = new TGeoVolume("WallIn",box5,medM60J3K);
     plate5->SetFillColor(12);
     plate5->SetLineColor(12);
-    mechLaddVol->AddNode(plate5,1,new TGeoCombiTrans(x+(2*kStaveWidth/4)-0.03-0.015/2,y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate5",0,0,0)));
-    mechLaddVol->AddNode(plate5,2,new TGeoCombiTrans(x-(2*kStaveWidth/4)+0.03+0.015/2,y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate5",0,0,0)));
+    mechStavVol->AddNode(plate5,1,new TGeoCombiTrans(x+(2*kStaveWidth/4)-0.03-0.015/2,y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate5",0,0,0)));
+    mechStavVol->AddNode(plate5,2,new TGeoCombiTrans(x-(2*kStaveWidth/4)+0.03+0.015/2,y-0.0022-kConeOutRadius+0.12/2+0.007,z,new TGeoRotation("plate5",0,0,0)));
 
      //Amec Thermasol red-2 cover tube FGS300
     TGeoConeSeg *cons1 = new TGeoConeSeg(kStaveLength-0.50,kConeOutRadius,kConeOutRadius+kLay1,kConeOutRadius,kConeOutRadius+kLay1,0,180);
     TGeoVolume *cone11 = new TGeoVolume("ThermasolPipeCover",cons1,medFGS003);
     cone11->SetFillColor(2);
     cone11->SetLineColor(2);
-    mechLaddVol->AddNode(cone11,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("Cone11",0,0,0)));
-    mechLaddVol->AddNode(cone11,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("Cone11",0,0,0)));
+    mechStavVol->AddNode(cone11,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("Cone11",0,0,0)));
+    mechStavVol->AddNode(cone11,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("Cone11",0,0,0)));
 
     TGeoBBox *box2 = new TGeoBBox((0.50-(2*kConeOutRadius))/2,kLay1/2,kStaveLength-0.50);
     TGeoVolume *plate2 = new TGeoVolume("ThermasolMiddle",box2,medFGS003);
     plate2->SetFillColor(2);
     plate2->SetLineColor(2);
-    mechLaddVol->AddNode(plate2,1,new TGeoCombiTrans(x,y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate2",0,0,0)));
+    mechStavVol->AddNode(plate2,1,new TGeoCombiTrans(x,y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate2",0,0,0)));
 
     TGeoBBox *box21 = new TGeoBBox((0.75-0.25-kConeOutRadius-kLay1)/2,kLay1/2,kStaveLength-0.50);
     TGeoVolume *plate21 = new TGeoVolume("ThermasolLeftRight",box21,medFGS003);
     plate21->SetFillColor(2);
     plate21->SetLineColor(2);
-    mechLaddVol->AddNode(plate21,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(0.75-0.25-kConeOutRadius)/2-(kLay1/2),y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate21",0,0,0)));
-    mechLaddVol->AddNode(plate21,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-(0.75-0.25-kConeOutRadius)/2+(kLay1/2),y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate21",0,0,0)));
+    mechStavVol->AddNode(plate21,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(0.75-0.25-kConeOutRadius)/2-(kLay1/2),y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate21",0,0,0)));
+    mechStavVol->AddNode(plate21,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-(0.75-0.25-kConeOutRadius)/2+(kLay1/2),y-kConeOutRadius+(kLay1/2),z,new TGeoRotation("plate21",0,0,0)));
 
     TGeoBBox *box22 = new TGeoBBox((kLay1/2),kConeOutRadius/2,kStaveLength-0.50);
     TGeoVolume *plate22 = new TGeoVolume("ThermasolVertical",box22,medFGS003);
     plate22->SetFillColor(2);
     plate22->SetLineColor(2);
-    mechLaddVol->AddNode(plate22,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-    mechLaddVol->AddNode(plate22,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-    mechLaddVol->AddNode(plate22,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-    mechLaddVol->AddNode(plate22,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+    mechStavVol->AddNode(plate22,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+    mechStavVol->AddNode(plate22,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+    mechStavVol->AddNode(plate22,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+    mechStavVol->AddNode(plate22,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-(kLay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
 
     //C Fleece
     TGeoConeSeg *cons2 = new TGeoConeSeg(kStaveLength-0.50,kConeOutRadius+kLay1,kConeOutRadius+kLay1+kLay2,kConeOutRadius+kLay1,kConeOutRadius+kLay1+kLay2,0,180); 
     TGeoVolume *cone12 = new TGeoVolume("CFleecePipeCover",cons2,medCarbonFleece);
     cone12->SetFillColor(28);
     cone12->SetLineColor(28);
-    mechLaddVol->AddNode(cone12,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("Cone12",0,0,0)));
-    mechLaddVol->AddNode(cone12,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("Cone12",0,0,0)));
+    mechStavVol->AddNode(cone12,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("Cone12",0,0,0)));
+    mechStavVol->AddNode(cone12,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("Cone12",0,0,0)));
 
     TGeoBBox *box3 = new TGeoBBox((0.50-(2*(kConeOutRadius+kLay1)))/2,kLay2/2,kStaveLength-0.50);
     TGeoVolume *plate3 = new TGeoVolume("CFleeceMiddle",box3,medCarbonFleece);
     plate3->SetFillColor(28);
     plate3->SetLineColor(28);
-    mechLaddVol->AddNode(plate3,1,new TGeoCombiTrans(x,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate3",0,0,0)));
+    mechStavVol->AddNode(plate3,1,new TGeoCombiTrans(x,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate3",0,0,0)));
 
     TGeoBBox *box31 = new TGeoBBox((0.75-0.25-kConeOutRadius-kLay1)/2,kLay2/2,kStaveLength-0.50);
     TGeoVolume *plate31 = new TGeoVolume("CFleeceLeftRight",box31,medCarbonFleece);
     plate31->SetFillColor(28);
     plate31->SetLineColor(28);
-    mechLaddVol->AddNode(plate31,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+kLay1+(0.75-0.25-kConeOutRadius-kLay1)/2,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate31",0,0,0)));
-    mechLaddVol->AddNode(plate31,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-kLay1-(0.75-0.25-kConeOutRadius-kLay1)/2,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate31",0,0,0)));
+    mechStavVol->AddNode(plate31,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+kLay1+(0.75-0.25-kConeOutRadius-kLay1)/2,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate31",0,0,0)));
+    mechStavVol->AddNode(plate31,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-kLay1-(0.75-0.25-kConeOutRadius-kLay1)/2,y-kConeOutRadius+kLay1+(kLay2/2),z,new TGeoRotation("plate31",0,0,0)));
 
     TGeoBBox *box32 = new TGeoBBox((kLay2/2),(kConeOutRadius-kLay1)/2,kStaveLength-0.50);
     TGeoVolume *plate32 = new TGeoVolume("CFleeceVertical",box32,medCarbonFleece);
     plate32->SetFillColor(28);
     plate32->SetLineColor(28);
-    mechLaddVol->AddNode(plate32,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+kLay1+(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-    mechLaddVol->AddNode(plate32,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-kLay1-(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-    mechLaddVol->AddNode(plate32,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+kLay1+(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-    mechLaddVol->AddNode(plate32,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-kLay1-(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+    mechStavVol->AddNode(plate32,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+kLay1+(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+    mechStavVol->AddNode(plate32,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-kLay1-(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+    mechStavVol->AddNode(plate32,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+kLay1+(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+    mechStavVol->AddNode(plate32,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-kLay1-(kLay2/2),y+(kLay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
 
 
     //K13D2U carbon plate
@@ -1114,52 +1250,52 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB21(const Double_t xlad,
     TGeoVolume *plate1 = new TGeoVolume("CarbonPlate",box1,medK13D2U2k);
     plate1->SetFillColor(5);
     plate1->SetLineColor(5);
-    mechLaddVol->AddNode(plate1,1,new TGeoCombiTrans(x,y-(kConeOutRadius+(kLay3/2)),z,new TGeoRotation("plate1",0,0,0)));
+    mechStavVol->AddNode(plate1,1,new TGeoCombiTrans(x,y-(kConeOutRadius+(kLay3/2)),z,new TGeoRotation("plate1",0,0,0)));
 
     //C Fleece bottom plate 
     TGeoBBox *box6 = new TGeoBBox(2*kWidth,kLay2/2,kStaveLength-0.50);
     TGeoVolume *plate6 = new TGeoVolume("CFleeceBottom",box6,medCarbonFleece);
     plate6->SetFillColor(2);
     plate6->SetLineColor(2);
-    mechLaddVol->AddNode(plate6,1,new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)),z,new TGeoRotation("plate1",0,0,0)));
+    mechStavVol->AddNode(plate6,1,new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)),z,new TGeoRotation("plate1",0,0,0)));
       
       
   }
 
   if (fBuildLevel < 2) {
     //Glue layers and kapton
-    TGeoBBox *glue = new TGeoBBox(kStaveWidth/2, 0.005/2, zlad);
+    TGeoBBox *glue = new TGeoBBox(kStaveWidth/2, 0.005/2, zsta);
     TGeoVolume *volGlue=new TGeoVolume("Glue", glue, medGlue);
     volGlue->SetLineColor(5);
     volGlue->SetFillColor(5); 
-    mechLaddVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
-    mechLaddVol->AddNode(volGlue, 1, new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)+0.01+fSensorThick+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volGlue, 1, new TGeoCombiTrans(x,y-(kConeOutRadius+kLay3+(kLay2/2)+0.01+fSensorThick+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
   }
 
   if (fBuildLevel < 1) {
-    TGeoBBox *kapCable = new TGeoBBox(kStaveWidth/2, 0.01/2, zlad);
+    TGeoBBox *kapCable = new TGeoBBox(kStaveWidth/2, 0.01/2, zsta);
     TGeoVolume *volCable=new TGeoVolume("FlexCable", kapCable, medFlexCable);
     volCable->SetLineColor(28);
     volCable->SetFillColor(28); 
-    mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+kLay3+(kLay2/2)+0.01+fSensorThick+0.01+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
+    mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+kLay3+(kLay2/2)+0.01+fSensorThick+0.01+(0.01/2)), z, new TGeoRotation("",0, 0, 0)));
   }
     
 
   // Done, return the stave structure
-  return mechLaddVol;
+  return mechStavVol;
   
 }
 // new model22
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
-                                                    const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xsta,
+                                                    const Double_t zsta,
                                                     const TGeoManager *mgr){
 //
 // Create the mechanical stave structure for Model 2.2 of TDR
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1186,8 +1322,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
   // Local parameters
   Double_t kConeOutRadius =0.107/2;//0.107/2;
   Double_t kConeInRadius = 0.1015/2;//0.10105/2
-  Double_t kStaveLength = zlad;
-  Double_t kStaveWidth = xlad*2;
+  Double_t kStaveLength = zsta;
+  Double_t kStaveWidth = xsta*2;
   Double_t kWidth = (kStaveWidth)/4;
   Double_t kStaveHeight = 0.283;//0.33;
   Double_t kHeight = (kStaveHeight)/2;
@@ -1212,11 +1348,11 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
   Int_t  loop = (Int_t)(kStaveLength/(2*kL1));
 
   char volname[30];
-  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
+  snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
 
   Double_t z=0, y=-(2*kConeOutRadius)+klay1+klay2+fSensorThick/2-0.0004, x=0;
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   if (fBuildLevel < 5) {
     // world (trapezoid)
@@ -1230,18 +1366,18 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
     mechStruct->DefineSection(0,-kStaveLength,0,0,1.);
     mechStruct->DefineSection(1,kStaveLength,0,0,1.);
 
-    mechLaddVol = new TGeoVolume(volname, mechStruct, medAir);
-    mechLaddVol->SetLineColor(12);
-    mechLaddVol->SetFillColor(12); 
-    mechLaddVol->SetVisibility(kTRUE);  
+    mechStavVol = new TGeoVolume(volname, mechStruct, medAir);
+    mechStavVol->SetLineColor(12);
+    mechStavVol->SetFillColor(12); 
+    mechStavVol->SetVisibility(kTRUE);  
       
     //Polyimide Pipe Kapton grey-35 
     TGeoCone *cone1 = new TGeoCone(kStaveLength,kConeInRadius,kConeOutRadius-0.0001,kConeInRadius,kConeOutRadius-0.0001);
     TGeoVolume *volCone1= new TGeoVolume("PolyimidePipe", cone1, medKapton);
     volCone1->SetFillColor(35);
     volCone1->SetLineColor(35);
-    mechLaddVol->AddNode(volCone1,1,new TGeoTranslation(x+0.25,y,z));
-    mechLaddVol->AddNode(volCone1,2,new TGeoTranslation(x-0.25,y,z));
+    mechStavVol->AddNode(volCone1,1,new TGeoTranslation(x+0.25,y,z));
+    mechStavVol->AddNode(volCone1,2,new TGeoTranslation(x-0.25,y,z));
     }
 
   if (fBuildLevel < 4) {
@@ -1249,8 +1385,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
     TGeoVolume *volCoolTubeW= new TGeoVolume("Water", coolTubeW, medWater);
     volCoolTubeW->SetFillColor(4);
     volCoolTubeW->SetLineColor(4);
-    mechLaddVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x-0.25,y,z));
-    mechLaddVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x+0.25,y,z));
+    mechStavVol->AddNode(volCoolTubeW,0,new TGeoTranslation(x-0.25,y,z));
+    mechStavVol->AddNode(volCoolTubeW,1,new TGeoTranslation(x+0.25,y,z));
   }
 
   if (fBuildLevel < 3) {
@@ -1262,13 +1398,13 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
     volT2->SetFillColor(12); 
     for(int i=0;i<loop;i++){// i<28;i++){
       // 1) Front Left Top Filament
-       mechLaddVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight+0.01,z-kStaveLength+0.1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
+       mechStavVol->AddNode(volT2,i*4+1,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight+0.01,z-kStaveLength+0.1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,90-kBeta)));
       // 2) Front Right Top Filament
-      mechLaddVol->AddNode(volT2,i*4+2,new TGeoCombiTrans(x-kWidth-0.0036,y+kHeight+0.01,z-kStaveLength+0.1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
+      mechStavVol->AddNode(volT2,i*4+2,new TGeoCombiTrans(x-kWidth-0.0036,y+kHeight+0.01,z-kStaveLength+0.1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,-90+kBeta)));
       // 3) Back Left  Top Filament
-      mechLaddVol->AddNode(volT2,i*4+3,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight+0.01,z-kStaveLength+0.1+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
+      mechStavVol->AddNode(volT2,i*4+3,new TGeoCombiTrans(x+kWidth+0.0036,y+kHeight+0.01,z-kStaveLength+0.1+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,-90+kAlpha,90-kBeta)));
       // 4) Back Right Top Filament
-      mechLaddVol->AddNode(volT2,i*4+4,new TGeoCombiTrans(x-kWidth-0.0036,y+kHeight+0.01,z-kStaveLength+0.1+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
+      mechStavVol->AddNode(volT2,i*4+4,new TGeoCombiTrans(x-kWidth-0.0036,y+kHeight+0.01,z-kStaveLength+0.1+2*kL1+(i*4*kL1)+kS1/2, new TGeoRotation("volT2",90,90-kAlpha,-90+kBeta)));
    }
  
      //Vertex  structure 
@@ -1278,131 +1414,131 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB22(const Double_t xlad,
       TGeoVolume *ibdv = new TGeoVolume("TopVertex",trd1,medM60J3K);
       ibdv->SetFillColor(12);
       ibdv->SetLineColor(12);
-      mechLaddVol->AddNode(ibdv,1,new TGeoCombiTrans(x,y+kStaveHeight+0.03,z,new TGeoRotation("ibdv",0.,-90,0)));//y+kStaveHeight+0.056
+      mechStavVol->AddNode(ibdv,1,new TGeoCombiTrans(x,y+kStaveHeight+0.03,z,new TGeoRotation("ibdv",0.,-90,0)));//y+kStaveHeight+0.056
 
       //left trd2
       TGeoTrd1 *trd2 = new TGeoTrd1(0,kSideVertexMWidth/2,kStaveLength, kSideVertexHeight/2);
       TGeoVolume *ibdv2 = new TGeoVolume("LeftVertex",trd2,medM60J3K);
       ibdv2->SetFillColor(12);
       ibdv2->SetLineColor(12);
-      mechLaddVol->AddNode(ibdv2,1,new TGeoCombiTrans(x+kStaveWidth/2-0.06,y-0.0355,z,new TGeoRotation("ibdv2",-103.3,90,0))); //x-kStaveWidth/2-0.09 old Config.C y-0.0355,
+      mechStavVol->AddNode(ibdv2,1,new TGeoCombiTrans(x+kStaveWidth/2-0.06,y-0.0355,z,new TGeoRotation("ibdv2",-103.3,90,0))); //x-kStaveWidth/2-0.09 old Config.C y-0.0355,
 
       //right trd3
       TGeoTrd1 *trd3 = new TGeoTrd1(0,kSideVertexMWidth/2,kStaveLength, kSideVertexHeight/2);
       TGeoVolume *ibdv3 = new TGeoVolume("RightVertex",trd3,medM60J3K);
       ibdv3->SetFillColor(12);
       ibdv3->SetLineColor(12);
-      mechLaddVol->AddNode(ibdv3,1,new TGeoCombiTrans(x-kStaveWidth/2+0.06,y-0.0355,z,new TGeoRotation("ibdv3",103.3,90,0))); //x-kStaveWidth/2+0.09 old Config.C
+      mechStavVol->AddNode(ibdv3,1,new TGeoCombiTrans(x-kStaveWidth/2+0.06,y-0.0355,z,new TGeoRotation("ibdv3",103.3,90,0))); //x-kStaveWidth/2+0.09 old Config.C
       
      //Carbon Fleece
-      TGeoConeSeg *cons2 = new TGeoConeSeg(zlad,kConeOutRadius+klay1,kConeOutRadius+klay1+klay2,kConeOutRadius+klay1,kConeOutRadius+klay1+klay2,0,180); 
+      TGeoConeSeg *cons2 = new TGeoConeSeg(zsta,kConeOutRadius+klay1,kConeOutRadius+klay1+klay2,kConeOutRadius+klay1,kConeOutRadius+klay1+klay2,0,180); 
       TGeoVolume *cone12 = new TGeoVolume("CarbonFleecePipeCover",cons2,medCarbonFleece);
       cone12->SetFillColor(28);
       cone12->SetLineColor(28);
-      mechLaddVol->AddNode(cone12,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("cone12",0,0,0)));
-      mechLaddVol->AddNode(cone12,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("cone12",0,0,0)));
+      mechStavVol->AddNode(cone12,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("cone12",0,0,0)));
+      mechStavVol->AddNode(cone12,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("cone12",0,0,0)));
 
-      TGeoBBox *box3 = new TGeoBBox((0.50-(2*(kConeOutRadius+klay1)))/2,klay2/2,zlad);//kStaveLength-0.50);
+      TGeoBBox *box3 = new TGeoBBox((0.50-(2*(kConeOutRadius+klay1)))/2,klay2/2,zsta);//kStaveLength-0.50);
       TGeoVolume *plate3 = new TGeoVolume("CarbonFleeceMiddle",box3,medCarbonFleece);
       plate3->SetFillColor(28);
       plate3->SetLineColor(28);
-      mechLaddVol->AddNode(plate3,1,new TGeoCombiTrans(x,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate3",0,0,0)));
+      mechStavVol->AddNode(plate3,1,new TGeoCombiTrans(x,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate3",0,0,0)));
 
-      TGeoBBox *box31 = new TGeoBBox((0.75-0.25-kConeOutRadius-klay1)/2+0.0025,klay2/2,zlad);
+      TGeoBBox *box31 = new TGeoBBox((0.75-0.25-kConeOutRadius-klay1)/2+0.0025,klay2/2,zsta);
       TGeoVolume *plate31 = new TGeoVolume("CarbonFleeceLeftRight",box31,medCarbonFleece);
       plate31->SetFillColor(28);
       plate31->SetLineColor(28);
-      mechLaddVol->AddNode(plate31,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+klay1+(0.75-0.25-kConeOutRadius-klay1)/2,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate31",0,0,0)));
-      mechLaddVol->AddNode(plate31,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-klay1-(0.75-0.25-kConeOutRadius-klay1)/2,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate31",0,0,0)));
+      mechStavVol->AddNode(plate31,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+klay1+(0.75-0.25-kConeOutRadius-klay1)/2,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate31",0,0,0)));
+      mechStavVol->AddNode(plate31,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-klay1-(0.75-0.25-kConeOutRadius-klay1)/2,y-kConeOutRadius+klay1+(klay2/2),z,new TGeoRotation("plate31",0,0,0)));
 
-      TGeoBBox *box32 = new TGeoBBox((klay2/2),(kConeOutRadius-klay1)/2,zlad);
+      TGeoBBox *box32 = new TGeoBBox((klay2/2),(kConeOutRadius-klay1)/2,zsta);
       TGeoVolume *plate32 = new TGeoVolume("CarbonFleeceVertical",box32,medCarbonFleece);
       plate32->SetFillColor(28);
       plate32->SetLineColor(28);
-      mechLaddVol->AddNode(plate32,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+klay1+(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-      mechLaddVol->AddNode(plate32,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-klay1-(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-      mechLaddVol->AddNode(plate32,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+klay1+(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
-      mechLaddVol->AddNode(plate32,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-klay1-(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+      mechStavVol->AddNode(plate32,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+klay1+(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+      mechStavVol->AddNode(plate32,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-klay1-(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+      mechStavVol->AddNode(plate32,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+klay1+(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
+      mechStavVol->AddNode(plate32,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-klay1-(klay2/2),y+(klay1-kConeOutRadius)/2,z,new TGeoRotation("plate32",0,0,0)));
 
      //Amec Thermasol red-2 cover tube FGS300 or Carbon Paper
-      TGeoConeSeg *cons1 = new TGeoConeSeg(zlad,kConeOutRadius,kConeOutRadius+klay1-0.0001,kConeOutRadius,kConeOutRadius+klay1-0.0001,0,180);//kConeOutRadius+klay1-0.0001
+      TGeoConeSeg *cons1 = new TGeoConeSeg(zsta,kConeOutRadius,kConeOutRadius+klay1-0.0001,kConeOutRadius,kConeOutRadius+klay1-0.0001,0,180);//kConeOutRadius+klay1-0.0001
       TGeoVolume *cone11 = new TGeoVolume("ThermasolPipeCover",cons1,medFGS003);
       cone11->SetFillColor(2);
       cone11->SetLineColor(2);
-      mechLaddVol->AddNode(cone11,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("cone11",0,0,0)));
-      mechLaddVol->AddNode(cone11,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("cone11",0,0,0)));
+      mechStavVol->AddNode(cone11,1,new TGeoCombiTrans(x+0.25,y,z,new TGeoRotation("cone11",0,0,0)));
+      mechStavVol->AddNode(cone11,2,new TGeoCombiTrans(x-0.25,y,z,new TGeoRotation("cone11",0,0,0)));
 
-      TGeoBBox *box2 = new TGeoBBox((0.50-(2*kConeOutRadius))/2,(klay1/2),zlad);//kStaveLength-0.50);
+      TGeoBBox *box2 = new TGeoBBox((0.50-(2*kConeOutRadius))/2,(klay1/2),zsta);//kStaveLength-0.50);
       TGeoVolume *plate2 = new TGeoVolume("ThermasolMiddle",box2,medFGS003);
       plate2->SetFillColor(2);
       plate2->SetLineColor(2);
-      mechLaddVol->AddNode(plate2,1,new TGeoCombiTrans(x,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate2",0,0,0)));
+      mechStavVol->AddNode(plate2,1,new TGeoCombiTrans(x,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate2",0,0,0)));
 
-      TGeoBBox *box21 = new TGeoBBox((0.75-0.25-kConeOutRadius-klay1)/2+0.0025,(klay1/2),zlad);
+      TGeoBBox *box21 = new TGeoBBox((0.75-0.25-kConeOutRadius-klay1)/2+0.0025,(klay1/2),zsta);
       TGeoVolume *plate21 = new TGeoVolume("ThermasolLeftRight",box21,medFGS003);
       plate21->SetFillColor(2);
       plate21->SetLineColor(2);
-      mechLaddVol->AddNode(plate21,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(0.75-0.25-kConeOutRadius)/2-(klay1/2)+0.0025,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate21",0,0,0)));
-      mechLaddVol->AddNode(plate21,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-(0.75-0.25-kConeOutRadius)/2+(klay1/2)-0.0025,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate21",0,0,0)));
+      mechStavVol->AddNode(plate21,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(0.75-0.25-kConeOutRadius)/2-(klay1/2)+0.0025,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate21",0,0,0)));
+      mechStavVol->AddNode(plate21,2,new TGeoCombiTrans(x-0.25-kConeOutRadius-(0.75-0.25-kConeOutRadius)/2+(klay1/2)-0.0025,y-kConeOutRadius+(klay1/2),z,new TGeoRotation("plate21",0,0,0)));
 
-      TGeoBBox *box22 = new TGeoBBox((klay1/2),kConeOutRadius/2,zlad);
+      TGeoBBox *box22 = new TGeoBBox((klay1/2),kConeOutRadius/2,zsta);
       TGeoVolume *plate22 = new TGeoVolume("ThermasolVertical",box22,medFGS003);
       plate22->SetFillColor(2);
       plate22->SetLineColor(2);
-      mechLaddVol->AddNode(plate22,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-      mechLaddVol->AddNode(plate22,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-      mechLaddVol->AddNode(plate22,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
-      mechLaddVol->AddNode(plate22,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+      mechStavVol->AddNode(plate22,1,new TGeoCombiTrans(x+0.25+kConeOutRadius+(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+      mechStavVol->AddNode(plate22,2,new TGeoCombiTrans(x+0.25-kConeOutRadius-(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+      mechStavVol->AddNode(plate22,3,new TGeoCombiTrans(x-0.25+kConeOutRadius+(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
+      mechStavVol->AddNode(plate22,4,new TGeoCombiTrans(x-0.25-kConeOutRadius-(klay1/2),y-kConeOutRadius/2,z,new TGeoRotation("plate22",0,0,0)));
 
      //K13D2U CF plate
-      TGeoBBox *box1 = new TGeoBBox(2*kWidth,(klay3)/2,zlad);
+      TGeoBBox *box1 = new TGeoBBox(2*kWidth,(klay3)/2,zsta);
       TGeoVolume *plate1 = new TGeoVolume("CFPlate",box1,medK13D2U2k);
       plate1->SetFillColor(5);
       plate1->SetLineColor(5);
-      mechLaddVol->AddNode(plate1,1,new TGeoCombiTrans(x,y-(kConeOutRadius+(klay3/2)),z,new TGeoRotation("plate1",0,0,0)));
+      mechStavVol->AddNode(plate1,1,new TGeoCombiTrans(x,y-(kConeOutRadius+(klay3/2)),z,new TGeoRotation("plate1",0,0,0)));
 
      //C Fleece bottom plate 
-      TGeoBBox *box6 = new TGeoBBox(2*kWidth,(klay2)/2,zlad);
+      TGeoBBox *box6 = new TGeoBBox(2*kWidth,(klay2)/2,zsta);
       TGeoVolume *plate6 = new TGeoVolume("CarbonFleeceBottom",box6,medCarbonFleece);
       plate6->SetFillColor(2);
       plate6->SetLineColor(2);
-      mechLaddVol->AddNode(plate6,1,new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+(klay2/2)),z,new TGeoRotation("plate6",0,0,0)));
+      mechStavVol->AddNode(plate6,1,new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+(klay2/2)),z,new TGeoRotation("plate6",0,0,0)));
 
     }
    if (fBuildLevel < 2) {
       //Glue klayers and kapton
-     TGeoBBox *glue = new TGeoBBox(kStaveWidth/2, (klay4)/2, zlad);
+     TGeoBBox *glue = new TGeoBBox(kStaveWidth/2, (klay4)/2, zsta);
       TGeoVolume *volGlue=new TGeoVolume("Glue", glue, medGlue);
       volGlue->SetLineColor(5);
       volGlue->SetFillColor(5); 
-      // mechLaddVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+klay2+(klay4/2)), z, new TGeoRotation("",0, 0, 0)));
-      mechLaddVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+klay2+(klay4)/2)+0.00005, z, new TGeoRotation("",0, 0, 0)));
+      // mechStavVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+klay2+(klay4/2)), z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volGlue, 0, new TGeoCombiTrans(x,y-(kConeOutRadius+klay3+klay2+(klay4)/2)+0.00005, z, new TGeoRotation("",0, 0, 0)));
     }
 
      if (fBuildLevel < 1) {
      //Flex Cable or Bus
-      TGeoBBox *kapCable = new TGeoBBox(kStaveWidth/2, klay5/2, zlad);//klay5/2
+      TGeoBBox *kapCable = new TGeoBBox(kStaveWidth/2, klay5/2, zsta);//klay5/2
       TGeoVolume *volCable=new TGeoVolume("FlexCable", kapCable, medFlexCable);
       volCable->SetLineColor(28);
       volCable->SetFillColor(28); 
-      //      mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+klay3+klay2+klay4+fSensorThick+(klay5)/2)+0.0002, z, new TGeoRotation("",0, 0, 0)));
-      mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+klay3+klay2+klay4+fSensorThick+(klay5)/2)+0.01185, z, new TGeoRotation("",0, 0, 0)));
+      //      mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+klay3+klay2+klay4+fSensorThick+(klay5)/2)+0.0002, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-(kConeOutRadius+klay3+klay2+klay4+fSensorThick+(klay5)/2)+0.01185, z, new TGeoRotation("",0, 0, 0)));
       }
     // Done, return the stave structe
-    return mechLaddVol;
+    return mechStavVol;
 }
 
 // model3
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
-                                                   const Double_t zlad,
+TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xsta,
+                                                   const Double_t zsta,
                                                    const TGeoManager *mgr){
 //
 // Create the mechanical stave structure for Model 3 of TDR
 //
 // Input:
-//         xlad : X length
-//         zlad : Z length
+//         xsta : X length
+//         zsta : Z length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1428,8 +1564,8 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
 
   // Local parameters
     Double_t kConeOutRadius = 0.15/2;
-    Double_t kStaveLength = zlad*2;
-    Double_t kStaveWidth = xlad*2;
+    Double_t kStaveLength = zsta*2;
+    Double_t kStaveWidth = xsta*2;
     Double_t w = kStaveWidth/4;//1/2 of W
     Double_t staveHeight = 0.3;
     Double_t h = staveHeight/2;
@@ -1447,9 +1583,9 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
        Double_t ang1 = 0*TMath::DegToRad();
        Double_t ang2 = 0*TMath::DegToRad();
        Double_t ang3 = 0*TMath::DegToRad();
-       Int_t modules = 4;
+       Int_t chips = 4;
        Double_t headWidth=0.25;
-       Double_t smcLength=kStaveLength/modules-2*headWidth;//6.25;
+       Double_t smcLength=kStaveLength/chips-2*headWidth;//6.25;
        Double_t smcWidth=kStaveWidth;
        Double_t smcSide1Thick=0.03;
        Double_t vaporThick=0.032;
@@ -1462,7 +1598,7 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
 
 
     char volname[30];
-    snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSLadderPattern(), fLayerNumber);
+    snprintf(volname, 30, "%s%d_StaveStruct", AliITSUGeomTGeo::GetITSStavePattern(), fLayerNumber);
     
     // detailed structure ++++++++++++++
     Double_t z=0, y=0-0.007, x=0;
@@ -1470,10 +1606,10 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
     // Polimide micro channels numbers
     Double_t yMC = y-h+0.01;
     Int_t nb = (Int_t)(kStaveWidth/0.1)+1;
-    Double_t xladMC = (nb*0.1-0.08)/2;
+    Double_t xstaMC = (nb*0.1-0.08)/2;
 
 
-    TGeoVolume *mechLaddVol = 0;
+    TGeoVolume *mechStavVol = 0;
     if (fBuildLevel < 5) {
       // world (trapezoid)
       TGeoXtru *mechStruct = new TGeoXtru(2); //z sections
@@ -1482,10 +1618,10 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       mechStruct->DefinePolygon(5,xv,yv);
       mechStruct->DefineSection(0,-kStaveLength-0.1,0,0,1.);
       mechStruct->DefineSection(1,kStaveLength+0.1,0,0,1.);
-      mechLaddVol = new TGeoVolume(volname, mechStruct, medAir);
-      mechLaddVol->SetLineColor(12);
-      mechLaddVol->SetFillColor(12); 
-      mechLaddVol->SetVisibility(kTRUE);
+      mechStavVol = new TGeoVolume(volname, mechStruct, medAir);
+      mechStavVol->SetLineColor(12);
+      mechStavVol->SetFillColor(12); 
+      mechStavVol->SetVisibility(kTRUE);
 
        // Silicon micro channels numbers
       
@@ -1494,79 +1630,79 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       volTM0a->SetLineColor(35);
       volTM0a->SetFillColor(35); 
 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0a, 0, new TGeoCombiTrans(x,yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));
-      mechLaddVol->AddNode(volTM0a, 1, new TGeoCombiTrans(x,yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0a, 0, new TGeoCombiTrans(x,yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));
+      mechStavVol->AddNode(volTM0a, 1, new TGeoCombiTrans(x,yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));
       }
       TGeoBBox *tM0c=new TGeoBBox(0.3/2, 0.003/2,smcLength/2);
       TGeoVolume *volTM0c=new TGeoVolume("microChanTop2", tM0c, medKapton);
       volTM0c->SetLineColor(35);
       volTM0c->SetFillColor(35); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0c, 0, new TGeoCombiTrans(x+(smcWidth/2)-(0.3/2),yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));
-      mechLaddVol->AddNode(volTM0c, 1, new TGeoCombiTrans(x-(smcWidth/2)+(0.3/2),yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0c, 0, new TGeoCombiTrans(x+(smcWidth/2)-(0.3/2),yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));
+      mechStavVol->AddNode(volTM0c, 1, new TGeoCombiTrans(x-(smcWidth/2)+(0.3/2),yMC+0.03, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0c1=new TGeoBBox(0.2225/2, 0.003/2,smcLength/2);
       TGeoVolume *volTM0c1=new TGeoVolume("microChanBot1", tM0c1, medKapton);
       volTM0c1->SetLineColor(6);
       volTM0c1->SetFillColor(6); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0c1, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-(0.2225/2),yMC+0.03-hh-(0.003), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-      mechLaddVol->AddNode(volTM0c1, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick)+(0.2225/2),yMC+0.03-hh-(0.003), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0c1, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-(0.2225/2),yMC+0.03-hh-(0.003), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0c1, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick)+(0.2225/2),yMC+0.03-hh-(0.003), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0c2=new TGeoBBox(0.072/2, 0.003/2,smcLength/2);
       TGeoVolume *volTM0c2=new TGeoVolume("microChanBot2", tM0c2, medKapton);
       volTM0c2->SetLineColor(35);
       volTM0c2->SetFillColor(35); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0c2, 0, new TGeoCombiTrans(x+smcWidth/2-(0.072/2),yMC+0.03-(0.035+0.0015)-(0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0c2, 0, new TGeoCombiTrans(x+smcWidth/2-(0.072/2),yMC+0.03-(0.035+0.0015)-(0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0c2r=new TGeoBBox(0.068/2, 0.003/2,smcLength/2);
       TGeoVolume *volTM0c2r=new TGeoVolume("microChanBot3", tM0c2r, medKapton);
       volTM0c2r->SetLineColor(35);
       volTM0c2r->SetFillColor(35); 
-      for(Int_t  mo=1; mo<=modules; mo++) {      
-      mechLaddVol->AddNode(volTM0c2r, 0, new TGeoCombiTrans(x-smcWidth/2+(0.068/2),yMC+0.03-(0.035+0.0015)-(0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {      
+      mechStavVol->AddNode(volTM0c2r, 0, new TGeoCombiTrans(x-smcWidth/2+(0.068/2),yMC+0.03-(0.035+0.0015)-(0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0d=new TGeoBBox(smcSide1Thick/2, 0.035/2,smcLength/2);
       TGeoVolume *volTM0d=new TGeoVolume("microChanSide1", tM0d, medKapton);
       volTM0d->SetLineColor(12);
       volTM0d->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0d, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-      mechLaddVol->AddNode(volTM0d, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0d, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0d, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
 
       TGeoBBox *tM0d1=new TGeoBBox(smcSide2Thick/2, 0.035/2,smcLength/2);
       TGeoVolume *volTM0d1=new TGeoVolume("microChanSide2", tM0d1, medKapton);
       volTM0d1->SetLineColor(12);
       volTM0d1->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0d1, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick/2),yMC+0.03-(0.003+0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-      mechLaddVol->AddNode(volTM0d1, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick/2),yMC+0.03-(0.003+0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0d1, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick/2),yMC+0.03-(0.003+0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0d1, 1, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick/2),yMC+0.03-(0.003+0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0d2=new TGeoBBox(smcSide3Thick/2, (hh+0.003)/2, smcLength/2);
       TGeoVolume *volTM0d2=new TGeoVolume("microChanSide3", tM0d2, medKapton);
       volTM0d2->SetLineColor(12);
       volTM0d2->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0d2, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick/2),yMC+0.03-(0.003+hh+0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0d2, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick/2),yMC+0.03-(0.003+hh+0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0d2r=new TGeoBBox(smcSide4Thick/2, (hh+0.003)/2, smcLength/2);
       TGeoVolume *volTM0d2r=new TGeoVolume("microChanSide4", tM0d2r, medKapton);
       volTM0d2r->SetLineColor(12);
       volTM0d2r->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0d2r, 0, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick/2),yMC+0.03-(0.003+hh+0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0d2r, 0, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick/2),yMC+0.03-(0.003+hh+0.003)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0e=new TGeoBBox(smcSide5Thick/2, hh/2,smcLength/2);
       TGeoVolume *volTM0e=new TGeoVolume("microChanSide5", tM0e, medKapton);    
       volTM0e->SetLineColor(12);
       volTM0e->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
+      for(Int_t  mo=1; mo<=chips; mo++) {
       for (Int_t ie=0;ie<11;ie++) {
-       mechLaddVol->AddNode(volTM0e, 0, new TGeoCombiTrans(x-(ie*(smcSpace+smcSide5Thick))+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-smcSpace-(smcSide5Thick/2),yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-       mechLaddVol->AddNode(volTM0e, 1, new TGeoCombiTrans(x+(ie*(smcSpace+smcSide5Thick))-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick)+smcSpace+(smcSide5Thick/2),yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+       mechStavVol->AddNode(volTM0e, 0, new TGeoCombiTrans(x-(ie*(smcSpace+smcSide5Thick))+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-smcSpace-(smcSide5Thick/2),yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+       mechStavVol->AddNode(volTM0e, 1, new TGeoCombiTrans(x+(ie*(smcSpace+smcSide5Thick))-smcWidth/2+(smcSide1Thick)+(liquidThick)+(smcSide2Thick)+(smcSide4Thick)+smcSpace+(smcSide5Thick/2),yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
          }
       }
       
@@ -1577,9 +1713,9 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       Double_t smcCloseWallliquid=smcWidth/2-smcSide1Thick-liquidThick-smcSide2Thick-smcSide4Thick-12*smcSpace-11*smcSide5Thick;
       volTM0f->SetLineColor(12);
       volTM0f->SetFillColor(12); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-       mechLaddVol->AddNode(volTM0f, 0, new TGeoCombiTrans(x+smcCloseWallvapor-(0.02)/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-       mechLaddVol->AddNode(volTM0f, 1, new TGeoCombiTrans(x-smcCloseWallliquid+(0.02)/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+       mechStavVol->AddNode(volTM0f, 0, new TGeoCombiTrans(x+smcCloseWallvapor-(0.02)/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+       mechStavVol->AddNode(volTM0f, 1, new TGeoCombiTrans(x-smcCloseWallliquid+(0.02)/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       //Head(back) microchannel
 
@@ -1587,59 +1723,59 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       TGeoVolume *volTM0hb=new TGeoVolume("microChanHeadBackBottom1", tM0hb, medKapton);
       volTM0hb->SetLineColor(4);
       volTM0hb->SetFillColor(4); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0hb, 0, new TGeoCombiTrans(x,yMC+0.03-0.0145-(0.025/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-      mechLaddVol->AddNode(volTM0hb, 1, new TGeoCombiTrans(x,yMC+0.03-0.0145-(0.025)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0hb, 0, new TGeoCombiTrans(x,yMC+0.03-0.0145-(0.025/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0hb, 1, new TGeoCombiTrans(x,yMC+0.03-0.0145-(0.025)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(headWidth/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0h1=new TGeoBBox(smcWidth/2, 0.013/2, 0.05/2);
       TGeoVolume *volTM0h1=new TGeoVolume("microChanHeadBackBottom2", tM0h1, medKapton);
       volTM0h1->SetLineColor(5);
       volTM0h1->SetFillColor(5); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0h1, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-headWidth+(0.05/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0h1, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-headWidth+(0.05/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0h2=new TGeoBBox(smcWidth/2, 0.003/2, 0.18/2);
       TGeoVolume *volTM0h2=new TGeoVolume("microChanHeadBackBottom7", tM0h2, medKapton);
       volTM0h2->SetLineColor(6);
       volTM0h2->SetFillColor(6);
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0h2, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-0.01-(0.003/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-0.02-(0.18/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0h2, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-0.01-(0.003/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-0.02-(0.18/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0h3=new TGeoBBox(smcWidth/2, 0.013/2, 0.02/2);
       TGeoVolume *volTM0h3=new TGeoVolume("microChanHeadBackBottom3", tM0h3, medKapton);
       volTM0h3->SetLineColor(5);
       volTM0h3->SetFillColor(5); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0h3, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(0.02/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0h3, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth-smcLength/2-(0.02/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0b1=new TGeoBBox(smcWidth/2, 0.013/2, 0.03/2);
       TGeoVolume *volTM0b1=new TGeoVolume("microChanHeadBackBottom4", tM0b1, medKapton);
       volTM0b1->SetLineColor(5);
       volTM0b1->SetFillColor(5); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0b1, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+headWidth-(0.03/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0b1, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+headWidth-(0.03/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0b2=new TGeoBBox(smcWidth/2, 0.003/2, 0.2/2);
       TGeoVolume *volTM0b2=new TGeoVolume("microChanHeadBackBottom5", tM0b2, medKapton);
       volTM0b2->SetLineColor(6);
       volTM0b2->SetFillColor(6); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0b2, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-0.01-(0.003/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+0.02+(0.2/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0b2, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-0.01-(0.003/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+0.02+(0.2/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0b3=new TGeoBBox(smcWidth/2, 0.013/2, 0.02/2);
       TGeoVolume *volTM0b3=new TGeoVolume("microChanHeadBackBottom6", tM0b3, medKapton);
       volTM0b3->SetLineColor(5);
       volTM0b3->SetFillColor(5); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0b3, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(0.02/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0b3, 0, new TGeoCombiTrans(x,yMC+0.03-0.0015-(0.013/2), z+(mo-3)*kStaveLength/4+smcLength/2+headWidth+smcLength/2+(0.02/2), new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
      
-      TGeoBBox *tM0b=new TGeoBBox(0.02/2, 0.02/2, zlad);
+      TGeoBBox *tM0b=new TGeoBBox(0.02/2, 0.02/2, zsta);
       TGeoVolume *volTM0b=new TGeoVolume("microChanWalls", tM0b, medKapton);
       volTM0b->SetLineColor(35);
       volTM0b->SetFillColor(35); 
       for (Int_t ib=0;ib<nb;ib++) {
-       //mechLaddVol->AddNode(volTM0b, ib, new TGeoCombiTrans(x+ib*0.1-xladMC+0.01,yMC, z, new TGeoRotation("",0, 0, 0)));
+       //mechStavVol->AddNode(volTM0b, ib, new TGeoCombiTrans(x+ib*0.1-xstaMC+0.01,yMC, z, new TGeoRotation("",0, 0, 0)));
       }
       
       } 
@@ -1652,15 +1788,15 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       TGeoVolume *volTM0dv=new TGeoVolume("microChanVapor", tM0dv, medWater);
       volTM0dv->SetLineColor(2);
       volTM0dv->SetFillColor(2);
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0dv, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0dv, 0, new TGeoCombiTrans(x+smcWidth/2-(smcSide1Thick)-(vaporThick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       TGeoBBox *tM0dl=new TGeoBBox(liquidThick/2, 0.035/2,smcLength/2);
       TGeoVolume *volTM0dl=new TGeoVolume("microChanLiquid", tM0dl, medWater);
       volTM0dl->SetLineColor(3);
       volTM0dl->SetFillColor(3); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
-      mechLaddVol->AddNode(volTM0dl, 0, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+      for(Int_t  mo=1; mo<=chips; mo++) {
+      mechStavVol->AddNode(volTM0dl, 0, new TGeoCombiTrans(x-smcWidth/2+(smcSide1Thick)+(liquidThick/2),yMC+0.03-0.0015-(0.035)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       // small cooling fluid now using water wait for freeon value  
       TGeoBBox *tM0dlq=new TGeoBBox(smcSpace/2, hh/2,smcLength/2);
@@ -1671,10 +1807,10 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       TGeoVolume *volTM0dvp=new TGeoVolume("microChanVapor", tM0dvp, medWater);
       volTM0dvp->SetLineColor(2);
       volTM0dvp->SetFillColor(2); 
-      for(Int_t  mo=1; mo<=modules; mo++) {
+      for(Int_t  mo=1; mo<=chips; mo++) {
       for (Int_t is=0;is<12;is++) {
-       mechLaddVol->AddNode(volTM0dlq, 0, new TGeoCombiTrans(x+(is*(smcSpace+smcSide5Thick))-smcWidth/2+(smcSide1Thick)+(vaporThick)+(smcSide2Thick)+(smcSide3Thick)+smcSpace/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
-       mechLaddVol->AddNode(volTM0dvp, 1, new TGeoCombiTrans(x-(is*(smcSpace+smcSide5Thick))+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-smcSpace/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+       mechStavVol->AddNode(volTM0dlq, 0, new TGeoCombiTrans(x+(is*(smcSpace+smcSide5Thick))-smcWidth/2+(smcSide1Thick)+(vaporThick)+(smcSide2Thick)+(smcSide3Thick)+smcSpace/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
+       mechStavVol->AddNode(volTM0dvp, 1, new TGeoCombiTrans(x-(is*(smcSpace+smcSide5Thick))+smcWidth/2-(smcSide1Thick)-(vaporThick)-(smcSide2Thick)-(smcSide3Thick)-smcSpace/2,yMC+0.03-(0.003+hh)/2, z+(mo-3)*kStaveLength/4+smcLength/2+headWidth, new TGeoRotation("",ang1, ang2, ang3)));//("",0, 0, 0)));
       }
       }
 
@@ -1693,16 +1829,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       volT1->SetLineColor(12);
       volT1->SetFillColor(12); 
       for(int i=0;i<loop;i++){//i<30;i++){
-               mechLaddVol->AddNode(volT1,4*i+0,
+               mechStavVol->AddNode(volT1,4*i+0,
                                    new TGeoCombiTrans(x+w,y-h+0.04+filHeight/2,z-kStaveLength/2+(4*l*i)+s1/2, 
                                                       new TGeoRotation("volT1",-90,alpha,0)));
-       mechLaddVol->AddNode(volT1,4*i+1,
+       mechStavVol->AddNode(volT1,4*i+1,
                                    new TGeoCombiTrans(x-w,y-h+0.04+filHeight/2,z-kStaveLength/2+(4*l*i)+s1/2, 
                                                       new TGeoRotation("volT1",90,alpha,0)));
-       mechLaddVol->AddNode(volT1,4*i+2,
+       mechStavVol->AddNode(volT1,4*i+2,
                                    new TGeoCombiTrans(x+w,y-h+0.04+filHeight/2,z-kStaveLength/2+2*l+(i*4*l)+s1/2, 
                                                       new TGeoRotation("volT1",-90,-alpha,0)));
-       mechLaddVol->AddNode(volT1,4*i+3,
+       mechStavVol->AddNode(volT1,4*i+3,
                                    new TGeoCombiTrans(x-w,y-h+0.04+filHeight/2,z-kStaveLength/2+2*l+(i*4*l)+s1/2, 
                                                       new TGeoRotation("volT1",-90,+alpha,0)));
        }
@@ -1714,16 +1850,16 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
       volT2->SetLineColor(12);
       volT2->SetFillColor(12); 
       for(int i=0;i<loop;i++){ //i<30;i++){
-               mechLaddVol->AddNode(volT2,4*i+0,
+               mechStavVol->AddNode(volT2,4*i+0,
                                    new TGeoCombiTrans(x+w,y+0.04+filHeight/2,z-kStaveLength/2+(i*4*l)+s1/2,
                                                       new TGeoRotation("volT2",90,90-alpha,90-beta)));
-       mechLaddVol->AddNode(volT2,4*i+1,
+       mechStavVol->AddNode(volT2,4*i+1,
                                    new TGeoCombiTrans(x-w,y+0.04+filHeight/2,z-kStaveLength/2+(i*4*l)+s1/2,
                                                       new TGeoRotation("volT2",90,-90+alpha,-90+beta)));
-       mechLaddVol->AddNode(volT2,4*i+2,
+       mechStavVol->AddNode(volT2,4*i+2,
                                    new TGeoCombiTrans(x+w,y+0.04+filHeight/2,z-kStaveLength/2+2*l+(i*4*l)+s1/2,
                                                       new TGeoRotation("volT2",90,-90+alpha,90-beta)));
-       mechLaddVol->AddNode(volT2,4*i+3,
+       mechStavVol->AddNode(volT2,4*i+3,
                                    new TGeoCombiTrans(x-w,y+0.04+filHeight/2,z-kStaveLength/2+2*l+(i*4*l)+s1/2, 
                                                       new TGeoRotation("volT2",90,90-alpha,-90+beta)));
        }
@@ -1732,50 +1868,48 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelInnerB3(const Double_t xlad,
     if (fBuildLevel < 2) {
 
       // Glue Filament and Silicon MicroChannel
-      TGeoBBox *tM0=new TGeoBBox(xladMC/5, klay4/2, zlad);
+      TGeoBBox *tM0=new TGeoBBox(xstaMC/5, klay4/2, zsta);
       TGeoVolume *volTM0=new TGeoVolume("glueFM", tM0,medGlue );
       volTM0->SetLineColor(5);
       volTM0->SetFillColor(5); 
-      mechLaddVol->AddNode(volTM0, 0, new TGeoCombiTrans(x-xlad/2-0.25,0.03+yMC, z, new TGeoRotation("",0, 0, 0)));
-      mechLaddVol->AddNode(volTM0, 1, new TGeoCombiTrans(x+xlad/2+0.25,0.03+yMC, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0, 0, new TGeoCombiTrans(x-xsta/2-0.25,0.03+yMC, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volTM0, 1, new TGeoCombiTrans(x+xsta/2+0.25,0.03+yMC, z, new TGeoRotation("",0, 0, 0)));
 
             
       // Glue microchannel and sensor
-      TGeoBBox *glueM = new TGeoBBox(xladMC/5, klay4/2, zlad);
+      TGeoBBox *glueM = new TGeoBBox(xstaMC/5, klay4/2, zsta);
       TGeoVolume *volGlueM=new TGeoVolume("glueMS", glueM, medGlue);
       volGlueM->SetLineColor(5);
       volGlueM->SetFillColor(5); 
-      mechLaddVol->AddNode(volGlueM, 0, new TGeoCombiTrans(x-xlad/2-0.25,yMC-0.01, z, new TGeoRotation("",0, 0, 0)));
-      mechLaddVol->AddNode(volGlueM, 1, new TGeoCombiTrans(x+xlad/2+0.25,yMC-0.01, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volGlueM, 0, new TGeoCombiTrans(x-xsta/2-0.25,yMC-0.01, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volGlueM, 1, new TGeoCombiTrans(x+xsta/2+0.25,yMC-0.01, z, new TGeoRotation("",0, 0, 0)));
      
        // Glue sensor and kapton
-      TGeoBBox *glue = new TGeoBBox(xlad, klay4/2, zlad);
+      TGeoBBox *glue = new TGeoBBox(xsta, klay4/2, zsta);
       TGeoVolume *volGlue=new TGeoVolume("glueSensorBus", glue, medGlue);
       volGlue->SetLineColor(5);
       volGlue->SetFillColor(5); 
-       mechLaddVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.154-fSensorThick-klay4/2, z, new TGeoRotation("",0, 0, 0)));
+       mechStavVol->AddNode(volGlue, 1, new TGeoCombiTrans(x, y-0.154-fSensorThick-klay4/2, z, new TGeoRotation("",0, 0, 0)));
     }      
 
     if (fBuildLevel < 1) {
-      TGeoBBox *kapCable = new TGeoBBox(xlad, klay5/2, zlad);
+      TGeoBBox *kapCable = new TGeoBBox(xsta, klay5/2, zsta);
       TGeoVolume *volCable=new TGeoVolume("Flexcable", kapCable, medFlexCable);
       volCable->SetLineColor(28);
       volCable->SetFillColor(28); 
-      mechLaddVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.154-fSensorThick-klay4-klay5/2, z, new TGeoRotation("",0, 0, 0)));
+      mechStavVol->AddNode(volCable, 0, new TGeoCombiTrans(x, y-0.154-fSensorThick-klay4-klay5/2, z, new TGeoRotation("",0, 0, 0)));
     }
 
   // Done, return the stave structur
-    return mechLaddVol;
+    return mechStavVol;
  }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveOuterB(const Double_t xlad,
-                                             const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateStaveOuterB(const TGeoManager *mgr){
 //
-// Create the module stave for the Outer Barrel
+// Create the chip stave for the Outer Barrel
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1783,36 +1917,35 @@ TGeoVolume* AliITSUv1Layer::CreateStaveOuterB(const Double_t xlad,
 // Return:
 //
 // Created:      20 Dec 2013  Mario Sitta
+// Updated:      12 Mar 2014  Mario Sitta
 //
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   switch (fStaveModel) {
     case AliITSUv1::kOBModelDummy:
-      mechLaddVol = CreateStaveModelOuterBDummy(xlad,mgr);
+      mechStavVol = CreateStaveModelOuterBDummy(mgr);
       break;
     case AliITSUv1::kOBModel0:
-      mechLaddVol = CreateStaveModelOuterB0(xlad,mgr);
+      mechStavVol = CreateStaveModelOuterB0(mgr);
       break;
     case AliITSUv1::kOBModel1:
-      mechLaddVol = CreateStaveModelOuterB1(xlad,mgr);
+      mechStavVol = CreateStaveModelOuterB1(mgr);
       break;
     default:
       AliFatal(Form("Unknown stave model %d",fStaveModel));
       break;
   }
 
-  return mechLaddVol; 
+  return mechStavVol; 
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterBDummy(const Double_t ,
-                                                       const TGeoManager *) const {
+TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterBDummy(const TGeoManager *) const {
 //
 // Create dummy stave
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1828,15 +1961,13 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterBDummy(const Double_t ,
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB0(const Double_t ,
-                                                   const TGeoManager *) const {
+TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB0(const TGeoManager *mgr){
 //
 // Creation of the mechanical stave structure for the Outer Barrel as in v0
-// is done directly in CreateLadder, so this method does nothing
-// (doing it there is simpler, since all needed dimensions are known)
+// (we fake the module and halfstave volumes to have always
+// the same formal geometry hierarchy)
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1844,20 +1975,69 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB0(const Double_t ,
 // Return:
 //
 // Created:      20 Dec 2013  Mario Sitta
+// Updated:      12 Mar 2014  Mario Sitta
 //
 
+  // Local variables
+  Double_t xmod, ymod, zmod;
+  Double_t xlen, ylen, zlen;
+  Double_t ypos, zpos;
+  char volname[30];
+  
+  // First create all needed shapes
+
+  // The chip
+  xlen = fgkOBHalfStaveWidth;
+  ylen = 0.5*fStaveThick; // TO BE CHECKED
+  zlen = fgkOBModuleZLength/2;
+
+  TGeoVolume *chipVol = CreateChipInnerB(xlen, ylen, zlen);
+
+  xmod = ((TGeoBBox*)chipVol->GetShape())->GetDX();
+  ymod = ((TGeoBBox*)chipVol->GetShape())->GetDY();
+  zmod = ((TGeoBBox*)chipVol->GetShape())->GetDZ();
+
+  TGeoBBox *module = new TGeoBBox(xmod, ymod, zmod);
+
+  zlen = fgkOBModuleZLength*fNModules;
+  TGeoBBox *hstave = new TGeoBBox(xlen, ylen, zlen/2);
+
+
+  // We have all shapes: now create the real volumes
+
+  TGeoMedium *medAir = mgr->GetMedium("ITS_AIR$");
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSModulePattern(), fLayerNumber);
+  TGeoVolume *modVol = new TGeoVolume(volname, module, medAir);
+  modVol->SetVisibility(kTRUE);
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSHalfStavePattern(), fLayerNumber);
+  TGeoVolume *hstaveVol  = new TGeoVolume(volname, hstave, medAir);
+
+
+  // Finally build it up
+  modVol->AddNode(chipVol, 0);
+  fHierarchy[kChip]=1;
+
+  for (Int_t j=0; j<fNModules; j++) {
+    ypos = 0.021;  // Remove small overlap - M.S: 21may13
+    zpos = -hstave->GetDZ() + j*2*zmod + zmod;
+    hstaveVol->AddNode(modVol, j, new TGeoTranslation(0, ypos, zpos));
+    fHierarchy[kModule]++;
+  }
+
+
   // Done, return the stave structure
-  return 0;
+  return hstaveVol;
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB1(const Double_t xlad,
-                                                   const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB1(const TGeoManager *mgr){
 //
-// Create the mechanical stave structure for the Outer Barrel as in TDR
+// Create the mechanical half stave structure
+// for the Outer Barrel as in TDR
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -1866,251 +2046,303 @@ TGeoVolume* AliITSUv1Layer::CreateStaveModelOuterB1(const Double_t xlad,
 //
 // Created:      20 Nov 2013  Anastasia Barbano
 // Updated:      16 Jan 2014  Mario Sitta
+// Updated:      24 Feb 2014  Mario Sitta
 //
 
-  // Materials defined in AliITSUv0
+
+  // Local parameters
+  Double_t yFlex1      = fgkOBFlexCableAlThick;
+  Double_t yFlex2      = fgkOBFlexCableKapThick;
+  Double_t flexOverlap = 5; // to be checked
+  Double_t xHalfSt     = fgkOBHalfStaveWidth/2;
+  Double_t rCoolMin    = fgkOBCoolTubeInnerD/2;
+  Double_t rCoolMax    = rCoolMin + fgkOBCoolTubeThick;
+  Double_t kLay1       = 0.004; // to be checked
+  Double_t kLay2       = fgkOBGraphiteFoilThick;
+
+  Double_t xlen, ylen;
+  Double_t ymod, zmod;
+  Double_t xtru[12], ytru[12];
+  Double_t xpos, ypos, ypos1, zpos/*, zpos5cm*/;
+  Double_t zlen;
+  char volname[30];
+
+
+  zlen = (fNModules*fgkOBModuleZLength + (fNModules-1)*fgkOBModuleGap)/2;
+
+
+  // First create all needed shapes
+
+  TGeoVolume *moduleVol = CreateModuleOuterB();
+  moduleVol->SetVisibility(kTRUE);
+  ymod = ((TGeoBBox*)(moduleVol->GetShape()))->GetDY();
+  zmod = ((TGeoBBox*)(moduleVol->GetShape()))->GetDZ();
+
+  TGeoBBox *busAl  = new TGeoBBox("BusAl",  xHalfSt, fgkOBBusCableAlThick/2,
+                                           zlen);
+  TGeoBBox *busKap = new TGeoBBox("BusKap", xHalfSt, fgkOBBusCableKapThick/2,
+                                           zlen);
+
+  TGeoBBox *coldPlate  = new TGeoBBox("ColdPlate", fgkOBHalfStaveWidth/2,
+                                     fgkOBColdPlateThick/2, zlen);
+
+  TGeoTube *coolTube   = new TGeoTube("CoolingTube", rCoolMin, rCoolMax, zlen);
+  TGeoTube *coolWater  = new TGeoTube("CoolingWater", 0.,  rCoolMin, zlen);
+
+  xlen = xHalfSt - fgkOBCoolTubeXDist/2 - coolTube->GetRmax();
+  TGeoBBox *graphlat    = new TGeoBBox("GraphLateral", xlen/2, kLay2/2, zlen);
+
+  xlen = fgkOBCoolTubeXDist/2 - coolTube->GetRmax();
+  TGeoBBox *graphmid    = new TGeoBBox("GraphMiddle", xlen, kLay2/2, zlen);
+
+  ylen = coolTube->GetRmax() - kLay2;
+  TGeoBBox *graphvert   = new TGeoBBox("GraphVertical", kLay2/2, ylen/2, zlen);
+
+  TGeoTubeSeg *graphtub = new TGeoTubeSeg("GraphTube", rCoolMax,
+                                         rCoolMax+kLay2, zlen,
+                                         180., 360.);
+
+  xlen = xHalfSt - fgkOBCoolTubeXDist/2 - coolTube->GetRmax() - kLay2;
+  TGeoBBox *fleeclat    = new TGeoBBox("FleecLateral", xlen/2, kLay1/2, zlen);
+
+  xlen = fgkOBCoolTubeXDist/2 - coolTube->GetRmax() - kLay2;
+  TGeoBBox *fleecmid    = new TGeoBBox("FleecMiddle", xlen, kLay1/2, zlen);
+
+  ylen = coolTube->GetRmax() - kLay2 - kLay1;
+  TGeoBBox *fleecvert   = new TGeoBBox("FleecVertical", kLay1/2, ylen/2, zlen);
+
+  TGeoTubeSeg *fleectub = new TGeoTubeSeg("FleecTube", rCoolMax+kLay2,
+                                         rCoolMax+kLay1+kLay2,
+                                         zlen, 180., 360.);
+
+  TGeoBBox *flex1_5cm  = new TGeoBBox("Flex1MV_5cm",xHalfSt,yFlex1/2,flexOverlap/2);
+  TGeoBBox *flex2_5cm  = new TGeoBBox("Flex2MV_5cm",xHalfSt,yFlex2/2,flexOverlap/2);
+
+  // The half stave container (an XTru to avoid overlaps between neightbours)
+  xtru[0] = xHalfSt;
+  ytru[0] = 0;
+  xtru[1] = xtru[0];
+  ytru[1] = -2*(ymod + busAl->GetDY() + busKap->GetDY() + coldPlate->GetDY()
+               + graphlat->GetDY() + fleeclat->GetDY());
+  xtru[2] = fgkOBCoolTubeXDist/2 + fleectub->GetRmax();
+  ytru[2] = ytru[1];
+  xtru[3] = xtru[2];
+  ytru[3] = ytru[2] - (coolTube->GetRmax() + fleectub->GetRmax());
+  xtru[4] = fgkOBCoolTubeXDist/2 - fleectub->GetRmax();
+  ytru[4] = ytru[3];
+  xtru[5] = xtru[4];
+  ytru[5] = ytru[2];
+  for (Int_t i = 0; i<6; i++) {
+    xtru[6+i] = -xtru[5-i];
+    ytru[6+i] =  ytru[5-i];
+  }
+  TGeoXtru *halfStave = new TGeoXtru(2);
+  halfStave->DefinePolygon(12, xtru, ytru);
+  halfStave->DefineSection(0,-fZLength/2);
+  halfStave->DefineSection(1, fZLength/2);
+
+
+  // We have all shapes: now create the real volumes
+
   TGeoMedium *medAluminum     = mgr->GetMedium("ITS_ALUMINUM$");
   TGeoMedium *medCarbon       = mgr->GetMedium("ITS_CARBON$");
   TGeoMedium *medKapton       = mgr->GetMedium("ITS_KAPTON(POLYCH2)$");
-  TGeoMedium *medGlue         = mgr->GetMedium("ITS_GLUE$");
   TGeoMedium *medWater        = mgr->GetMedium("ITS_WATER$");
   TGeoMedium *medCarbonFleece = mgr->GetMedium("ITS_CarbonFleece$"); 
   TGeoMedium *medFGS003       = mgr->GetMedium("ITS_FGS003$"); //amec thermasol
   TGeoMedium *medAir          = mgr->GetMedium("ITS_AIR$");
 
 
-  // Local parameters
-  Double_t modGap             = fgkOBModuleGap;
-  Double_t yFlex1             = fgkOBFlexCable1Thick;
-  Double_t yFlex2             = fgkOBFlexCable2Thick;
-  Double_t yBus1              = fgkOBBusCable1Thick;
-  Double_t yBus2              = fgkOBBusCable2Thick;
-  Double_t xModPlate          = fgkOBHalfStaveWidth;
-  Double_t yModPlate          = fgkOBCarbonPlateThick;
-  Double_t xCPlate            = fgkOBHalfStaveWidth;
-  Double_t yCPlate            = fgkOBColdPlateThick;
-  Double_t yGlue              = fgkOBGlueThick;
-  Double_t flexOverlap        = 5;
-  Double_t deltaY             = 0.176;
-  Double_t xOverlap           = 0.23;       //overlapping of the halfStaves to cover the dead zone of sensors
-  Double_t zMod               = fgkOBModuleZLength;
-  Double_t xHalfSt            = fgkOBHalfStaveWidth/2;
-  Double_t xPos               = xOverlap/2 - xHalfSt;
-  Double_t xlen               = xlad;
-  Double_t rMin               = 0.267/2;
-  Double_t rMax               = rMin + 0.0065;
-  Double_t kLay1              = 0.004;      //carbon fleece
-  Double_t kLay2              = 0.003;      //carbon paper
-  Double_t yPos               = kLay1+kLay2;
-  Double_t ylen,zact;
-  Double_t zpos, zpos5cm;
-  Double_t ymod;
-  Double_t zbus;
-  Double_t zlen;
+  TGeoVolume *busAlVol = new TGeoVolume("BusAlVol", busAl , medAluminum);
+  busAlVol->SetLineColor(kCyan);
+  busAlVol->SetFillColor(busAlVol->GetLineColor());
+  busAlVol->SetFillStyle(4000); // 0% transparent
 
+  TGeoVolume *busKapVol = new TGeoVolume("BusKapVol", busKap, medKapton);
+  busKapVol->SetLineColor(kBlue);
+  busKapVol->SetFillColor(busKapVol->GetLineColor());
+  busKapVol->SetFillStyle(4000); // 0% transparent
 
-  if (fIsTurbo) xlen = 0.5*fLadderWidth;
-  //ylen    = 0.5*fLadderThick;
-  ymod    = 0.005/2;//0.5*fSensorThick;
-  ylen    = 0.5*(2*kLay1+2*kLay2+2*rMax+yCPlate+yGlue+ yModPlate + ymod + 2*yFlex1 + 2*yFlex2 + yBus1 + yBus2 + deltaY);
-  zact    = fNModules*zMod; //active area 
-  zbus    = zact + (fNModules-1)*modGap; 
-  zlen    = zbus/2;
+  TGeoVolume *coldPlateVol = new TGeoVolume("ColdPlateVol",
+                                           coldPlate, medCarbon);
+  coldPlateVol->SetLineColor(kYellow-3);
+  coldPlateVol->SetFillColor(coldPlateVol->GetLineColor());
+  coldPlateVol->SetFillStyle(4000); // 0% transparent
 
+  TGeoVolume *coolTubeVol  = new TGeoVolume("CoolingTubeVol",
+                                           coolTube, medKapton);
+  coolTubeVol->SetLineColor(kGray);
+  coolTubeVol->SetFillColor(coolTubeVol->GetLineColor());
+  coolTubeVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *coolWaterVol = new TGeoVolume("CoolingWaterVol",
+                                           coolWater,medWater);
+  coolWaterVol->SetLineColor(kBlue);
+  coolWaterVol->SetFillColor(coolWaterVol->GetLineColor());
+  coolWaterVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *graphlatVol = new TGeoVolume("GraphiteFoilLateral",
+                                          graphlat, medFGS003);
+  graphlatVol->SetLineColor(kGreen);
+  graphlatVol->SetFillColor(graphlatVol->GetLineColor());
+  graphlatVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *graphmidVol = new TGeoVolume("GraphiteFoilMiddle",
+                                          graphmid, medFGS003);
+  graphmidVol->SetLineColor(kGreen);
+  graphmidVol->SetFillColor(graphmidVol->GetLineColor());
+  graphmidVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *graphvertVol = new TGeoVolume("GraphiteFoilVertical",
+                                           graphvert, medFGS003);
+  graphvertVol->SetLineColor(kGreen);
+  graphvertVol->SetFillColor(graphvertVol->GetLineColor());
+  graphvertVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *graphtubVol = new TGeoVolume("GraphiteFoilPipeCover",
+                                          graphtub, medFGS003);
+  graphtubVol->SetLineColor(kGreen);
+  graphtubVol->SetFillColor(graphtubVol->GetLineColor());
+  graphtubVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *fleeclatVol = new TGeoVolume("CarbonFleeceLateral",
+                                          fleeclat, medCarbonFleece);
+  fleeclatVol->SetLineColor(kViolet);
+  fleeclatVol->SetFillColor(fleeclatVol->GetLineColor());
+  fleeclatVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *fleecmidVol = new TGeoVolume("CarbonFleeceMiddle",
+                                          fleecmid, medCarbonFleece);
+  fleecmidVol->SetLineColor(kViolet);
+  fleecmidVol->SetFillColor(fleecmidVol->GetLineColor());
+  fleecmidVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *fleecvertVol = new TGeoVolume("CarbonFleeceVertical",
+                                           fleecvert, medCarbonFleece);
+  fleecvertVol->SetLineColor(kViolet);
+  fleecvertVol->SetFillColor(fleecvertVol->GetLineColor());
+  fleecvertVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *fleectubVol = new TGeoVolume("CarbonFleecePipeCover",
+                                          fleectub, medCarbonFleece);
+  fleectubVol->SetLineColor(kViolet);
+  fleectubVol->SetFillColor(fleectubVol->GetLineColor());
+  fleectubVol->SetFillStyle(4000); // 0% transparent
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSHalfStavePattern(), fLayerNumber);
+  TGeoVolume *halfStaveVol  = new TGeoVolume(volname, halfStave, medAir);
+//   halfStaveVol->SetLineColor(12);
+//   halfStaveVol->SetFillColor(12); 
+//   halfStaveVol->SetVisibility(kTRUE);
 
-  // First create all needed shapes
 
-  TGeoTube *coolTube   = new TGeoTube("CoolingTube",rMin,rMax,zbus/2);
-  TGeoTube *coolTubeW  = new TGeoTube("CoolingTubeWater",0,rMin,zbus/2);
-  TGeoBBox *coldPlate  = new TGeoBBox("ColdPlate",xCPlate/2,yCPlate/2,zbus/2);
-  TGeoBBox *glue       = new TGeoBBox("Glue",xCPlate/2,yGlue/2,zbus/2);
-  TGeoBBox *modPlate   = new TGeoBBox("CarbonPlate",xModPlate/2,yModPlate/2,zbus/2);
-  TGeoBBox *flex1      = new TGeoBBox("Flex1MV",xHalfSt,yFlex1/2,zMod/2);
-  TGeoBBox *flex2      = new TGeoBBox("Flex2MV",xHalfSt,yFlex2/2,zMod/2);
-  TGeoBBox *flex1_5cm  = new TGeoBBox("Flex1MV_5cm",xHalfSt,yFlex1/2,flexOverlap/2);
-  TGeoBBox *flex2_5cm  = new TGeoBBox("Flex2MV_5cm",xHalfSt,yFlex2/2,flexOverlap/2);
-  TGeoBBox *bus1       = new TGeoBBox("Bus1HV",xHalfSt,yBus1/2,zbus/2);
-  TGeoBBox *bus2       = new TGeoBBox("Bus2HV",xHalfSt,yBus2/2,zbus/2); 
-  TGeoTubeSeg *cone1   = new TGeoTubeSeg(rMax +kLay2,rMax+kLay1+kLay2,zlen,180.,360.);  //Carbon Fleece 
-  TGeoTubeSeg *cone2   = new TGeoTubeSeg(rMax ,rMax+kLay2,zlen,180.,360.);  //Graphite paper 
-  TGeoBBox *box11      = new TGeoBBox((0.95-kLay2-rMax)/2,kLay1/2,zlen);
-  TGeoBBox *box12      = new TGeoBBox((1.11-2*kLay2-2*rMax)/2,kLay1/2,zlen);
-  TGeoBBox *box13      = new TGeoBBox(kLay1/2,(rMax-(kLay1+kLay2))/2,zlen);
-  TGeoBBox *box21      = new TGeoBBox((0.95-rMax)/2,kLay2/2,zlen);
-  TGeoBBox *box22      = new TGeoBBox((1.11-2*rMax)/2,kLay2/2,zlen);
-  TGeoBBox *box23      = new TGeoBBox(kLay2/2,(rMax-kLay2)/2,zlen);
-  TGeoBBox *mechStruct = new TGeoBBox("mechanicalStructure",xlen, ylen, 0.5*fZLength); 
-
-
-  TGeoVolume *modVol       = CreateModuleOuterB(xHalfSt, ymod, zMod);
-  TGeoVolume *coolTubeVol  = new TGeoVolume("CoolingTubeVol",coolTube,medKapton);
-  TGeoVolume *coolTubeWVol = new TGeoVolume("CoolingTubeWaterVol",coolTubeW,medWater);
-  TGeoVolume *coldPlateVol = new TGeoVolume("ColdPlateVol",coldPlate,medCarbon);
-  TGeoVolume *glueVol      = new TGeoVolume("GlueVol",glue,medGlue);
-  TGeoVolume *modPlateVol  = new TGeoVolume("CarbonPlateVol",modPlate,medCarbon);
-  TGeoVolume *flex1Vol     = new TGeoVolume("Flex1Vol",flex1,medAluminum);
-  TGeoVolume *flex2Vol     = new TGeoVolume("Flex2Vol",flex2,medKapton);
   TGeoVolume *flex1_5cmVol = new TGeoVolume("Flex1Vol5cm",flex1_5cm,medAluminum);
   TGeoVolume *flex2_5cmVol = new TGeoVolume("Flex2Vol5cm",flex2_5cm,medKapton);
-  TGeoVolume *bus1Vol      = new TGeoVolume("Bus1Vol",bus1,medAluminum);
-  TGeoVolume *bus2Vol      = new TGeoVolume("Bus2Vol",bus2,medKapton);
-  TGeoVolume *cone1Vol     = new TGeoVolume("CarbonFleecePipeCover",cone1,medCarbonFleece);
-  TGeoVolume *cone2Vol     = new TGeoVolume("GraphitePaperPipeCover",cone2,medFGS003);
-  TGeoVolume *plate11Vol   = new TGeoVolume("CarbonFleeceLR1",box11,medCarbonFleece);
-  TGeoVolume *plate12Vol   = new TGeoVolume("CarbonFleeceMiddle1",box12,medCarbonFleece); 
-  TGeoVolume *plate13Vol   = new TGeoVolume("CarbonFleeceVertical1",box13,medCarbonFleece); 
-  TGeoVolume *plate21Vol   = new TGeoVolume("CarbonFleeceLR2",box21,medFGS003);
-  TGeoVolume *plate22Vol   = new TGeoVolume("CarbonFleeceMiddle2",box22,medFGS003);
-  TGeoVolume *plate23Vol   = new TGeoVolume("CarbonFleeceVertical2",box23,medFGS003);
-  TGeoVolume *mechLaddVol  = new TGeoVolume("mechLadderVolume",mechStruct,medAir);
-
-  mechLaddVol->SetLineColor(12);
-  mechLaddVol->SetFillColor(12); 
-  mechLaddVol->SetVisibility(kTRUE);
 
-  modVol->SetVisibility(kTRUE);
+
   flex1_5cmVol->SetLineColor(kRed);
   flex2_5cmVol->SetLineColor(kGreen);
-  modPlateVol->SetLineColor(kMagenta-8);
-  coolTubeVol->SetLineColor(kGray);
-  coolTubeWVol->SetLineColor(kBlue);
-  coldPlateVol->SetLineColor(kYellow-3);
-  glueVol->SetLineColor(kBlack);
-  flex1Vol->SetLineColor(kRed);
-  flex2Vol->SetLineColor(kGreen);
-  bus1Vol->SetLineColor(kCyan);
-  bus2Vol->SetLineColor(kBlue);
-  cone1Vol->SetFillColor(kViolet);
-  plate11Vol->SetFillColor(kViolet);
-  plate12Vol->SetLineColor(kViolet);
-  plate13Vol->SetLineColor(kViolet);
-  cone2Vol->SetLineColor(kGreen);
-  plate22Vol->SetFillColor(kGreen);
-  plate21Vol->SetLineColor(kGreen);
-  plate23Vol->SetLineColor(kGreen);
-
-
-  //Carbon Fleece
-
-  mechLaddVol->AddNode(plate11Vol,1,new TGeoTranslation(xPos -(1.11/2+rMax+box11->GetDX()+kLay2),-ylen + yPos +2*rMax-kLay2-kLay1/2,0));
-  mechLaddVol->AddNode(plate11Vol,2,new TGeoTranslation(xPos +(1.11/2+rMax+box11->GetDX()+kLay2),-ylen + yPos +2*rMax-kLay2-kLay1/2,0));
-  mechLaddVol->AddNode(plate11Vol,3,new TGeoTranslation(-xPos -(1.11/2+rMax+box11->GetDX()+kLay2),-ylen + yPos +2*rMax-kLay2-kLay1/2 +deltaY,0));
-  mechLaddVol->AddNode(plate11Vol,4,new TGeoTranslation(-xPos +(1.11/2+rMax+box11->GetDX()+kLay2),-ylen + yPos +2*rMax-kLay2-kLay1/2 +deltaY,0));
-  mechLaddVol->AddNode(plate12Vol,1,new TGeoTranslation(xPos ,-ylen + yPos +2*rMax-kLay2-kLay1/2,0));
-  mechLaddVol->AddNode(plate12Vol,2,new TGeoTranslation(-xPos ,-ylen + yPos +2*rMax-kLay2-kLay1/2 + deltaY,0));
-  mechLaddVol->AddNode(plate13Vol,1,new TGeoTranslation(xPos -(1.11/2+rMax+kLay2+box13->GetDX()),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY(),0));
-  mechLaddVol->AddNode(plate13Vol,2,new TGeoTranslation(xPos -1.11/2+rMax+kLay2+box13->GetDX(),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY(),0));
-  mechLaddVol->AddNode(plate13Vol,3,new TGeoTranslation(xPos +(1.11/2+rMax+kLay2+box13->GetDX()),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY(),0));
-  mechLaddVol->AddNode(plate13Vol,4,new TGeoTranslation(xPos +1.11/2-rMax-kLay2-box13->GetDX(),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY(),0));
-  mechLaddVol->AddNode(plate13Vol,5,new TGeoTranslation(-xPos -(1.11/2+rMax+kLay2+box13->GetDX()),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY() +deltaY,0));
-  mechLaddVol->AddNode(plate13Vol,6,new TGeoTranslation(-xPos -1.11/2+rMax+kLay2+box13->GetDX(),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY() +deltaY,0));
-  mechLaddVol->AddNode(plate13Vol,7,new TGeoTranslation(-xPos +(1.11/2+rMax+kLay2+box13->GetDX()),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY() +deltaY,0));
-  mechLaddVol->AddNode(plate13Vol,8,new TGeoTranslation(-xPos +1.11/2-rMax-kLay2-box13->GetDX(),-ylen + yPos +2*rMax-kLay1-kLay2-box13->GetDY() +deltaY,0));
-
-  mechLaddVol->AddNode(cone1Vol,1,new TGeoTranslation(xPos - 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(cone1Vol,2,new TGeoTranslation(xPos + 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(cone1Vol,3,new TGeoTranslation(-xPos - 0.555,-ylen + yPos + rMax + deltaY,0));
-  mechLaddVol->AddNode(cone1Vol,4,new TGeoTranslation(-xPos + 0.555,-ylen + yPos + rMax + deltaY,0));
-
-
-  //Carbon Paper
-
-  mechLaddVol->AddNode(plate21Vol,1,new TGeoTranslation(xPos -(1.11/2+rMax+box21->GetDX()),-ylen + yPos +2*rMax-kLay2/2,0));
-  mechLaddVol->AddNode(plate21Vol,2,new TGeoTranslation(xPos +(1.11/2+rMax+box21->GetDX()) ,-ylen + yPos +2*rMax-kLay2/2,0));
-  mechLaddVol->AddNode(plate21Vol,3,new TGeoTranslation(-xPos -(1.11/2+rMax+box21->GetDX()) ,-ylen + yPos +2*rMax-kLay2/2 +deltaY,0));
-  mechLaddVol->AddNode(plate21Vol,4,new TGeoTranslation(-xPos +(1.11/2+rMax+box21->GetDX()) ,-ylen + yPos +2*rMax-kLay2/2 +deltaY,0));
-  mechLaddVol->AddNode(plate22Vol,1,new TGeoTranslation(xPos ,-ylen + yPos +2*rMax-kLay2/2,0));
-  mechLaddVol->AddNode(plate22Vol,2,new TGeoTranslation(-xPos ,-ylen + yPos +2*rMax-kLay2/2 + deltaY,0));
-  mechLaddVol->AddNode(plate23Vol,1,new TGeoTranslation(xPos -(1.11/2+rMax+box23->GetDX()),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2,0));
-  mechLaddVol->AddNode(plate23Vol,2,new TGeoTranslation(xPos -1.11/2+rMax+box23->GetDX(),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2,0));
-  mechLaddVol->AddNode(plate23Vol,3,new TGeoTranslation(xPos +(1.11/2+rMax+box23->GetDX()),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2,0));
-  mechLaddVol->AddNode(plate23Vol,4,new TGeoTranslation(xPos +1.11/2-rMax-box23->GetDX(),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2,0));
-  mechLaddVol->AddNode(plate23Vol,5,new TGeoTranslation(-xPos -(1.11/2+rMax+box23->GetDX()),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2+deltaY,0));
-  mechLaddVol->AddNode(plate23Vol,6,new TGeoTranslation(-xPos -1.11/2+rMax+box23->GetDX(),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2+deltaY,0));
-  mechLaddVol->AddNode(plate23Vol,7,new TGeoTranslation(-xPos +(1.11/2+rMax+box23->GetDX()),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2+deltaY,0));
-  mechLaddVol->AddNode(plate23Vol,8,new TGeoTranslation(-xPos +1.11/2-rMax-box23->GetDX(),-ylen + yPos +2*rMax-kLay2-(rMax-kLay2)/2+deltaY,0));
-
-  mechLaddVol->AddNode(cone2Vol,1,new TGeoTranslation(xPos - 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(cone2Vol,2,new TGeoTranslation(xPos + 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(cone2Vol,3,new TGeoTranslation(-xPos - 0.555,-ylen + yPos + rMax + deltaY,0));
-  mechLaddVol->AddNode(cone2Vol,4,new TGeoTranslation(-xPos + 0.555,-ylen + yPos + rMax + deltaY,0));
-
-  //Cooling Tubes + water
-
-  mechLaddVol->AddNode(coolTubeVol,1,new TGeoTranslation(xPos - 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(coolTubeWVol,1,new TGeoTranslation(xPos - 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(coolTubeVol,2,new TGeoTranslation(xPos + 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(coolTubeWVol,2,new TGeoTranslation(xPos + 0.555,-ylen + yPos + rMax,0));
-  mechLaddVol->AddNode(coolTubeVol,3,new TGeoTranslation(-xPos - 0.555,-ylen + yPos + rMax + deltaY,0));
-  mechLaddVol->AddNode(coolTubeWVol,3,new TGeoTranslation(-xPos - 0.555,-ylen + yPos + rMax + deltaY,0));
-  mechLaddVol->AddNode(coolTubeVol,4,new TGeoTranslation(-xPos + 0.555,-ylen + yPos + rMax + deltaY,0));
-  mechLaddVol->AddNode(coolTubeWVol,4,new TGeoTranslation(-xPos + 0.555,-ylen + yPos + rMax + deltaY,0));
-
-  //Cold Plate
-
-  mechLaddVol->AddNode(coldPlateVol,1,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate/2,0));
-  mechLaddVol->AddNode(coldPlateVol,2,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate/2 + deltaY,0));
-
-  //Glue
-
-  mechLaddVol->AddNode(glueVol,1,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue/2,0));
-  mechLaddVol->AddNode(glueVol,2,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue/2 + deltaY,0));
-
-  //Module Carbon Plate
-
-  mechLaddVol->AddNode(modPlateVol,1,new TGeoTranslation(xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate/2,0));
-  mechLaddVol->AddNode(modPlateVol,2,new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate/2 + deltaY,0));
-
-  //Bus
-
-  mechLaddVol->AddNode(bus1Vol,1,new TGeoTranslation(xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 2*yFlex2 + yBus1/2,0));
-  mechLaddVol->AddNode(bus1Vol,2,new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 2*yFlex2 + yBus1/2 + deltaY,0));
-  mechLaddVol->AddNode(bus2Vol,1,new TGeoTranslation(xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 2*yFlex2 + yBus1 + yBus2/2,0));
-  mechLaddVol->AddNode(bus2Vol,2,new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 2*yFlex2 + yBus1 + yBus2/2 + deltaY,0));
   
-  //FPC + modules
 
-  for (Int_t j=0; j<fNModules; j++) {
+  // Now build up the half stave
+  ypos = - busKap->GetDY();
+  halfStaveVol->AddNode(busKapVol, 1, new TGeoTranslation(0, ypos, 0));
 
-    zpos = -(zact + (fNModules-1)*modGap)/2 + j*(zMod + modGap) + zMod/2;
-    zpos5cm = -(zact + (fNModules-1)*modGap)/2 + (j+1)*(zMod + modGap) + flexOverlap/2 ;
-
-    mechLaddVol->AddNode(modVol, j, new TGeoTranslation(xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + ymod, zpos));
-    mechLaddVol->AddNode(modVol, fNModules+j, new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + ymod +deltaY, zpos));
-    mechLaddVol->AddNode(flex1Vol,j,new TGeoTranslation(xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2,zpos));
-    mechLaddVol->AddNode(flex1Vol,fNModules+j,new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2 + deltaY,zpos));
-    mechLaddVol->AddNode(flex2Vol,j,new TGeoTranslation(xPos, -ylen + yPos + yModPlate + 2*rMax + yCPlate + yGlue + 2*ymod + yFlex1 + yFlex2/2,zpos));
-    mechLaddVol->AddNode(flex2Vol,fNModules+j,new TGeoTranslation(-xPos, -ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2/2 + deltaY,zpos));
-
-    if((j+1)!=fNModules){
-      mechLaddVol->AddNode(flex1_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2 + yFlex1/2,zpos5cm));
-      mechLaddVol->AddNode(flex1_5cmVol,fNModules+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2 + yFlex1/2 +deltaY,zpos5cm));
-      mechLaddVol->AddNode(flex2_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 3*yFlex2/2,zpos5cm));
-      mechLaddVol->AddNode(flex2_5cmVol,fNModules+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 3*yFlex2/2 +deltaY,zpos5cm));
-    }
-    else {
-      mechLaddVol->AddNode(flex1_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2,zpos5cm-modGap));
-      mechLaddVol->AddNode(flex1_5cmVol,fNModules+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2 +deltaY,zpos5cm-modGap));
-      mechLaddVol->AddNode(flex2_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate +2*ymod + yFlex1 + yFlex2/2,zpos5cm-modGap));
-      mechLaddVol->AddNode(flex2_5cmVol,fNModules+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2/2 +deltaY,zpos5cm-modGap));
+  ypos -= (busKap->GetDY() + busAl->GetDY());
+  halfStaveVol->AddNode(busAlVol, 1, new TGeoTranslation(0, ypos, 0));
 
-      }
+  ypos -= (busAl->GetDY() + ymod);
+  for (Int_t j=0; j<fNModules; j++) {
+    zpos = -zlen + j*(2*zmod + fgkOBModuleGap) + zmod;
+    halfStaveVol->AddNode(moduleVol, j, new TGeoTranslation(0, ypos, zpos));
+    fHierarchy[kModule]++;
   }
+
+  ypos -= (ymod + coldPlate->GetDY());
+  halfStaveVol->AddNode(coldPlateVol, 1, new TGeoTranslation(0, ypos, 0));
+
+  coolTubeVol->AddNode(coolWaterVol, 1, 0);
+
+  xpos = fgkOBCoolTubeXDist/2;
+  ypos1 = ypos - (coldPlate->GetDY() + coolTube->GetRmax());
+  halfStaveVol->AddNode(coolTubeVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(coolTubeVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+
+  halfStaveVol->AddNode(graphtubVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(graphtubVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+
+  halfStaveVol->AddNode(fleectubVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(fleectubVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+
+  xpos = xHalfSt - graphlat->GetDX();
+  ypos1 = ypos - (coldPlate->GetDY() + graphlat->GetDY());
+  halfStaveVol->AddNode(graphlatVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(graphlatVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+
+  halfStaveVol->AddNode(graphmidVol, 1, new TGeoTranslation(0, ypos1, 0));
+
+  xpos = xHalfSt - 2*graphlat->GetDX() + graphvert->GetDX();
+  ypos1 = ypos - (coldPlate->GetDY() +2*graphlat->GetDY() +graphvert->GetDY());
+  halfStaveVol->AddNode(graphvertVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(graphvertVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+  xpos = graphmid->GetDX() - graphvert->GetDX();
+  halfStaveVol->AddNode(graphvertVol, 3, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(graphvertVol, 4, new TGeoTranslation( xpos, ypos1, 0));
+
+  xpos = xHalfSt - fleeclat->GetDX();
+  ypos1 = ypos - (coldPlate->GetDY() +2*graphlat->GetDY() +fleeclat->GetDY());
+  halfStaveVol->AddNode(fleeclatVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(fleeclatVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+
+  halfStaveVol->AddNode(fleecmidVol, 1, new TGeoTranslation(0, ypos1, 0));
+
+  xpos = xHalfSt - 2*fleeclat->GetDX() + fleecvert->GetDX();
+  ypos1 = ypos - (coldPlate->GetDY() +2*graphlat->GetDY()
+               + 2*fleeclat->GetDY() + fleecvert->GetDY());
+  halfStaveVol->AddNode(fleecvertVol, 1, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(fleecvertVol, 2, new TGeoTranslation( xpos, ypos1, 0));
+  xpos = fleecmid->GetDX() - fleecvert->GetDX();
+  halfStaveVol->AddNode(fleecvertVol, 3, new TGeoTranslation(-xpos, ypos1, 0));
+  halfStaveVol->AddNode(fleecvertVol, 4, new TGeoTranslation( xpos, ypos1, 0));
+
+
+
+  //THE FOLLOWING IS ONLY A REMINDER FOR WHAT IS STILL MISSING
+
+//   for (Int_t j=0; j<fNChips; j++) {
+
+//     zpos = -(zact + (fNChips-1)*modGap)/2 + j*(zMod + modGap) + zMod/2;
+//     zpos5cm = -(zact + (fNChips-1)*modGap)/2 + (j+1)*(zMod + modGap) + flexOverlap/2 ;
+
+//     halfStaveVol->AddNode(moduleVol, j, new TGeoTranslation(xPos, -ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + ymod, zpos));
+//     halfStaveVol->AddNode(moduleVol, fNChips+j, new TGeoTranslation(-xPos, -ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + ymod +deltaY, zpos));
+
+//     if((j+1)!=fNChips){
+//       halfStaveVol->AddNode(flex1_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2 + yFlex1/2,zpos5cm));
+//       halfStaveVol->AddNode(flex1_5cmVol,fNChips+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2 + yFlex1/2 +deltaY,zpos5cm));
+//       halfStaveVol->AddNode(flex2_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 3*yFlex2/2,zpos5cm));
+//       halfStaveVol->AddNode(flex2_5cmVol,fNChips+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + 2*yFlex1 + 3*yFlex2/2 +deltaY,zpos5cm));
+//     }
+//     else {
+//       halfStaveVol->AddNode(flex1_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2,zpos5cm-modGap));
+//       halfStaveVol->AddNode(flex1_5cmVol,fNChips+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1/2 +deltaY,zpos5cm-modGap));
+//       halfStaveVol->AddNode(flex2_5cmVol,j,new TGeoTranslation(xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate +2*ymod + yFlex1 + yFlex2/2,zpos5cm-modGap));
+//       halfStaveVol->AddNode(flex2_5cmVol,fNChips+j,new TGeoTranslation(-xPos,-ylen + yPos + 2*rCoolMax + yCPlate + yGlue + yModPlate + 2*ymod + yFlex1 + yFlex2/2 +deltaY,zpos5cm-modGap));
+
+//       }
+//   }
   
 
-  // Done, return the stave structur
-  return mechLaddVol;
+  // Done, return the half stave structure
+  return halfStaveVol;
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB(const Double_t xlad,
-                                                  const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB(const TGeoManager *mgr){
 //
 // Create the space frame for the Outer Barrel
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -2119,31 +2351,30 @@ TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB(const Double_t xlad,
 //
 //
 
-  TGeoVolume *mechLaddVol = 0;
+  TGeoVolume *mechStavVol = 0;
 
   switch (fStaveModel) {
     case AliITSUv1::kOBModelDummy:
-      mechLaddVol = CreateSpaceFrameOuterBDummy(xlad,mgr);
+    case AliITSUv1::kOBModel0:
+      mechStavVol = CreateSpaceFrameOuterBDummy(mgr);
       break;
     case AliITSUv1::kOBModel1:
-      mechLaddVol = CreateSpaceFrameOuterB0(xlad,mgr);
+      mechStavVol = CreateSpaceFrameOuterB1(mgr);
       break;
     default:
       AliFatal(Form("Unknown stave model %d",fStaveModel));
       break;
   }
 
-  return mechLaddVol; 
+  return mechStavVol; 
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterBDummy(const Double_t ,
-                                                       const TGeoManager *) const {
+TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterBDummy(const TGeoManager *) const {
 //
 // Create dummy stave
 //
 // Input:
-//         xlad : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -2157,13 +2388,11 @@ TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterBDummy(const Double_t ,
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB0(const Double_t xlen,
-                                                   const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB1(const TGeoManager *mgr){
 //
-// Create the space frame for the Outer Barrel (Model 0)
+// Create the space frame for the Outer Barrel (Model 1)
 //
 // Input:
-//         xlen : X length
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -2173,6 +2402,8 @@ TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB0(const Double_t xlen,
 //
 // Created:      20 Dec 2013  Anastasia Barbano
 // Updated:      15 Jan 2014  Mario Sitta
+// Updated:      18 Feb 2014  Mario Sitta
+// Updated:      12 Mar 2014  Mario Sitta
 //
 
 
@@ -2182,176 +2413,215 @@ TGeoVolume* AliITSUv1Layer::CreateSpaceFrameOuterB0(const Double_t xlen,
 
 
   // Local parameters
-  Double_t ladderWidth        = 4.2;
-  Double_t ladderHeight       = 4.2;
-//  Double_t ladderSegBoxDW     = 7.5;
-//  Double_t ladderSegBoxDH     = 7.1;
-  Double_t ladderBeamRadius   = 0.06;
-  Double_t ladderLa           = 0.3;
-  Double_t ladderHa           = 0.0721979;
-  Double_t ladderLb           = 0.37;
-  Double_t ladderHb           = 0.0890428;
-  Double_t ladderl            = 0.025;
-  Double_t beamSidePhi        = 65;
-  Double_t bottomBeamAngle    = 56.5;
-//  Double_t dy                 = ladderSegBoxDH/2;
-  Double_t triangleHeight     = ladderHeight - ladderBeamRadius;
-  Double_t halfTheta          = TMath::ATan( 0.5*ladderWidth/triangleHeight );
-  Double_t alpha              = TMath::Pi()*3./4. - halfTheta/2.;
+  Double_t sframeWidth        = fgkOBSpaceFrameWidth;
+  Double_t sframeHeight       = fgkOBSpaceFrameTotHigh - fgkOBHalfStaveYTrans;
+  Double_t staveBeamRadius    = fgkOBSFrameBeamRadius;
+  Double_t staveLa            = fgkOBSpaceFrameLa;
+  Double_t staveHa            = fgkOBSpaceFrameHa;
+  Double_t staveLb            = fgkOBSpaceFrameLb;
+  Double_t staveHb            = fgkOBSpaceFrameHb;
+  Double_t stavel             = fgkOBSpaceFrameL;
+  Double_t bottomBeamAngle    = fgkOBSFBotBeamAngle;
+  Double_t triangleHeight     = sframeHeight - staveBeamRadius;
+  Double_t halfTheta          = TMath::ATan( 0.5*sframeWidth/triangleHeight );
+//  Double_t alpha              = TMath::Pi()*3./4. - halfTheta/2.;
   Double_t beta               = (TMath::Pi() - 2.*halfTheta)/4.;
-//  Double_t dYTranslation      = (ladderHeight/2. -0.5*ladderWidth*TMath::Tan(beta)-ladderBeamRadius);
-  Double_t distCenterSideDown =  0.5*ladderWidth/TMath::Cos(beta);
-  Double_t zact;
-  Double_t zbus;
+//  Double_t distCenterSideDown = 0.5*sframeWidth/TMath::Cos(beta);
+
   Double_t zlen;
-  Double_t seglen;    
+  Double_t xpos, ypos, zpos;
+  Double_t seglen;
+  char volname[30];
+
 
+  zlen = fNModules*fgkOBModuleZLength + (fNModules-1)*fgkOBModuleGap;
+
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSHalfStavePattern(), fLayerNumber);
+  if (gGeoManager->GetVolume(volname)) { // Should always be so
+    sframeHeight -= ((TGeoBBox*)gGeoManager->GetVolume(volname)->GetShape())->GetDY()*2;
+    zlen = ((TGeoBBox*)gGeoManager->GetVolume(volname)->GetShape())->GetDZ()*2;
+  }
+  seglen = zlen/fNModules;
 
-  zact    = fNModules*fgkOBModuleZLength; //active area 
-  zbus    = zact + (fNModules-1)*fgkOBModuleGap; 
-  zlen    = zbus/2;
-  seglen  = zlen/10;
 
   // First create all needed shapes and volumes
 
-  TGeoBBox *spaceFrame = new TGeoBBox("CarbonFrame",xlen, 2.2, zlen);
-  TGeoBBox *segment    = new TGeoBBox(ladderWidth/2,ladderHeight/2,seglen/2);
+  TGeoBBox *spaceFrame = new TGeoBBox(sframeWidth/2,sframeHeight/2,zlen/2);
+  TGeoBBox *segment    = new TGeoBBox(sframeWidth/2,sframeHeight/2,seglen/2);
 
   TGeoVolume *spaceFrameVol = new TGeoVolume("CarbonFrameVolume",
                                             spaceFrame, medAir);
-  spaceFrameVol->SetVisibility(kTRUE);
+  spaceFrameVol->SetVisibility(kFALSE);
 
-  TGeoVolume *segmentVol    = new TGeoVolume("segmentVol",segment,medAir);
+  TGeoVolume *segmentVol    = new TGeoVolume("segmentVol", segment, medAir);
 
   //SpaceFrame
 
-  //--- the top V of the Carbon Fiber Ladder (segment)
-  TGeoArb8 *cfLaddTop1 = CreateLadderSide("CFladdTopCornerVol1shape", seglen/2., halfTheta, -1, ladderLa, ladderHa, ladderl);
-  TGeoVolume *cfLaddTopVol1 = new TGeoVolume("ITSsddCFladdTopCornerVol1", cfLaddTop1,medCarbon);
-  TGeoArb8 *cfLaddTop2 = CreateLadderSide( "CFladdTopCornerVol2shape", seglen/2., halfTheta, 1, ladderLa, ladderHa, ladderl);
-  TGeoVolume *cfLaddTopVol2 = new TGeoVolume("ITSsddCFladdTopCornerVol2",cfLaddTop2,medCarbon );
+  //--- the top V of the Carbon Fiber Stave (segment)
+  TGeoArb8 *cfStavTop1 = CreateStaveSide("CFstavTopCornerVol1shape", seglen/2., halfTheta, -1, staveLa, staveHa, stavel);
+  TGeoVolume *cfStavTopVol1 = new TGeoVolume("CFstavTopCornerVol1",
+                                            cfStavTop1, medCarbon);
+  cfStavTopVol1->SetLineColor(35);
 
-  //TGeoTranslation *trTop1 = new TGeoTranslation(0, fgkLadderHeight/2-dy, 0);
-  TGeoTranslation *trTop1 = new TGeoTranslation(0, ladderHeight/2, 0);
-  
-  //--- the 2 side V
-  TGeoArb8 *cfLaddSide1 = CreateLadderSide( "CFladdSideCornerVol1shape", seglen/2., beta, -1,ladderLb, ladderHb, ladderl);
-  TGeoVolume *cfLaddSideVol1 = new TGeoVolume( "ITSsddCFladdSideCornerVol1", cfLaddSide1,medCarbon);
-  TGeoArb8 *cfLaddSide2 = CreateLadderSide( "CFladdSideCornerVol2shape", seglen/2., beta, 1, ladderLb, ladderHb, ladderl);
-  TGeoVolume *cfLaddSideVol2 = new TGeoVolume( "ITSsddCFladdSideCornerVol2", cfLaddSide2,medCarbon );
+  TGeoArb8 *cfStavTop2 = CreateStaveSide("CFstavTopCornerVol2shape", seglen/2., halfTheta,  1, staveLa, staveHa, stavel);
+  TGeoVolume *cfStavTopVol2 = new TGeoVolume("CFstavTopCornerVol2",
+                                            cfStavTop2, medCarbon );
+  cfStavTopVol2->SetLineColor(35);
 
+  TGeoTranslation *trTop1 = new TGeoTranslation(0, sframeHeight/2, 0);
   
-  TGeoCombiTrans *ctSideR = CreateCombiTrans("", distCenterSideDown, 0,alpha*TMath::RadToDeg());
-  //AddTranslationToCombiTrans(ctSideR, 0, -dYTranslation-dy, 0);
-  AddTranslationToCombiTrans(ctSideR, 0, ladderHeight/2-2.85/*2.765250*//*triangleHeight*/, 0);
-  TGeoCombiTrans *ctSideL = CreateCombiTrans("", distCenterSideDown,0,-alpha*TMath::RadToDeg());
-  //AddTranslationToCombiTrans(ctSideL, 0, -dYTranslation-dy, 0);
-  AddTranslationToCombiTrans(ctSideL, 0, ladderHeight/2-2.85/*triangleHeight*/, 0);
-
-  segmentVol->AddNode(cfLaddTopVol1,1,trTop1);
-  segmentVol->AddNode(cfLaddTopVol2,1,trTop1);
-  segmentVol->AddNode(cfLaddSideVol1,1,ctSideR);
-  segmentVol->AddNode(cfLaddSideVol1,2,ctSideL);
-  segmentVol->AddNode(cfLaddSideVol2,1,ctSideR);
-  segmentVol->AddNode(cfLaddSideVol2,2,ctSideL);
+  //--- the 2 side V
+  TGeoArb8 *cfStavSide1 = CreateStaveSide("CFstavSideCornerVol1shape", seglen/2., beta, -1, staveLb, staveHb, stavel);
+  TGeoVolume *cfStavSideVol1 = new TGeoVolume("CFstavSideCornerVol1",
+                                             cfStavSide1, medCarbon);
+  cfStavSideVol1->SetLineColor(35);
+
+  TGeoArb8 *cfStavSide2 = CreateStaveSide("CFstavSideCornerVol2shape", seglen/2., beta,  1, staveLb, staveHb, stavel);
+  TGeoVolume *cfStavSideVol2 = new TGeoVolume("CFstavSideCornerVol2",
+                                             cfStavSide2, medCarbon );
+  cfStavSideVol2->SetLineColor(35);
+
+  xpos = -sframeWidth/2;
+  ypos = -sframeHeight/2 + staveBeamRadius + staveHb*TMath::Sin(beta);
+  TGeoCombiTrans *ctSideR = new TGeoCombiTrans( xpos, ypos, 0,
+                                      new TGeoRotation("", 180-2*beta*TMath::RadToDeg(), 0, 0));
+  TGeoCombiTrans *ctSideL = new TGeoCombiTrans(-xpos, ypos, 0,
+                                      new TGeoRotation("",-180+2*beta*TMath::RadToDeg(), 0, 0));
+
+  segmentVol->AddNode(cfStavTopVol1,1,trTop1);
+  segmentVol->AddNode(cfStavTopVol2,1,trTop1);
+  segmentVol->AddNode(cfStavSideVol1,1,ctSideR);
+  segmentVol->AddNode(cfStavSideVol1,2,ctSideL);
+  segmentVol->AddNode(cfStavSideVol2,1,ctSideR);
+  segmentVol->AddNode(cfStavSideVol2,2,ctSideL);
 
 
   //--- The beams
   // Beams on the sides
-  Double_t beamPhiPrime = TMath::ASin(1./TMath::Sqrt( (1+TMath::Sin(2*beta)*TMath::Sin(2*beta)/(TanD(beamSidePhi)*TanD(beamSidePhi))) ));
-  Double_t beamLength = TMath::Sqrt( ladderHeight*ladderHeight/( TMath::Sin(beamPhiPrime)*TMath::Sin(beamPhiPrime))+ ladderWidth*ladderWidth/4.)-ladderLa/2-ladderLb/2;
-  TGeoTubeSeg *sideBeamS = new TGeoTubeSeg(0, ladderBeamRadius,beamLength/2.,0, 180);
-  TGeoVolume *sideBeam = new TGeoVolume("ITSsddCFSideBeamVol", sideBeamS,medCarbon);
-
-  //Euler rotation : about Z, then new X, then new Z
-  TGeoRotation *beamRot1 = new TGeoRotation("", 90-2.*beta*TMath::RadToDeg(),-beamPhiPrime*TMath::RadToDeg(),-90);
-  TGeoRotation *beamRot2 = new TGeoRotation("", 90-2.*beta*TMath::RadToDeg(), beamPhiPrime*TMath::RadToDeg(), -90);
-  TGeoRotation *beamRot3 = new TGeoRotation("", 90+2.*beta*TMath::RadToDeg(), beamPhiPrime*TMath::RadToDeg(), -90);
-  TGeoRotation *beamRot4 = new TGeoRotation("", 90+2.*beta*TMath::RadToDeg(),-beamPhiPrime*TMath::RadToDeg(),-90);
+  Double_t beamPhiPrime = TMath::ASin(1./TMath::Sqrt( (1+TMath::Sin(2*beta)*TMath::Sin(2*beta)/(TanD(fgkOBSFrameBeamSidePhi)*TanD(fgkOBSFrameBeamSidePhi))) ));
+  Double_t beamLength = TMath::Sqrt( sframeHeight*sframeHeight/( TMath::Sin(beamPhiPrime)*TMath::Sin(beamPhiPrime))+ sframeWidth*sframeWidth/4.)-staveLa/2-staveLb/2;
+  TGeoTubeSeg *sideBeam = new TGeoTubeSeg(0, staveBeamRadius,
+                                         beamLength/2, 0, 180);
+  TGeoVolume *sideBeamVol = new TGeoVolume("CFstavSideBeamVol",
+                                          sideBeam, medCarbon);
+  sideBeamVol->SetLineColor(35);
+
+  TGeoRotation *beamRot1 = new TGeoRotation("", /*90-2*beta*/halfTheta*TMath::RadToDeg(),
+                                   -beamPhiPrime*TMath::RadToDeg(), -90);
+  TGeoRotation *beamRot2 = new TGeoRotation("", 90-2.*beta*TMath::RadToDeg(),
+                                    beamPhiPrime*TMath::RadToDeg(), -90);
+  TGeoRotation *beamRot3 = new TGeoRotation("", 90+2.*beta*TMath::RadToDeg(),
+                                    beamPhiPrime*TMath::RadToDeg(), -90);
+  TGeoRotation *beamRot4 = new TGeoRotation("", 90+2.*beta*TMath::RadToDeg(),
+                                   -beamPhiPrime*TMath::RadToDeg(), -90);
 
   TGeoCombiTrans *beamTransf[8];
-  beamTransf[0] = new TGeoCombiTrans( 0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-3*seglen/8, beamRot1);
+  xpos = 0.5*triangleHeight*TMath::Tan(halfTheta);
+  ypos = staveBeamRadius/2;
+  zpos = seglen/8;
+  beamTransf[0] = new TGeoCombiTrans( xpos, ypos,-3*zpos, beamRot1);
 
-  beamTransf[1] = new TGeoCombiTrans( 0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-3*seglen/8, beamRot1);
+  beamTransf[1] = new TGeoCombiTrans( xpos, ypos,-3*zpos, beamRot1);
   AddTranslationToCombiTrans(beamTransf[1], 0, 0, seglen/2);
 
-  beamTransf[2] = new TGeoCombiTrans(0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-seglen/8, beamRot2);
+  beamTransf[2] = new TGeoCombiTrans( xpos, ypos,  -zpos, beamRot2);
 
-  beamTransf[3] = new TGeoCombiTrans(0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-seglen/8, beamRot2);
+  beamTransf[3] = new TGeoCombiTrans( xpos, ypos,  -zpos, beamRot2);
   AddTranslationToCombiTrans(beamTransf[3], 0, 0, seglen/2);
 
-  beamTransf[4] = new TGeoCombiTrans(-0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-3*seglen/8, beamRot3);
+  beamTransf[4] = new TGeoCombiTrans(-xpos, ypos,-3*zpos, beamRot3);
 
-  beamTransf[5] = new TGeoCombiTrans(-0.5*triangleHeight*TMath::Tan(halfTheta),ladderBeamRadius/2. ,-3*seglen/8, beamRot3);
+  beamTransf[5] = new TGeoCombiTrans(-xpos, ypos,-3*zpos, beamRot3);
   AddTranslationToCombiTrans(beamTransf[5], 0, 0, seglen/2);
 
-  beamTransf[6] = new TGeoCombiTrans(-0.5*triangleHeight* TMath::Tan(halfTheta),ladderBeamRadius/2., -seglen/8,beamRot4);
-  beamTransf[7] = new TGeoCombiTrans(-0.5*triangleHeight* TMath::Tan(halfTheta),ladderBeamRadius/2.,3*seglen/8,beamRot4);
+  beamTransf[6] = new TGeoCombiTrans(-xpos, ypos,  -zpos, beamRot4);
+  beamTransf[7] = new TGeoCombiTrans(-xpos, ypos, 3*zpos, beamRot4);
 
   //--- Beams of the bottom
-  TGeoTubeSeg *bottomBeam1 = new TGeoTubeSeg(0, ladderBeamRadius,ladderWidth/2.-ladderLb/3, 0, 180);
-  TGeoVolume *bottomBeam1Vol = new TGeoVolume("ITSsddBottomBeam1Vol", bottomBeam1, medCarbon);
-  TGeoTubeSeg *bottomBeam2 = new TGeoTubeSeg(0, ladderBeamRadius,ladderWidth/2.-ladderLb/3, 0, 90);
-  TGeoVolume *bottomBeam2Vol = new TGeoVolume("ITSsddBottomBeam2Vol",bottomBeam2, medCarbon);
-  TGeoTubeSeg *bottomBeam3 = new TGeoTubeSeg(0, ladderBeamRadius,0.5*ladderWidth/SinD(bottomBeamAngle) - ladderLb/3, 0, 180);
-  TGeoVolume *bottomBeam3Vol = new TGeoVolume("ITSsddBottomBeam3Vol", bottomBeam3, medCarbon);
-  TGeoRotation *bottomBeamRot1 = new TGeoRotation("", 90, 90,  90);
-  TGeoRotation *bottomBeamRot2 = new TGeoRotation("",-90, 90, -90);
-
-  TGeoCombiTrans *bottomBeamTransf1 = new TGeoCombiTrans("",0,-(ladderHeight/2-ladderBeamRadius),0, bottomBeamRot1);
-  TGeoCombiTrans *bottomBeamTransf2 = new TGeoCombiTrans(0,-(ladderHeight/2-ladderBeamRadius),-seglen/2, bottomBeamRot1);
-  TGeoCombiTrans *bottomBeamTransf3 = new TGeoCombiTrans(0,-(ladderHeight/2-ladderBeamRadius), seglen/2, bottomBeamRot2);
-  // be careful for beams #3: when "reading" from -z to +z and 
-  // from the bottom of the ladder, it should draw a Lambda, and not a V
-  TGeoRotation *bottomBeamRot4 = new TGeoRotation("", -90, bottomBeamAngle, -90);
-  TGeoRotation *bottomBeamRot5 = new TGeoRotation("" ,-90,-bottomBeamAngle, -90);
-  TGeoCombiTrans *bottomBeamTransf4 = new TGeoCombiTrans(0,-(ladderHeight/2-ladderBeamRadius),-seglen/4,bottomBeamRot4);
-  TGeoCombiTrans *bottomBeamTransf5 = new TGeoCombiTrans(0,-(ladderHeight/2-ladderBeamRadius),seglen/4, bottomBeamRot5);
-
-  cfLaddTopVol1->SetLineColor(35);
-  cfLaddTopVol2->SetLineColor(35);
-  cfLaddSideVol1->SetLineColor(35);
-  cfLaddSideVol2->SetLineColor(35);
-  sideBeam->SetLineColor(35);
+  TGeoTubeSeg *bottomBeam1 = new TGeoTubeSeg(0, staveBeamRadius,
+                                            sframeWidth/2.-staveLb/3, 0, 180);
+  TGeoVolume *bottomBeam1Vol = new TGeoVolume("CFstavBottomBeam1Vol",
+                                             bottomBeam1, medCarbon);
   bottomBeam1Vol->SetLineColor(35);
+
+  TGeoTubeSeg *bottomBeam2 = new TGeoTubeSeg(0, staveBeamRadius,
+                                            sframeWidth/2.-staveLb/3, 0, 90);
+  TGeoVolume *bottomBeam2Vol = new TGeoVolume("CFstavBottomBeam2Vol",
+                                             bottomBeam2, medCarbon);
   bottomBeam2Vol->SetLineColor(35);
+
+  TGeoTubeSeg *bottomBeam3 = new TGeoTubeSeg(0, staveBeamRadius,
+                            0.5*sframeWidth/SinD(bottomBeamAngle) - staveLb/3,
+                                            0, 180);
+  TGeoVolume *bottomBeam3Vol = new TGeoVolume("CFstavBottomBeam3Vol",
+                                             bottomBeam3, medCarbon);
   bottomBeam3Vol->SetLineColor(35);
 
+  TGeoRotation *bottomBeamRot1 = new TGeoRotation("", 90, 90,  90);
+  TGeoRotation *bottomBeamRot2 = new TGeoRotation("",-90, 90, -90);
 
-  segmentVol->AddNode(sideBeam,1, beamTransf[0]);
-  segmentVol->AddNode(sideBeam,2, beamTransf[1]);
-  segmentVol->AddNode(sideBeam,3, beamTransf[2]);
-  segmentVol->AddNode(sideBeam,4, beamTransf[3]);
-  segmentVol->AddNode(sideBeam,5, beamTransf[4]);
-  segmentVol->AddNode(sideBeam,6, beamTransf[5]);
-  segmentVol->AddNode(sideBeam,7, beamTransf[6]);
-  segmentVol->AddNode(sideBeam,8, beamTransf[7]);
+  TGeoCombiTrans *bottomBeamTransf1 = new TGeoCombiTrans("",0,
+                                        -(sframeHeight/2-staveBeamRadius), 0,
+                                                        bottomBeamRot1);
+  TGeoCombiTrans *bottomBeamTransf2 = new TGeoCombiTrans(0,
+                                        -(sframeHeight/2-staveBeamRadius),
+                                                        -seglen/2,
+                                                        bottomBeamRot1);
+  TGeoCombiTrans *bottomBeamTransf3 = new TGeoCombiTrans(0,
+                                        -(sframeHeight/2-staveBeamRadius),
+                                                        seglen/2,
+                                                        bottomBeamRot2);
+  // be careful for beams #3: when "reading" from -z to +z and 
+  // from the bottom of the stave, it should draw a Lambda, and not a V
+  TGeoRotation *bottomBeamRot4 = new TGeoRotation("",-90, bottomBeamAngle,-90);
+  TGeoRotation *bottomBeamRot5 = new TGeoRotation("",-90,-bottomBeamAngle,-90);
+
+  TGeoCombiTrans *bottomBeamTransf4 = new TGeoCombiTrans(0,
+                                        -(sframeHeight/2-staveBeamRadius),
+                                                        -seglen/4,
+                                                        bottomBeamRot4);
+  TGeoCombiTrans *bottomBeamTransf5 = new TGeoCombiTrans(0,
+                                        -(sframeHeight/2-staveBeamRadius),
+                                                        seglen/4,
+                                                        bottomBeamRot5);
+
+
+  segmentVol->AddNode(sideBeamVol,1, beamTransf[0]);
+  segmentVol->AddNode(sideBeamVol,2, beamTransf[1]);
+  segmentVol->AddNode(sideBeamVol,3, beamTransf[2]);
+  segmentVol->AddNode(sideBeamVol,4, beamTransf[3]);
+  segmentVol->AddNode(sideBeamVol,5, beamTransf[4]);
+  segmentVol->AddNode(sideBeamVol,6, beamTransf[5]);
+  segmentVol->AddNode(sideBeamVol,7, beamTransf[6]);
+  segmentVol->AddNode(sideBeamVol,8, beamTransf[7]);
   segmentVol->AddNode(bottomBeam1Vol,1,bottomBeamTransf1);
   segmentVol->AddNode(bottomBeam2Vol,1,bottomBeamTransf2);
-  segmentVol->AddNode(bottomBeam2Vol,1,bottomBeamTransf3);
+  segmentVol->AddNode(bottomBeam2Vol,2,bottomBeamTransf3);
   segmentVol->AddNode(bottomBeam3Vol,1,bottomBeamTransf4);
-  segmentVol->AddNode(bottomBeam3Vol,1,bottomBeamTransf5);
+  segmentVol->AddNode(bottomBeam3Vol,2,bottomBeamTransf5);
 
-  for(Int_t i=0;i<10;i++){
-    spaceFrameVol->AddNode(segmentVol,i,new TGeoTranslation(0,0,seglen*(0.5+i)));
-    spaceFrameVol->AddNode(segmentVol,11+i,new TGeoTranslation(0,0,-seglen*(0.5+i)));
+
+  // Then build up the space frame
+  for(Int_t i=0; i<fNModules; i++){
+    zpos = -spaceFrame->GetDZ() + (1 + 2*i)*segment->GetDZ();
+    spaceFrameVol->AddNode(segmentVol, i, new TGeoTranslation(0, 0, zpos));
   }
 
 
-  // Done, return the stave structur
+  // Done, return the space frame structure
   return spaceFrameVol;
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateModuleInnerB(const Double_t xlad,
-                                              const Double_t ylad,   
-                                              const Double_t zlad,
-                                              const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateChipInnerB(const Double_t xchip,
+                                            const Double_t ychip,   
+                                            const Double_t zchip,
+                                            const TGeoManager *mgr){
 //
-// Creates the actual Module
+// Creates the actual Chip
 //
 // Input:
-//         xlad,zlad : the ladder dimensions
+//         xchip,ychip,zchip : the chip dimensions
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
@@ -2368,25 +2638,23 @@ TGeoVolume* AliITSUv1Layer::CreateModuleInnerB(const Double_t xlad,
 
   // First create all needed shapes
 
-  // The module
-  TGeoBBox *module = new TGeoBBox(xlad,  ylad, zlad/fNModules);
+  // The chip
+  TGeoBBox *chip = new TGeoBBox(xchip,  ychip, zchip);
 
   // The sensor
-  xlen = module->GetDX();
+  xlen = chip->GetDX();
   ylen = 0.5*fSensorThick;
-  zlen = module->GetDZ();
+  zlen = chip->GetDZ();
   TGeoBBox *sensor = new TGeoBBox(xlen, ylen, zlen);
 
 
   // We have all shapes: now create the real volumes
-  //TGeoMedium *medAir = mgr->GetMedium("ITS_AIR$");
   TGeoMedium *medSi  = mgr->GetMedium("ITS_SI$");
 
-  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSModulePattern(), fLayerNumber);
-  // TGeoVolume *modVol = new TGeoVolume(volname, module, medAir);
-  TGeoVolume *modVol = new TGeoVolume(volname, module, medSi);
-  modVol->SetVisibility(kTRUE);
-  modVol->SetLineColor(1);
+  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSChipPattern(), fLayerNumber);
+  TGeoVolume *chipVol = new TGeoVolume(volname, chip, medSi);
+  chipVol->SetVisibility(kTRUE);
+  chipVol->SetLineColor(1);
 
   snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSSensorPattern(), fLayerNumber);
   TGeoVolume *sensVol = new TGeoVolume(volname, sensor, medSi);
@@ -2397,87 +2665,140 @@ TGeoVolume* AliITSUv1Layer::CreateModuleInnerB(const Double_t xlad,
   sensVol->SetFillStyle(4000); // 0% transparent
 
 
-  // Now build up the module
+  // Now build up the chip
   xpos = 0.;
-  ypos = -module->GetDY() + sensor->GetDY();
+  ypos = -chip->GetDY() + sensor->GetDY();
   zpos = 0.;
 
-  modVol->AddNode(sensVol, 1, new TGeoTranslation(xpos, ypos, zpos));
+  chipVol->AddNode(sensVol, 1, new TGeoTranslation(xpos, ypos, zpos));
 
-  // Done, return the module
-  return modVol;
+  // Done, return the chip
+  return chipVol;
 }
 
 //________________________________________________________________________
-TGeoVolume* AliITSUv1Layer::CreateModuleOuterB(const Double_t xlad,
-                                              const Double_t ylad,   
-                                              const Double_t zmod,
-                                              const TGeoManager *mgr){
+TGeoVolume* AliITSUv1Layer::CreateModuleOuterB(const TGeoManager *mgr){
 //
-// Creates the actual Module
+// Creates the OB Module: HIC + FPC + Carbon plate
 //
 // Input:
-//         xlad,ylad,zlad : the half stave dimensions
 //         mgr  : the GeoManager (used only to get the proper material)
 //
 // Output:
 //
 // Return:
+//         the module as a TGeoVolume
 //
 // Created:      18 Dec 2013  M. Sitta, A. Barbano
+// Updated:      26 Feb 2014  M. Sitta
 //
 
 
   char volname[30];
 
-  Double_t xGap  = 0.01; 
-  Double_t zGap  = 0.01;
+  Double_t xGap  = fgkOBChipXGap;
+  Double_t zGap  = fgkOBChipZGap;
 
+  Double_t xchip, ychip, zchip;
   Double_t xlen, ylen, zlen;
   Double_t xpos, ypos, zpos;
   
   // First create all needed shapes
 
-  // The module
-  TGeoBBox *module = new TGeoBBox(xlad,  ylad, zmod/2);
+  // The chip (the same as for IB)
+  xlen = (fgkOBHalfStaveWidth/2-xGap/2)/fgkOBNChipRows;
+  ylen = 0.5*fStaveThick; // TO BE CHECKED
+  zlen = (fgkOBModuleZLength - (fgkOBChipsPerRow-1)*zGap)/(2*fgkOBChipsPerRow);
 
-  // The sensor
-  xlen = 0.5*(module->GetDX()-xGap/2);
-  //xlen = 0.5*1.5;
-  ylen = ylad;
-  zlen = (2*module->GetDZ()-6*zGap)/14;
-  TGeoBBox *sensor = new TGeoBBox(xlen, ylen, zlen);
+  TGeoVolume *chipVol = CreateChipInnerB(xlen, ylen, zlen);
+
+  xchip = ((TGeoBBox*)chipVol->GetShape())->GetDX();
+  ychip = ((TGeoBBox*)chipVol->GetShape())->GetDY();
+  zchip = ((TGeoBBox*)chipVol->GetShape())->GetDZ();
+
+  // The module carbon plate
+  xlen = fgkOBHalfStaveWidth/2;
+  ylen = fgkOBCarbonPlateThick/2;
+  zlen = fgkOBModuleZLength/2;
+  TGeoBBox *modPlate = new TGeoBBox("CarbonPlate", xlen, ylen, zlen);
+
+  // The glue
+  ylen = fgkOBGlueThick/2;
+  TGeoBBox *glue = new TGeoBBox("Glue", xlen, ylen, zlen);
+
+  // The flex cables
+  ylen = fgkOBFlexCableAlThick/2;
+  TGeoBBox *flexAl = new TGeoBBox("FlexAl", xlen, ylen, zlen);
+
+  ylen = fgkOBFlexCableKapThick/2;
+  TGeoBBox *flexKap = new TGeoBBox("FlexKap", xlen, ylen, zlen);
+
+  // The module
+  xlen = fgkOBHalfStaveWidth/2;
+  ylen = ychip + modPlate->GetDY() + glue->GetDY() +
+         flexAl->GetDY() + flexKap->GetDY();
+  zlen = fgkOBModuleZLength/2;
+  TGeoBBox *module = new TGeoBBox("OBModule", xlen,  ylen, zlen);
 
 
   // We have all shapes: now create the real volumes
  
-  TGeoMedium *medSi  = mgr->GetMedium("ITS_SI$");
+  TGeoMedium *medAir      = mgr->GetMedium("ITS_AIR$");
+  TGeoMedium *medCarbon   = mgr->GetMedium("ITS_CARBON$");
+  TGeoMedium *medGlue     = mgr->GetMedium("ITS_GLUE$");
+  TGeoMedium *medAluminum = mgr->GetMedium("ITS_ALUMINUM$");
+  TGeoMedium *medKapton   = mgr->GetMedium("ITS_KAPTON(POLYCH2)$");
+
+  TGeoVolume *modPlateVol = new TGeoVolume("CarbonPlateVol",
+                                           modPlate, medCarbon);
+  modPlateVol->SetLineColor(kMagenta-8);
+  modPlateVol->SetFillColor(modPlateVol->GetLineColor());
+  modPlateVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *glueVol = new TGeoVolume("GlueVol", glue, medGlue);
+  glueVol->SetLineColor(kBlack);
+  glueVol->SetFillColor(glueVol->GetLineColor());
+  glueVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *flexAlVol = new TGeoVolume("FlexAlVol", flexAl, medAluminum);
+  flexAlVol->SetLineColor(kRed);
+  flexAlVol->SetFillColor(flexAlVol->GetLineColor());
+  flexAlVol->SetFillStyle(4000); // 0% transparent
+
+  TGeoVolume *flexKapVol = new TGeoVolume("FlexKapVol", flexKap, medKapton);
+  flexKapVol->SetLineColor(kGreen);
+  flexKapVol->SetFillColor(flexKapVol->GetLineColor());
+  flexKapVol->SetFillStyle(4000); // 0% transparent
+
   snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSModulePattern(), fLayerNumber);
-  TGeoVolume *modVol = new TGeoVolume(volname, module, medSi);
+  TGeoVolume *modVol = new TGeoVolume(volname, module, medAir);
   modVol->SetVisibility(kTRUE);
-
-  snprintf(volname, 30, "%s%d", AliITSUGeomTGeo::GetITSSensorPattern(), fLayerNumber);
-  TGeoVolume *sensVol = new TGeoVolume(volname, sensor, medSi);
   
 
-
   // Now build up the module
-  xpos = -module->GetDX() + sensor->GetDX();
-  //xpos = -xGap/2 -sensor->GetDX();
-  ypos = -module->GetDY() + sensor->GetDY();
-  for(Int_t k=0;k<7;k++)   //put 7x2 chip into one module
+  ypos = -module->GetDY() + modPlate->GetDY();
+  modVol->AddNode(modPlateVol, 1, new TGeoTranslation(0, ypos, 0));
+
+  ypos += (modPlate->GetDY() + glue->GetDY());
+  modVol->AddNode(glueVol, 1, new TGeoTranslation(0, ypos, 0));
+
+  xpos = -module->GetDX() + xchip;
+  ypos += (glue->GetDY() + ychip);
+  for(Int_t k=0; k<fgkOBChipsPerRow; k++)   //put 7x2 chip into one module
     {
-      zpos = -module->GetDZ() + sensor->GetDZ() + k*(2*sensor->GetDZ() + zGap);
-      modVol->AddNode(sensVol, k+1, new TGeoTranslation(xpos, ypos, zpos));
-      modVol->AddNode(sensVol, k+2, new TGeoTranslation(-xpos, ypos, zpos));
+      zpos = -module->GetDZ() + zchip + k*(2*zchip + zGap);
+      modVol->AddNode(chipVol, 2*k  , new TGeoTranslation( xpos, ypos, zpos));
+      modVol->AddNode(chipVol, 2*k+1, new TGeoTranslation(-xpos, ypos, zpos));
+      fHierarchy[kChip]+=2;
     }
+
+  ypos += (ychip + flexAl->GetDY());
+  modVol->AddNode(flexAlVol, 1, new TGeoTranslation(0, ypos, 0));
+
+  ypos += (flexAl->GetDY() + flexKap->GetDY());
+  modVol->AddNode(flexKapVol, 1, new TGeoTranslation(0, ypos, 0));
   
-  //sensVol->SetVisibility(kTRUE);
-  sensVol->SetLineColor(kYellow);
-  //sensVol->SetLineWidth(1);
-  //sensVol->SetTransparency(30);
-  sensVol->SetFillColor(sensVol->GetLineColor());
-  sensVol->SetFillStyle(4000); // 0% transparent
+
   // Done, return the module
   return modVol;
 }
@@ -2486,8 +2807,8 @@ TGeoVolume* AliITSUv1Layer::CreateModuleOuterB(const Double_t xlad,
 Double_t AliITSUv1Layer::RadiusOfTurboContainer(){
 //
 // Computes the inner radius of the air container for the Turbo configuration
-// as the radius of either the circle tangent to the ladder or the circle
-// passing for the ladder's lower vertex
+// as the radius of either the circle tangent to the stave or the circle
+// passing for the stave's lower vertex
 //
 // Input:
 //         none (all needed parameters are class members)
@@ -2500,32 +2821,60 @@ Double_t AliITSUv1Layer::RadiusOfTurboContainer(){
 // Created:      08 Mar 2012  Mario Sitta
 //
 
-  Double_t rr, delta, z, lladd, rladd;
+  Double_t rr, delta, z, lstav, rstav;
 
-  if (fLadderThick > 89.) // Very big angle: avoid overflows since surely
+  if (fStaveThick > 89.) // Very big angle: avoid overflows since surely
     return -1;            // the radius from lower vertex is the right value
 
-  rladd = fLayRadius + 0.5*fLadderThick;
-  delta = (0.5*fLadderThick)/CosD(fLadderTilt);
-  z     = (0.5*fLadderThick)*TanD(fLadderTilt);
+  rstav = fLayRadius + 0.5*fStaveThick;
+  delta = (0.5*fStaveThick)/CosD(fStaveTilt);
+  z     = (0.5*fStaveThick)*TanD(fStaveTilt);
 
-  rr = rladd - delta;
-  lladd = (0.5*fLadderWidth) - z;
+  rr = rstav - delta;
+  lstav = (0.5*fStaveWidth) - z;
 
-  if ( (rr*SinD(fLadderTilt) < lladd) )
-    return (rr*CosD(fLadderTilt));
+  if ( (rr*SinD(fStaveTilt) < lstav) )
+    return (rr*CosD(fStaveTilt));
   else
     return -1;
 }
 
 //________________________________________________________________________
-void AliITSUv1Layer::SetLadderTilt(const Double_t t)
+void AliITSUv1Layer::SetNUnits(Int_t u)
+{
+//
+// Sets the number of units in a stave:
+//      for the Inner Barrel: the number of chips per stave
+//      for the Outer Barrel: the number of modules per half stave
+//
+//
+// Input:
+//         u :  the number of units
+//
+// Output:
+//
+// Return:
+//
+// Created:      18 Feb 2013  Mario Sitta (was already SetNChips)
+//
+
+  if (fLayerNumber < fgkNumberOfInnerLayers)
+    fNChips = u;
+  else {
+    fNModules = u;
+    fNChips = fgkOBChipsPerRow;
+  }
+
+}
+
+//________________________________________________________________________
+void AliITSUv1Layer::SetStaveTilt(const Double_t t)
 {
 //
-// Sets the Ladder tilt angle (for turbo layers only)
+// Sets the Stave tilt angle (for turbo layers only)
 //
 // Input:
-//         t :  the ladder tilt angle
+//         t :  the stave tilt angle
 //
 // Output:
 //
@@ -2535,19 +2884,19 @@ void AliITSUv1Layer::SetLadderTilt(const Double_t t)
 //
 
   if (fIsTurbo)
-    fLadderTilt = t;
+    fStaveTilt = t;
   else
     AliError("Not a Turbo layer");
 
 }
 
 //________________________________________________________________________
-void AliITSUv1Layer::SetLadderWidth(const Double_t w){
+void AliITSUv1Layer::SetStaveWidth(const Double_t w){
 //
-// Sets the Ladder width (for turbo layers only)
+// Sets the Stave width (for turbo layers only)
 //
 // Input:
-//         w :  the ladder width
+//         w :  the stave width
 //
 // Output:
 //
@@ -2557,14 +2906,14 @@ void AliITSUv1Layer::SetLadderWidth(const Double_t w){
 //
 
   if (fIsTurbo)
-    fLadderWidth = w;
+    fStaveWidth = w;
   else
     AliError("Not a Turbo layer");
 
 }
 
 //________________________________________________________________________
-TGeoArb8 *AliITSUv1Layer::CreateLadderSide(const char *name,
+TGeoArb8 *AliITSUv1Layer::CreateStaveSide(const char *name,
                          Double_t dz, Double_t angle, Double_t xSign,
                          Double_t L, Double_t H, Double_t l) {
 //
@@ -2573,30 +2922,30 @@ TGeoArb8 *AliITSUv1Layer::CreateLadderSide(const char *name,
 // in AliITSv11GeometrySDD class by L.Gaudichet)
 //
 
-    // Create one half of the V shape corner of CF ladder
+    // Create one half of the V shape corner of CF stave
   
-    TGeoArb8 *cfLaddSide = new TGeoArb8(dz);
-    cfLaddSide->SetName(name);
+    TGeoArb8 *cfStavSide = new TGeoArb8(dz);
+    cfStavSide->SetName(name);
 
     // Points must be in clockwise order
-    cfLaddSide->SetVertex(0, 0,  0);
-    cfLaddSide->SetVertex(2, xSign*(L*TMath::Sin(angle)-l*TMath::Cos(angle)),
+    cfStavSide->SetVertex(0, 0,  0);
+    cfStavSide->SetVertex(2, xSign*(L*TMath::Sin(angle)-l*TMath::Cos(angle)),
                          -L*TMath::Cos(angle)-l*TMath::Sin(angle));
-    cfLaddSide->SetVertex(4, 0,  0);
-    cfLaddSide->SetVertex(6, xSign*(L*TMath::Sin(angle)-l*TMath::Cos(angle)),
+    cfStavSide->SetVertex(4, 0,  0);
+    cfStavSide->SetVertex(6, xSign*(L*TMath::Sin(angle)-l*TMath::Cos(angle)),
                          -L*TMath::Cos(angle)-l*TMath::Sin(angle));
     if (xSign < 0) {
-     cfLaddSide->SetVertex(1, 0, -H);
-     cfLaddSide->SetVertex(3, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
-     cfLaddSide->SetVertex(5, 0, -H);
-     cfLaddSide->SetVertex(7, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
+     cfStavSide->SetVertex(1, 0, -H);
+     cfStavSide->SetVertex(3, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
+     cfStavSide->SetVertex(5, 0, -H);
+     cfStavSide->SetVertex(7, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
     } else {
-     cfLaddSide->SetVertex(1, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
-     cfLaddSide->SetVertex(3, 0, -H);
-     cfLaddSide->SetVertex(5, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
-     cfLaddSide->SetVertex(7, 0, -H);
+     cfStavSide->SetVertex(1, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
+     cfStavSide->SetVertex(3, 0, -H);
+     cfStavSide->SetVertex(5, xSign*L*TMath::Sin(angle), -L*TMath::Cos(angle));
+     cfStavSide->SetVertex(7, 0, -H);
     }
-    return cfLaddSide;
+    return cfStavSide;
 }
 
 //________________________________________________________________________