]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliPIPEv3.cxx
Adding Domenico Colella as responsible for SPD part in TRI pp
[u/mrichter/AliRoot.git] / STRUCT / AliPIPEv3.cxx
index 3f4045a9faf261660a77ed789e42b8b62f22367d..2c3ab363d07778d8f8f680180f331728be073195 100644 (file)
 
 #include <Riostream.h>
 
-#include <TSystem.h>
-#include <TVirtualMC.h>
+#include <TGeoBBox.h>
+#include <TGeoCompositeShape.h>
+#include <TGeoCone.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
 #include <TGeoMatrix.h>
-#include <TGeoVolume.h>
+#include <TGeoPcon.h>
 #include <TGeoTorus.h>
 #include <TGeoTube.h>
-#include <TGeoCone.h>
-#include <TGeoPcon.h>
-#include <TGeoBBox.h>
+#include <TGeoVolume.h>
 #include <TGeoXtru.h>
-#include <TGeoCompositeShape.h>
+#include <TSystem.h>
+#include <TVirtualMC.h>
 
 #include "AliConst.h"
 #include "AliMagF.h"
 #include "AliLog.h"
  
 ClassImp(AliPIPEv3)
+
  
 //_____________________________________________________________________________
-AliPIPEv3::AliPIPEv3()
+AliPIPEv3::AliPIPEv3() : fBeamBackground(0)
 {
 // Constructor
 }
 
 //_____________________________________________________________________________
 AliPIPEv3::AliPIPEv3(const char *name, const char *title)
-  : AliPIPE(name,title)
+  : AliPIPE(name,title), fBeamBackground(0)
 {
 // Constructor
 }
@@ -62,11 +64,10 @@ AliPIPEv3::AliPIPEv3(const char *name, const char *title)
 //___________________________________________
 void AliPIPEv3::CreateGeometry()
 {
-    AliDebug(1,"Create PIPEv3 geometry");
 //
-//  Class describing the beam pipe geometry
+//  Method describing the beam pipe geometry
 //
-
+    AliDebug(1,"Create PIPEv3 geometry");
     Float_t dz, z, zsh, z0;
 //
 // Rotation Matrices
@@ -82,16 +83,34 @@ void AliPIPEv3::CreateGeometry()
     TGeoRotation* rot315        = new TGeoRotation("rot315", 90. ,315.,  90.,  45.,   0.,   0.);    
 //
 // Media
-    const TGeoMedium* kMedAir     =  gGeoManager->GetMedium("PIPE_AIR");
+    const TGeoMedium* kMedAir     =  gGeoManager->GetMedium("PIPE_AIR1");
+    const TGeoMedium* kMedAirH    =  gGeoManager->GetMedium("PIPE_AIR2");
     const TGeoMedium* kMedAirHigh =  gGeoManager->GetMedium("PIPE_AIR_HIGH");
-    const TGeoMedium* kMedVac     =  gGeoManager->GetMedium("PIPE_VACUUM");    
+
+    const TGeoMedium* kMedVac     =  gGeoManager->GetMedium("PIPE_VACUUM1");    
+    const TGeoMedium* kMedVacH    =  gGeoManager->GetMedium("PIPE_VACUUM2");    
+    const TGeoMedium* kMedVacM    =  gGeoManager->GetMedium("PIPE_VACUUMM");    
+
     const TGeoMedium* kMedInsu    =  gGeoManager->GetMedium("PIPE_INS_C0");    
-    const TGeoMedium* kMedSteel   =  gGeoManager->GetMedium("PIPE_INOX");        
-    const TGeoMedium* kMedBe      =  gGeoManager->GetMedium("PIPE_BE");       
-    const TGeoMedium* kMedCu      =  gGeoManager->GetMedium("PIPE_CU");        
-    const TGeoMedium* kMedKapton  =  gGeoManager->GetMedium("PIPE_KAPTON");        
-    const TGeoMedium* kMedAco     =  gGeoManager->GetMedium("PIPE_ANTICORODAL");        
-    const TGeoMedium* kMedNEG     =  gGeoManager->GetMedium("PIPE_NEG COATING"); 
+    const TGeoMedium* kMedInsuH   =  gGeoManager->GetMedium("PIPE_INS_C2");    
+
+    const TGeoMedium* kMedSteel   =  gGeoManager->GetMedium("PIPE_INOX1");        
+    const TGeoMedium* kMedSteelH  =  gGeoManager->GetMedium("PIPE_INOX2");        
+
+    const TGeoMedium* kMedBe      =  gGeoManager->GetMedium("PIPE_BE1"); 
+    const TGeoMedium* kMedBeH     =  gGeoManager->GetMedium("PIPE_BE2"); 
+      
+    const TGeoMedium* kMedCu      =  gGeoManager->GetMedium("PIPE_CU1");        
+    const TGeoMedium* kMedCuH     =  gGeoManager->GetMedium("PIPE_CU2");        
+    
+    const TGeoMedium* kMedKapton  =  gGeoManager->GetMedium("PIPE_KAPTON1");   
+    const TGeoMedium* kMedKaptonH =  gGeoManager->GetMedium("PIPE_KAPTON2");   
+    const TGeoMedium* kMedAco     =  gGeoManager->GetMedium("PIPE_ANTICORODAL1");        
+    const TGeoMedium* kMedAcoH    =  gGeoManager->GetMedium("PIPE_ANTICORODAL2");        
+
+    const TGeoMedium* kMedNEG      =  gGeoManager->GetMedium("PIPE_NEG COATING1"); 
+    const TGeoMedium* kMedNEGH     =  gGeoManager->GetMedium("PIPE_NEG COATING2"); 
        
 // Top volume
     TGeoVolume* top    = gGeoManager->GetVolume("ALIC");
@@ -370,10 +389,11 @@ void AliPIPEv3::CreateGeometry()
 //
 //  Central beam pipe support collars
 //  LHCVC2C_0019
+//  cp1l = 405.
 //  Position at z = -46., 40., 150.
     TGeoVolume* voCpSupC = new TGeoVolume("CpSupC", new TGeoTube(3.051, 4.00, 0.35), kMedAco);
-    voCp1->AddNode(voCpSupC, 1, new TGeoTranslation(0., 0.,  kCP1Length / 2. - 98.2));
-    voCp1->AddNode(voCpSupC, 2, new TGeoTranslation(0., 0.,  kCP1Length / 2.- 191.5));
+    voCp1->AddNode(voCpSupC, 1, new TGeoTranslation(0., 0.,  kCP1Length / 2. - 98.2 - 34.77 + 0.49));
+//    voCp1->AddNode(voCpSupC, 2, new TGeoTranslation(0., 0.,  kCP1Length / 2.- 191.5));
 //  Beam Pipe Protection Tube
 //
 //  ALIFWDA_0025
@@ -526,8 +546,8 @@ void AliPIPEv3::CreateGeometry()
 //  Plie radius
 //  const Float_t kCP3PlieR = 0.118286;
     const Float_t kCP3PlieR = 
-       (kCP3BellowUndulatedLength - 4. *  kCP3ConnectionPlieR + 2. * kCP3PlieThickness + 
-        (2. *  kCP3NumberOfPlies - 2.) * kCP3PlieThickness) / (4. * kCP3NumberOfPlies - 2.);
+       (kCP3BellowUndulatedLength - 4. *  kCP3ConnectionPlieR + 
+        2. *  kCP3NumberOfPlies * kCP3PlieThickness) / (4. * kCP3NumberOfPlies - 2.);
 //  Length of connection pipe
     const Float_t kCP3BellowConnectionLength        =  2.35;
 //
@@ -575,11 +595,12 @@ void AliPIPEv3::CreateGeometry()
     z = -shCp3Mo->GetZ(0);
     shCp3Mo->DefineSection(11, z, 0., kCP3FlangeRo);
 //
-    TGeoVolume* voCp3Mo = new TGeoVolume("CP3MO", shCp3Mo, kMedAir);
+    // TGeoVolume* voCp3Mo = new TGeoVolume("CP3MO", shCp3Mo, kMedAir);
+    TGeoVolume* voCp3Mo = new TGeoVolumeAssembly("CP3MO");
     voCp3Mo->SetVisibility(0);
     TGeoVolumeAssembly* voCp3 = new TGeoVolumeAssembly("Cp3");
     voCp3->AddNode(voCp3Mo,  1, gGeoIdentity);
-    voCp3->AddNode(voCpSupC, 3, new TGeoTranslation(0., 0., - kCP3Length / 2. + 4.6));
+    voCp3->AddNode(voCpSupC, 3, new TGeoTranslation(0., 0., - kCP3Length / 2. + 4.6 - 0.49));
     dz = kCP3pos;
 
 //////////////////////////////////////////////
@@ -831,18 +852,18 @@ void AliPIPEv3::CreateGeometry()
     const Float_t  kRB24CuTubeFL  = 1.86;
 
     TGeoVolume* voRB24CuTubeM = new TGeoVolume("voRB24CuTubeM", 
-                                              new TGeoTube(0., kRB24CuTubeRo, kRB24CuTubeL/2.), kMedVac);
+                                              new TGeoTube(0., kRB24CuTubeRo, kRB24CuTubeL/2.), kMedVacH);
     voRB24CuTubeM->SetVisibility(0);
     TGeoVolume* voRB24CuTube  = new TGeoVolume("voRB24CuTube", 
-                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB24CuTubeL/2.), kMedCu);
+                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB24CuTubeL/2.), kMedCuH);
     voRB24CuTubeM->AddNode(voRB24CuTube, 1, gGeoIdentity);
     // Air outside tube with higher transport cuts
     TGeoVolume* voRB24CuTubeA  = new TGeoVolume("voRB24CuTubeA", 
                                                new TGeoTube(25., 100., kRB24CuTubeL/2.), kMedAirHigh);
     voRB24CuTubeA->SetVisibility(0);
     // Simplified DN 100 Flange
-     TGeoVolume* voRB24CuTubeF = new TGeoVolume("voRB24CuTubeF", 
-                                              new TGeoTube(kRB24CuTubeRo, kRB24CuTubeFRo, kRB24CuTubeFL/2.), kMedSteel);
+    TGeoVolume* voRB24CuTubeF  = new TGeoVolume("voRB24CuTubeF",
+                                                new TGeoTube(kRB24CuTubeRo, kRB24CuTubeFRo, kRB24CuTubeFL/2.), kMedSteelH);
 
 // Warm Module Type VMACA
 // LHCVMACA_0002
@@ -875,7 +896,7 @@ void AliPIPEv3::CreateGeometry()
     const Float_t kRB24B1PlieThickness     =  0.015;   // Plie thickness             
 
     const Float_t kRB24B1PlieRadius = 
-       (kRB24B1BellowUndL + (2. *  kRB24B1NumberOfPlies - 2.) * kRB24B1PlieThickness) / (4. * kRB24B1NumberOfPlies);
+      (kRB24B1BellowUndL + (2. *  kRB24B1NumberOfPlies+ 1.) * kRB24B1PlieThickness) / (4. * kRB24B1NumberOfPlies + 2.);
     
     const Float_t kRB24B1ProtTubeThickness = 0.02;     // Thickness of the protection tube
     const Float_t kRB24B1ProtTubeLength    = 4.2;      // Length of the protection tube
@@ -917,7 +938,7 @@ void AliPIPEv3::CreateGeometry()
     z = kRB24B1L - shRB24B1BellowM->GetZ(0);
     shRB24B1BellowM->DefineSection(13, z, 0.,               kRB24B1RFlangeRou);
 
-    TGeoVolume* voRB24B1BellowM = new TGeoVolume("RB24B1BellowM", shRB24B1BellowM, kMedVac);
+    TGeoVolume* voRB24B1BellowM = new TGeoVolume("RB24B1BellowM", shRB24B1BellowM, kMedVacH);
     voRB24B1BellowM->SetVisibility(0);
 //
 // Bellow Section    
@@ -928,11 +949,11 @@ void AliPIPEv3::CreateGeometry()
     
 //
 // End Parts (connection tube)
-    TGeoVolume* voRB24B1CT = new TGeoVolume("RB24B1CT", new TGeoTube(kRB24B1ConTubeRin, kRB24B1ConTubeRou,  kRB24B1ConTubeL/2.), kMedSteel); 
+    TGeoVolume* voRB24B1CT = new TGeoVolume("RB24B1CT", new TGeoTube(kRB24B1ConTubeRin, kRB24B1ConTubeRou,  kRB24B1ConTubeL/2.), kMedSteelH); 
 //
 // Protection Tube      
     TGeoVolume* voRB24B1PT = new TGeoVolume("RB24B1PT", new TGeoTube(kRB24B1BellowRo, kRB24B1BellowRo + kRB24B1ProtTubeThickness,  
-                                                                    kRB24B1ProtTubeLength / 2.), kMedSteel);
+                                                                    kRB24B1ProtTubeLength / 2.), kMedSteelH);
     
     z = kRB24B1ConTubeL/2. +  (kRB24B1RFlangeL - kRB24B1RFlangeRecess);
     
@@ -975,7 +996,7 @@ void AliPIPEv3::CreateGeometry()
     z += kRB24B1RFlangeLO;
     shRB24B1RFlange->DefineSection(9, z, kRB24B1RFlangeRO, kRB24B1RFlangeRou);    
     
-    TGeoVolume* voRB24B1RFlange = new TGeoVolume("RB24B1RFlange", shRB24B1RFlange, kMedSteel);
+    TGeoVolume* voRB24B1RFlange = new TGeoVolume("RB24B1RFlange", shRB24B1RFlange, kMedSteelH);
 
     
     z = kRB24B1L - kRB24B1RFlangeL;
@@ -1001,7 +1022,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24B1RCTFlange->DefineSection(4, z, kRB24B1RCTFlangeRin, 11.16/2.);
     z += 0.25;
     shRB24B1RCTFlange->DefineSection(5, z, kRB24B1RCTFlangeRin, 11.16/2.);
-    TGeoVolume* voRB24B1RCTFlange = new TGeoVolume("RB24B1RCTFlange", shRB24B1RCTFlange, kMedCu);
+    TGeoVolume* voRB24B1RCTFlange = new TGeoVolume("RB24B1RCTFlange", shRB24B1RCTFlange, kMedCuH);
     z = kRB24B1L - kRB24B1RCTFlangeL;
     
     voRB24B1BellowM->AddNode(voRB24B1RCTFlange, 1, new TGeoTranslation(0., 0., z));
@@ -1023,7 +1044,7 @@ void AliPIPEv3::CreateGeometry()
     z = kRB24B1RCTL - 0.03;
     shRB24B1RCT->DefineSection(2, z,  kRB24B1RCTRin,  kRB24B1RCTRin + kRB24B1RCTd);
 
-    TGeoVolume* voRB24B1RCT = new TGeoVolume("RB24B1RCT", shRB24B1RCT, kMedCu);
+    TGeoVolume* voRB24B1RCT = new TGeoVolume("RB24B1RCT", shRB24B1RCT, kMedCuH);
     z = kRB24B1L - kRB24B1RCTL - 0.45;
     voRB24B1BellowM->AddNode(voRB24B1RCT, 1, new TGeoTranslation(0., 0., z));    
 
@@ -1049,7 +1070,7 @@ void AliPIPEv3::CreateGeometry()
     // Transition Tube
     z += 3.75;
     shRB24B1TTF->DefineSection(6, z,  8.05/2.,  8.45/2.);
-    TGeoVolume* voRB24B1TTF = new TGeoVolume("RB24B1TTF", shRB24B1TTF, kMedSteel);
+    TGeoVolume* voRB24B1TTF = new TGeoVolume("RB24B1TTF", shRB24B1TTF, kMedSteelH);
     z =  0.;
     voRB24B1BellowM->AddNode(voRB24B1TTF, 1, new TGeoTranslation(0., 0., z));    
 
@@ -1072,7 +1093,7 @@ void AliPIPEv3::CreateGeometry()
 //  Mother volume
     const Float_t kRB24AIpML = 35.;
     
-    TGeoVolume* voRB24AIpM = new TGeoVolume("voRB24AIpM", new TGeoTube(0., 10., kRB24AIpML/2.), kMedAir);
+    TGeoVolume* voRB24AIpM = new TGeoVolume("voRB24AIpM", new TGeoTube(0., 10., kRB24AIpML/2.), kMedAirH);
     voRB24AIpM->SetVisibility(0);
     
     //
@@ -1113,7 +1134,7 @@ void AliPIPEv3::CreateGeometry()
     z0 += kRB24IpRFD5;
     shRB24IpRF->DefineSection(8, z0, kRB24IpRFRi5, kRB24IpRFRo);
 
-    TGeoVolume* voRB24IpRF = new TGeoVolume("RB24IpRF", shRB24IpRF, kMedSteel);
+    TGeoVolume* voRB24IpRF = new TGeoVolume("RB24IpRF", shRB24IpRF, kMedSteelH);
     
 //
 // Pos  2 RF Screen Tube         LHCVC2U_0005
@@ -1124,16 +1145,16 @@ void AliPIPEv3::CreateGeometry()
     Float_t kRB24IpSTTL  = 32.84;            // Total length of the tube
     Float_t kRB24IpSTTRi =  5.80/2.;         // Inner Radius
     Float_t kRB24IpSTTRo =  6.00/2.;         // Outer Radius
-    TGeoVolume* voRB24IpSTT = new TGeoVolume("RB24IpSTT", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTTL/2.), kMedSteel);
+    TGeoVolume* voRB24IpSTT = new TGeoVolume("RB24IpSTT", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTTL/2.), kMedSteelH);
 // Screen
     Float_t kRB24IpSTCL  =  0.4;             // Lenth of the crochet detail
     // Length of the screen 
     Float_t kRB24IpSTSL  =  9.00 - 2. * kRB24IpSTCL; 
     // Rel. position of the screen 
     Float_t kRB24IpSTSZ  =  7.00 + kRB24IpSTCL; 
-    TGeoVolume* voRB24IpSTS = new TGeoVolume("RB24IpSTS", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTSL/2.), kMedSteel);
+    TGeoVolume* voRB24IpSTS = new TGeoVolume("RB24IpSTS", new TGeoTube(kRB24IpSTTRi, kRB24IpSTTRo, kRB24IpSTSL/2.), kMedSteelH);
     // Vacuum
-    TGeoVolume* voRB24IpSTV = new TGeoVolume("RB24IpSTV", new TGeoTube(0., kRB24IpSTTRi, kRB24AIpML/2.), kMedVac);
+    TGeoVolume* voRB24IpSTV = new TGeoVolume("RB24IpSTV", new TGeoTube(0., kRB24IpSTTRi, kRB24AIpML/2.), kMedVacH);
     //
     voRB24IpSTT->AddNode(voRB24IpSTS, 1, new TGeoTranslation(0., 0., kRB24IpSTSZ -  kRB24IpSTTL/2. +  kRB24IpSTSL/2.));
     
@@ -1161,7 +1182,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24IpSTC->DefineSection(3, z0, kRB24IpSTTRo, kRB24IpSTCRo);
     z0 += kRB24IpSTCL3;
     shRB24IpSTC->DefineSection(4, z0, kRB24IpSTTRo, kRB24IpSTTRo + 0.001);
-    TGeoVolume* voRB24IpSTC = new TGeoVolume("RB24IpSTC", shRB24IpSTC, kMedSteel);
+    TGeoVolume* voRB24IpSTC = new TGeoVolume("RB24IpSTC", shRB24IpSTC, kMedSteelH);
 
 // Pos  3 Shell                  LHCVC2U_0007
 // Pos  4 Extruded Shell         LHCVC2U_0006
@@ -1185,7 +1206,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24IpShell->DefineSection(5, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
     z0 = kRB24IpShellL;
     shRB24IpShell->DefineSection(6, z0, kRB24IpShellCARi, kRB24IpShellCCRo);
-    TGeoVolume* voRB24IpShell = new TGeoVolume("RB24IpShell", shRB24IpShell, kMedSteel);
+    TGeoVolume* voRB24IpShell = new TGeoVolume("RB24IpShell", shRB24IpShell, kMedSteelH);
     
     TGeoPcon* shRB24IpShellM   = MakeMotherFromTemplate(shRB24IpShell, 0, 6, kRB24IpShellCTRi , 13);
     
@@ -1197,7 +1218,7 @@ void AliPIPEv3::CreateGeometry()
        shRB24IpShellM->DefineSection(7+i, z, rmin, rmax);
     }
     
-    TGeoVolume* voRB24IpShellM = new TGeoVolume("RB24IpShellM", shRB24IpShellM, kMedVac);
+    TGeoVolume* voRB24IpShellM = new TGeoVolume("RB24IpShellM", shRB24IpShellM, kMedVacH);
     voRB24IpShellM->SetVisibility(0);
     voRB24IpShellM->AddNode(voRB24IpShell, 1, gGeoIdentity);
     voRB24IpShellM->AddNode(voRB24IpShell, 2, new TGeoCombiTrans(0., 0., 2. * kRB24IpShellL, rot180));
@@ -1205,7 +1226,7 @@ void AliPIPEv3::CreateGeometry()
 // Pos  8 Pumping Elements
 //
 //  Anode array
-    TGeoVolume* voRB24IpPE = new TGeoVolume("voRB24IpPE", new TGeoTube(0.9, 1., 2.54/2.), kMedSteel);
+    TGeoVolume* voRB24IpPE = new TGeoVolume("voRB24IpPE", new TGeoTube(0.9, 1., 2.54/2.), kMedSteelH);
     Float_t kRB24IpPEAR = 5.5;
     
     for (Int_t i = 0; i < 15; i++) {
@@ -1246,11 +1267,11 @@ void AliPIPEv3::CreateGeometry()
 
     TGeoVolume* voRB24ValveBoM =
        new TGeoVolume("RB24ValveBoM", 
-                      new TGeoBBox( kRB24ValveBoWx/2.,  kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedAir);
+                      new TGeoBBox( kRB24ValveBoWx/2.,  kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedAirH);
     voRB24ValveBoM->SetVisibility(0);
     TGeoVolume* voRB24ValveBo =
        new TGeoVolume("RB24ValveBo", 
-                      new TGeoBBox( kRB24ValveBoWx/2.,  kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedSteel);
+                      new TGeoBBox( kRB24ValveBoWx/2.,  kRB24ValveBoWy/2., kRB24ValveBoWz/2.), kMedSteelH);
     voRB24ValveBoM->AddNode(voRB24ValveBo, 1, gGeoIdentity);
     //
     // Inner volume
@@ -1259,19 +1280,19 @@ void AliPIPEv3::CreateGeometry()
                                                new TGeoBBox( kRB24ValveBoWx/2. -  kRB24ValveBoD,  
                                                              kRB24ValveBoWy/2. -  kRB24ValveBoD/2., 
                                                              kRB24ValveBoWz/2. -  kRB24ValveBoD), 
-                                               kMedVac);
+                                               kMedVacH);
     voRB24ValveBo->AddNode(voRB24ValveBoI, 1, new TGeoTranslation(0., kRB24ValveBoD/2., 0.));
     //
     // Opening and Flanges
     const Float_t  kRB24ValveFlRo = 18./2.;
     const Float_t  kRB24ValveFlD  = 1.45;    
     TGeoVolume* voRB24ValveBoA = new TGeoVolume("RB24ValveBoA", 
-                                               new TGeoTube(0., kRB24ValveDN/2., kRB24ValveBoD/2.), kMedVac);
+                                               new TGeoTube(0., kRB24ValveDN/2., kRB24ValveBoD/2.), kMedVacH);
     voRB24ValveBo->AddNode(voRB24ValveBoA, 1, new TGeoTranslation(0., - kRB24ValveBoWy/2. + 21.5, -kRB24ValveBoWz/2. +  kRB24ValveBoD/2.));
     voRB24ValveBo->AddNode(voRB24ValveBoA, 2, new TGeoTranslation(0., - kRB24ValveBoWy/2. + 21.5, +kRB24ValveBoWz/2. -  kRB24ValveBoD/2.));
  
-    TGeoVolume* voRB24ValveFl  = new TGeoVolume("RB24ValveFl",  new TGeoTube(kRB24ValveDN/2.,  kRB24ValveFlRo, kRB24ValveFlD/2.), kMedSteel);
-    TGeoVolume* voRB24ValveFlI = new TGeoVolume("RB24ValveFlI", new TGeoTube(0.,               kRB24ValveFlRo, kRB24ValveFlD/2.), kMedVac);
+    TGeoVolume* voRB24ValveFl  = new TGeoVolume("RB24ValveFl",  new TGeoTube(kRB24ValveDN/2.,  kRB24ValveFlRo, kRB24ValveFlD/2.), kMedSteelH);
+    TGeoVolume* voRB24ValveFlI = new TGeoVolume("RB24ValveFlI", new TGeoTube(0.,               kRB24ValveFlRo, kRB24ValveFlD/2.), kMedVacH);
     voRB24ValveFlI->AddNode(voRB24ValveFl, 1, gGeoIdentity);
     
     //
@@ -1279,18 +1300,18 @@ void AliPIPEv3::CreateGeometry()
     const Float_t kRB24ValveAFlWx =  18.9;
     const Float_t kRB24ValveAFlWy =   5.0;
     const Float_t kRB24ValveAFlWz =   7.7;
-    TGeoVolume* voRB24ValveAFl = new TGeoVolume("RB24ValveAFl", new TGeoBBox(kRB24ValveAFlWx/2., kRB24ValveAFlWy/2., kRB24ValveAFlWz/2.), kMedSteel);
+    TGeoVolume* voRB24ValveAFl = new TGeoVolume("RB24ValveAFl", new TGeoBBox(kRB24ValveAFlWx/2., kRB24ValveAFlWy/2., kRB24ValveAFlWz/2.), kMedSteelH);
     //
     // Actuator Tube
     const Float_t kRB24ValveATRo = 9.7/2.;
     const Float_t kRB24ValveATH  = 16.6;
     TGeoVolume* voRB24ValveAT = new TGeoVolume("RB24ValveAT", new TGeoTube(kRB24ValveATRo -  2. * kRB24ValveBoD,kRB24ValveATRo,  kRB24ValveATH/2.), 
-                                              kMedSteel);
+                                              kMedSteelH);
     //
     // Manual Actuator (my best guess)
-    TGeoVolume* voRB24ValveMA1 = new TGeoVolume("RB24ValveMA1", new TGeoCone(2.5/2., 0., 0.5, 4.5, 5.), kMedSteel);
-    TGeoVolume* voRB24ValveMA2 = new TGeoVolume("RB24ValveMA2", new TGeoTorus(5., 0., 1.25), kMedSteel);
-    TGeoVolume* voRB24ValveMA3 = new TGeoVolume("RB24ValveMA3", new TGeoTube (0., 1.25, 2.5), kMedSteel);
+    TGeoVolume* voRB24ValveMA1 = new TGeoVolume("RB24ValveMA1", new TGeoCone(2.5/2., 0., 0.5, 4.5, 5.), kMedSteelH);
+    TGeoVolume* voRB24ValveMA2 = new TGeoVolume("RB24ValveMA2", new TGeoTorus(5., 0., 1.25), kMedSteelH);
+    TGeoVolume* voRB24ValveMA3 = new TGeoVolume("RB24ValveMA3", new TGeoTube (0., 1.25, 2.5), kMedSteelH);
     
 
     //
@@ -1350,7 +1371,7 @@ void AliPIPEv3::CreateGeometry()
     // Lower inforcement 
     TGeoVolume*  voRB24VMABCRBT12  = new TGeoVolume("RB24VMABCRBT12", 
                                                    new TGeoTubeSeg(kRB24VMABCRBT1Ro, kRB24VMABCRBT1Ro + 0.3, kRB24VMABCRBT1L2/2., 220., 320.)
-                                                   , kMedSteel);
+                                                   , kMedSteelH);
     //
     // Tube 2
     const Float_t kRB24VMABCRBT2Ri =   6.0/2.;
@@ -1366,14 +1387,14 @@ void AliPIPEv3::CreateGeometry()
     tRBT2->SetName("tRBT2");
     tRBT2->RegisterYourself();
     TGeoCompositeShape* shRB24VMABCRBT2c =  new TGeoCompositeShape("shRB24VMABCRBT2c","RB24VMABCRBT2:tRBT2-RB24VMABCRBT1o");
-    TGeoVolume* voRB24VMABCRBT2 = new TGeoVolume("shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteel);
+    TGeoVolume* voRB24VMABCRBT2 = new TGeoVolume("shRB24VMABCRBT2", shRB24VMABCRBT2c, kMedSteelH);
     // Flange
     // Pos 1.4 Flange DN63                        LHCVBU__0008
     TGeoVolume* voRB24VMABCRBF2 = new TGeoVolume("RB24VMABCRBF2", 
-                                                new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+                                                new TGeoTube(kRB24VMABCRBT2Ro, kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteelH);
     // DN63 Blank Flange (my best guess)
     TGeoVolume* voRB24VMABCRBF2B = new TGeoVolume("RB24VMABCRBF2B", 
-                                                 new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteel);
+                                                 new TGeoTube(0., kRB24VMABCRBF2Ro, kRB24VMABCRBF2L/2.), kMedSteelH);
     //
     // Tube 3
     const Float_t kRB24VMABCRBT3Ri =  3.5/2.;
@@ -1389,11 +1410,11 @@ void AliPIPEv3::CreateGeometry()
     tRBT3->SetName("tRBT3");
     tRBT3->RegisterYourself();
     TGeoCompositeShape* shRB24VMABCRBT3c =  new TGeoCompositeShape("shRB24VMABCRBT3c","RB24VMABCRBT3:tRBT3-RB24VMABCRBT1o");
-    TGeoVolume* voRB24VMABCRBT3 = new TGeoVolume("shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteel);
+    TGeoVolume* voRB24VMABCRBT3 = new TGeoVolume("shRB24VMABCRBT3", shRB24VMABCRBT3c, kMedSteelH);
     // Flange
     // Pos 1.4 Flange DN35                        LHCVBU__0007
     TGeoVolume* voRB24VMABCRBF3 = new TGeoVolume("RB24VMABCRBF3", 
-                                                new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L/2.), kMedSteel);
+                                                new TGeoTube(kRB24VMABCRBT3Ro, kRB24VMABCRBF3Ro, kRB24VMABCRBF3L/2.), kMedSteelH);
     //
     // Tube 4
     const Float_t kRB24VMABCRBT4Ri =  6.0/2.;
@@ -1405,9 +1426,9 @@ void AliPIPEv3::CreateGeometry()
     tRBT4->SetName("tRBT4");
     tRBT4->RegisterYourself();
     TGeoCompositeShape* shRB24VMABCRBT4c =  new TGeoCompositeShape("shRB24VMABCRBT4c","RB24VMABCRBT4:tRBT4-RB24VMABCRBT1o2");
-    TGeoVolume* voRB24VMABCRBT4 = new TGeoVolume("shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteel);
+    TGeoVolume* voRB24VMABCRBT4 = new TGeoVolume("shRB24VMABCRBT4", shRB24VMABCRBT4c, kMedSteelH);
     TGeoCompositeShape* shRB24VMABCRB = new TGeoCompositeShape("shRB24VMABCRB", "RB24VMABCRBT1-(RB24VMABCRBT2i:tRBT2+RB24VMABCRBT3i:tRBT3)");
-    TGeoVolume* voRB24VMABCRBI = new TGeoVolume("RB24VMABCRBI", shRB24VMABCRB, kMedSteel);
+    TGeoVolume* voRB24VMABCRBI = new TGeoVolume("RB24VMABCRBI", shRB24VMABCRB, kMedSteelH);
     //
     // Plate
     const Float_t kRB24VMABCRBBx = 16.0;
@@ -1420,7 +1441,7 @@ void AliPIPEv3::CreateGeometry()
     const Float_t  kRB24VMABCPz =   3.6;
     const Float_t  kRB24VMABCPy = -12.5;
     
-    TGeoVolume* voRB24VMABCRBP = new TGeoVolume("RB24VMABCRBP", new TGeoBBox(kRB24VMABCRBBx/2., kRB24VMABCRBBy/2., kRB24VMABCRBBz/2.), kMedSteel);
+    TGeoVolume* voRB24VMABCRBP = new TGeoVolume("RB24VMABCRBP", new TGeoBBox(kRB24VMABCRBBx/2., kRB24VMABCRBBy/2., kRB24VMABCRBBz/2.), kMedSteelH);
     //
     // Pirani Gauge (my best guess)
     //
@@ -1453,7 +1474,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24VMABCPirani->DefineSection(13, z,  0.00, 0.75);    
     z += 0.5;
     shRB24VMABCPirani->DefineSection(14, z,  0.00, 0.75);  
-    TGeoVolume* voRB24VMABCPirani = new TGeoVolume("RB24VMABCPirani", shRB24VMABCPirani, kMedSteel);
+    TGeoVolume* voRB24VMABCPirani = new TGeoVolume("RB24VMABCPirani", shRB24VMABCPirani, kMedSteelH);
     //
     //
     // 
@@ -1510,17 +1531,17 @@ void AliPIPEv3::CreateGeometry()
     shRB24VMABBEBellowM->DefineSection( 4, z, kRB24VMABBEConTubeRin,  kRB24VMABBEConTubeRou);
     z += kRB24VMABBEConTubeL2;
     shRB24VMABBEBellowM->DefineSection( 5, z, kRB24VMABBEConTubeRin,  kRB24VMABBEConTubeRou);
-    TGeoVolume* voRB24VMABBEBellowM = new TGeoVolume("RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVac);
+    TGeoVolume* voRB24VMABBEBellowM = new TGeoVolume("RB24VMABBEBellowM", shRB24VMABBEBellowM, kMedVacH);
     voRB24VMABBEBellowM->SetVisibility(0);
     
 //  Connection tube left
     TGeoVolume* voRB24VMABBECT1 = new TGeoVolume("RB24VMABBECT1", 
                                              new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL1/2.),
-                                             kMedSteel);
+                                             kMedSteelH);
 //  Connection tube right
     TGeoVolume* voRB24VMABBECT2 = new TGeoVolume("RB24VMABBECT2", 
                                              new TGeoTube(kRB24VMABBEConTubeRin, kRB24VMABBEConTubeRou,kRB24VMABBEConTubeL2/2.),
-                                             kMedSteel);
+                                             kMedSteelH);
     z = kRB24VMABBEConTubeL1/2.;
     voRB24VMABBEBellowM->AddNode(voRB24VMABBECT1, 1, new TGeoTranslation(0., 0., z));
     z += kRB24VMABBEConTubeL1/2.;
@@ -1559,7 +1580,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24VMABCTT->DefineSection(5, z, 6.3/2.,  6.7/2.);
     z += 0.63;
     shRB24VMABCTT->DefineSection(6, z, 6.3/2.,  6.7/2.);
-    TGeoVolume* voRB24VMABCTT = new TGeoVolume("RB24VMABCTT", shRB24VMABCTT, kMedSteel);
+    TGeoVolume* voRB24VMABCTT = new TGeoVolume("RB24VMABCTT", shRB24VMABCTT, kMedSteelH);
     voRB24VMABCRB->AddNode(voRB24VMABCTT, 1, new TGeoTranslation(0., 0., - kRB24VMABCRBT1L/2.-1.));
 
 // Pos 3   RF Contact   D63         LHCVSR__0057
@@ -1579,7 +1600,7 @@ void AliPIPEv3::CreateGeometry()
     shRB24VMABCCTFlange->DefineSection(4, z, kRB24VMABCCTFlangeRin, 11.16/2.);
     z += 0.25;
     shRB24VMABCCTFlange->DefineSection(5, z, kRB24VMABCCTFlangeRin, 11.16/2.);
-    TGeoVolume* voRB24VMABCCTFlange = new TGeoVolume("RB24VMABCCTFlange", shRB24VMABCCTFlange, kMedCu);
+    TGeoVolume* voRB24VMABCCTFlange = new TGeoVolume("RB24VMABCCTFlange", shRB24VMABCCTFlange, kMedCuH);
 //
 // Pos 3.2 RF-Contact        LHCVSR__0056
 //
@@ -1598,7 +1619,7 @@ void AliPIPEv3::CreateGeometry()
     z = kRB24VMABCCTL;
     shRB24VMABCCT->DefineSection(3, z,  kRB24VMABCCTRin,  kRB24VMABCCTRin + kRB24VMABCCTd);
 
-    TGeoVolume* voRB24VMABCCT = new TGeoVolume("RB24VMABCCT", shRB24VMABCCT, kMedCu);
+    TGeoVolume* voRB24VMABCCT = new TGeoVolume("RB24VMABCCT", shRB24VMABCCT, kMedCuH);
     
     TGeoVolumeAssembly* voRB24VMABRFCT = new TGeoVolumeAssembly("RB24VMABRFCT");
     voRB24VMABRFCT->AddNode(voRB24VMABCCT,        1, gGeoIdentity);
@@ -1614,7 +1635,7 @@ void AliPIPEv3::CreateGeometry()
     TGeoVolumeAssembly* voRB24 = new TGeoVolumeAssembly("RB24");
     // Cu Tube with two simplified flanges
     voRB24->AddNode(voRB24CuTubeM, 1, gGeoIdentity);
-    voRB24->AddNode(voRB24CuTubeA, 1, gGeoIdentity);
+    if (!fBeamBackground) voRB24->AddNode(voRB24CuTubeA, 1, gGeoIdentity);
     z = - kRB24CuTubeL/2 + kRB24CuTubeFL/2.;
     voRB24->AddNode(voRB24CuTubeF, 1, new TGeoTranslation(0., 0., z));
     z = + kRB24CuTubeL/2 - kRB24CuTubeFL/2.;
@@ -1639,18 +1660,20 @@ void AliPIPEv3::CreateGeometry()
 //   RB24/2
 //     
 // Copper Tube RB24/2
+//
+// This is the part inside the compensator magnet
     const Float_t  kRB242CuTubeL  = 330.0;
     
     TGeoVolume* voRB242CuTubeM = new TGeoVolume("voRB242CuTubeM", 
-                                               new TGeoTube(0., kRB24CuTubeRo, kRB242CuTubeL/2.), kMedVac);
-    voRB24CuTubeM->SetVisibility(0);
+                                               new TGeoTube(0., kRB24CuTubeRo, kRB242CuTubeL/2.), kMedVacM);
+    voRB242CuTubeM->SetVisibility(0);
     TGeoVolume* voRB242CuTube = new TGeoVolume("voRB242CuTube", 
-                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB242CuTubeL/2.), kMedCu);
+                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB242CuTubeL/2.), kMedCuH);
     voRB242CuTubeM->AddNode(voRB242CuTube, 1, gGeoIdentity);
     
 
     TGeoVolumeAssembly* voRB242 = new TGeoVolumeAssembly("RB242");
-    voRB242->AddNode(voRB242CuTube, 1, gGeoIdentity);
+    voRB242->AddNode(voRB242CuTubeM, 1, gGeoIdentity);
     z = - kRB242CuTubeL/2 + kRB24CuTubeFL/2.;
     voRB242->AddNode(voRB24CuTubeF, 3, new TGeoTranslation(0., 0., z));
     z = + kRB242CuTubeL/2 - kRB24CuTubeFL/2.;
@@ -1664,21 +1687,21 @@ void AliPIPEv3::CreateGeometry()
     const Float_t  kRB243CuTubeL  = 303.35;
     
     TGeoVolume* voRB243CuTubeM = new TGeoVolume("voRB243CuTubeM", 
-                                               new TGeoTube(0., kRB24CuTubeRo, kRB243CuTubeL/2.), kMedVac);
+                                               new TGeoTube(0., kRB24CuTubeRo, kRB243CuTubeL/2.), kMedVacH);
     voRB24CuTubeM->SetVisibility(0);
     TGeoVolume* voRB243CuTube = new TGeoVolume("voRB243CuTube", 
-                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB243CuTubeL/2.), kMedCu);
+                                              new TGeoTube(kRB24CuTubeRi, kRB24CuTubeRo, kRB243CuTubeL/2.), kMedCuH);
     voRB243CuTubeM->AddNode(voRB243CuTube, 1, gGeoIdentity);
     
 
     TGeoVolumeAssembly* voRB243  = new TGeoVolumeAssembly("RB243");
     TGeoVolumeAssembly* voRB243A = new TGeoVolumeAssembly("RB243A");
     
-    voRB243A->AddNode(voRB243CuTube, 1, gGeoIdentity);
+    voRB243A->AddNode(voRB243CuTubeM, 1, gGeoIdentity);
     z = - kRB243CuTubeL/2 + kRB24CuTubeFL/2.;
     voRB243A->AddNode(voRB24CuTubeF, 5, new TGeoTranslation(0., 0., z));
     z = + kRB243CuTubeL/2 - kRB24CuTubeFL/2.;
-    voRB243A->AddNode(voRB24CuTubeF,    6, new TGeoTranslation(0., 0., z));
+    voRB243A->AddNode(voRB24CuTubeF, 6, new TGeoTranslation(0., 0., z));
     z = + kRB243CuTubeL/2;
     voRB243A->AddNode(voRB24B1BellowM,  2, new TGeoTranslation(0., 0., z));    
 
@@ -1779,13 +1802,13 @@ void AliPIPEv3::CreateGeometry()
       shRB26s12Tube->DefineSection(2, 207.21,         5.84/2.,  6.14/2.);      
       shRB26s12Tube->DefineSection(3, 452.30,        12.00/2., 12.30/2.);      
       shRB26s12Tube->DefineSection(4, kRB26s12TubeL, 12.00/2., 12.30/2.); 
-      TGeoVolume* voRB26s12Tube  = new TGeoVolume("RB26s12Tube", shRB26s12Tube, kMedSteel);
+      TGeoVolume* voRB26s12Tube  = new TGeoVolume("RB26s12Tube", shRB26s12Tube, kMedSteelH);
       // Add the insulation layer    
-      TGeoVolume* voRB26s12TubeIns = new TGeoVolume("RB26s12TubeIns", MakeInsulationFromTemplate(shRB26s12Tube), kMedInsu); 
+      TGeoVolume* voRB26s12TubeIns = new TGeoVolume("RB26s12TubeIns", MakeInsulationFromTemplate(shRB26s12Tube), kMedInsuH); 
       voRB26s12Tube->AddNode(voRB26s12TubeIns, 1, gGeoIdentity);
 
  
-      TGeoVolume* voRB26s12TubeM  = new TGeoVolume("RB26s12TubeM", MakeMotherFromTemplate(shRB26s12Tube), kMedVac);
+      TGeoVolume* voRB26s12TubeM  = new TGeoVolume("RB26s12TubeM", MakeMotherFromTemplate(shRB26s12Tube), kMedVacH);
       voRB26s12TubeM->AddNode(voRB26s12Tube, 1, gGeoIdentity);
       
 
@@ -1803,8 +1826,8 @@ void AliPIPEv3::CreateGeometry()
       const Float_t kRB26s2ConnectionPlieR   =  0.21;    // Connection plie radius     [Pos 1] 
 //  Plie radius
       const Float_t kRB26s2PlieR = 
-       (kRB26s2BellowUndL - 4. *  kRB26s2ConnectionPlieR + 2. * kRB26s2PlieThickness + 
-        (2. *  kRB26s2NumberOfPlies - 2.) * kRB26s2PlieThickness) / (4. * kRB26s2NumberOfPlies - 2.);
+       (kRB26s2BellowUndL - 4. *  kRB26s2ConnectionPlieR + 
+        2. *  kRB26s2NumberOfPlies * kRB26s2PlieThickness) / (4. * kRB26s2NumberOfPlies);
       const Float_t kRB26s2CompTubeInnerR    = 12.00/2.;  // Connection tubes inner radius     [Pos 2 + 3]
       const Float_t kRB26s2CompTubeOuterR    = 12.30/2.;  // Connection tubes outer radius     [Pos 2 + 3]
       const Float_t kRB26s2WeldingTubeLeftL  =  9.00/2.;  // Left connection tube half length  [Pos 2]
@@ -1826,13 +1849,13 @@ void AliPIPEv3::CreateGeometry()
       shRB26s2Compensator->DefineSection( 3,   kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2ProtOuterR);            
       shRB26s2Compensator->DefineSection( 4,   kRB26s2ProtZ + 2. * kRB26s2ProtL, 0., kRB26s2CompTubeOuterR);
       shRB26s2Compensator->DefineSection( 5,   kRB26s2CompL                    , 0., kRB26s2CompTubeOuterR);            
-      TGeoVolume* voRB26s2Compensator  = new TGeoVolume("RB26s2Compensator", shRB26s2Compensator, kMedVac);
+      TGeoVolume* voRB26s2Compensator  = new TGeoVolume("RB26s2Compensator", shRB26s2Compensator, kMedVacH);
             
 //
 // [Pos 1] Bellow
 //      
 //
-      TGeoVolume* voRB26s2Bellow = new TGeoVolume("RB26s2Bellow", new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRo, kRB26s2BellowUndL/2.), kMedVac);
+      TGeoVolume* voRB26s2Bellow = new TGeoVolume("RB26s2Bellow", new TGeoTube(kRB26s2BellowRi, kRB26s2BellowRo, kRB26s2BellowUndL/2.), kMedVacH);
 //      
 //  Upper part of the undulation
 //
@@ -1842,7 +1865,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s2PlieTubeU->SetName("RB26s2TubeU");
       TGeoCompositeShape*  shRB26s2UpperPlie = new TGeoCompositeShape("RB26s2UpperPlie", "RB26s2TorusU*RB26s2TubeU");
  
-      TGeoVolume* voRB26s2WiggleU = new TGeoVolume("RB26s2UpperPlie", shRB26s2UpperPlie, kMedSteel);
+      TGeoVolume* voRB26s2WiggleU = new TGeoVolume("RB26s2UpperPlie", shRB26s2UpperPlie, kMedSteelH);
 //
 // Lower part of the undulation
       TGeoTorus* shRB26s2PlieTorusL =  new TGeoTorus(kRB26s2BellowRi + kRB26s2PlieR, kRB26s2PlieR - kRB26s2PlieThickness, kRB26s2PlieR);
@@ -1851,13 +1874,13 @@ void AliPIPEv3::CreateGeometry()
       shRB26s2PlieTubeL->SetName("RB26s2TubeL");
       TGeoCompositeShape*  shRB26s2LowerPlie = new TGeoCompositeShape("RB26s2LowerPlie", "RB26s2TorusL*RB26s2TubeL");
       
-      TGeoVolume* voRB26s2WiggleL = new TGeoVolume("RB26s2LowerPlie", shRB26s2LowerPlie, kMedSteel); 
+      TGeoVolume* voRB26s2WiggleL = new TGeoVolume("RB26s2LowerPlie", shRB26s2LowerPlie, kMedSteelH); 
 
 //
 // Connection between upper and lower part of undulation
       TGeoVolume* voRB26s2WiggleC1 = new TGeoVolume("RB26s2PlieConn1",  
                                                    new TGeoTube(kRB26s2BellowRi + kRB26s2PlieR, 
-                                                                kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieThickness / 2.), kMedSteel);
+                                                                kRB26s2BellowRo - kRB26s2PlieR, kRB26s2PlieThickness / 2.), kMedSteelH);
 //
 // One wiggle
       TGeoVolumeAssembly* voRB26s2Wiggle = new TGeoVolumeAssembly("RB26s2Wiggle");
@@ -1885,26 +1908,26 @@ void AliPIPEv3::CreateGeometry()
 // [Pos 2] Left Welding Tube
 //      
       TGeoTube* shRB26s2CompLeftTube = new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeLeftL);
-      TGeoVolume* voRB26s2CompLeftTube = new TGeoVolume("RB26s2CompLeftTube", shRB26s2CompLeftTube, kMedSteel);
+      TGeoVolume* voRB26s2CompLeftTube = new TGeoVolume("RB26s2CompLeftTube", shRB26s2CompLeftTube, kMedSteelH);
       voRB26s2Compensator->AddNode(voRB26s2CompLeftTube, 1,  new TGeoTranslation(0., 0., kRB26s2WeldingTubeLeftL));
 //
 // [Pos 3] Right Welding Tube
 //      
       TGeoTube* shRB26s2CompRightTube = new TGeoTube(kRB26s2CompTubeInnerR, kRB26s2CompTubeOuterR, kRB26s2WeldingTubeRightL);
-      TGeoVolume* voRB26s2CompRightTube = new TGeoVolume("RB26s2CompRightTube", shRB26s2CompRightTube, kMedSteel);
+      TGeoVolume* voRB26s2CompRightTube = new TGeoVolume("RB26s2CompRightTube", shRB26s2CompRightTube, kMedSteelH);
       voRB26s2Compensator->AddNode(voRB26s2CompRightTube,  1, new TGeoTranslation(0., 0.,  kRB26s2CompL - kRB26s2WeldingTubeRightL));
 //
 // [Pos 4] Ring
 //      
       TGeoTube* shRB26s2CompRing = new TGeoTube(kRB26s2CompTubeOuterR, kRB26s2RingOuterR, kRB26s2RingL);
-      TGeoVolume* voRB26s2CompRing = new TGeoVolume("RB26s2CompRing", shRB26s2CompRing, kMedSteel);
+      TGeoVolume* voRB26s2CompRing = new TGeoVolume("RB26s2CompRing", shRB26s2CompRing, kMedSteelH);
       voRB26s2Compensator->AddNode(voRB26s2CompRing,  1, new TGeoTranslation(0., 0., kRB26s2RingZ + kRB26s2RingL));
 
 //
 // [Pos 5] Outer Protecting Tube
 //      
       TGeoTube* shRB26s2CompProtTube = new TGeoTube(kRB26s2RingOuterR, kRB26s2ProtOuterR, kRB26s2ProtL);
-      TGeoVolume* voRB26s2CompProtTube = new TGeoVolume("RB26s2CompProtTube", shRB26s2CompProtTube, kMedSteel);
+      TGeoVolume* voRB26s2CompProtTube = new TGeoVolume("RB26s2CompProtTube", shRB26s2CompProtTube, kMedSteelH);
       voRB26s2Compensator->AddNode(voRB26s2CompProtTube, 1,  new TGeoTranslation(0., 0., kRB26s2ProtZ + kRB26s2ProtL));
       
 ///////////////////////////////////
@@ -1930,7 +1953,7 @@ void AliPIPEv3::CreateGeometry()
       z0 = kRB26s1RFlangeCrL;
       shRB26s1RFlangeCr->DefineSection(3, z0, kRB26s1RFlangeCrRi2, kRB26s1RFlangeCrRo);
       TGeoVolume* voRB26s1RFlangeCr =  
-         new TGeoVolume("RB26s1RFlangeCr", shRB26s1RFlangeCr, kMedSteel);
+         new TGeoVolume("RB26s1RFlangeCr", shRB26s1RFlangeCr, kMedSteelH);
 
 // Pos 2 Insert              LHCVFX__0015
       const Float_t kRB26s1RFlangeIsL       = 4.88     ; // Lenth of the insert
@@ -1946,7 +1969,7 @@ void AliPIPEv3::CreateGeometry()
       z0 = kRB26s1RFlangeIsL;
       shRB26s1RFlangeIs->DefineSection(3, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
       TGeoVolume* voRB26s1RFlangeIs =  
-         new TGeoVolume("RB26s1RFlangeIs", shRB26s1RFlangeIs, kMedSteel);
+         new TGeoVolume("RB26s1RFlangeIs", shRB26s1RFlangeIs, kMedSteelH);
 // 4.88 + 3.7 = 8.58 (8.7 to avoid overlap)
 // Pos 3 Fixed Point Section LHCVC2A_0021
       const Float_t kRB26s1RFlangeFpL       = 5.88     ; // Length of the fixed point section (0.08 cm added for welding)
@@ -1965,7 +1988,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s1RFlangeFp->DefineSection(4, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
       z0 = kRB26s1RFlangeFpL;
       shRB26s1RFlangeFp->DefineSection(5, z0, kRB26s1RFlangeTubeRi, kRB26s1RFlangeTubeRo);
-      TGeoVolume* voRB26s1RFlangeFp = new TGeoVolume("RB26s1RFlangeFp", shRB26s1RFlangeFp, kMedSteel);
+      TGeoVolume* voRB26s1RFlangeFp = new TGeoVolume("RB26s1RFlangeFp", shRB26s1RFlangeFp, kMedSteelH);
             
 // Put everything in a mother volume
       TGeoPcon* shRB26s1RFlange = new TGeoPcon(0., 360., 8);
@@ -1982,7 +2005,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s1RFlange->DefineSection(6, z0, 0., kRB26s1RFlangeTubeRo);
       z0 = kRB26s1RFlangeIsL + kRB26s1RFlangeFpL;
       shRB26s1RFlange->DefineSection(7, z0, 0., kRB26s1RFlangeTubeRo);
-      TGeoVolume* voRB26s1RFlange = new TGeoVolume("RB26s1RFlange", shRB26s1RFlange, kMedVac);
+      TGeoVolume* voRB26s1RFlange = new TGeoVolume("RB26s1RFlange", shRB26s1RFlange, kMedVacH);
 
       voRB26s1RFlange->AddNode(voRB26s1RFlangeIs, 1, gGeoIdentity);
       voRB26s1RFlange->AddNode(voRB26s1RFlangeCr, 1, gGeoIdentity);
@@ -2012,9 +2035,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s2FFlange->DefineSection(4, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
       z0 += kRB26s2FFlangeD3;
       shRB26s2FFlange->DefineSection(5, z0, kRB26s2FFlangeRi3, kRB26s2FFlangeRo);
-      TGeoVolume* voRB26s2FFlange = new TGeoVolume("RB26s2FFlange", shRB26s2FFlange, kMedSteel);
+      TGeoVolume* voRB26s2FFlange = new TGeoVolume("RB26s2FFlange", shRB26s2FFlange, kMedSteelH);
 
-      TGeoVolume* voRB26s2FFlangeM = new TGeoVolume("RB26s2FFlangeM", MakeMotherFromTemplate(shRB26s2FFlange, 2, 5), kMedVac);
+      TGeoVolume* voRB26s2FFlangeM = new TGeoVolume("RB26s2FFlangeM", MakeMotherFromTemplate(shRB26s2FFlange, 2, 5), kMedVacH);
       voRB26s2FFlangeM->AddNode(voRB26s2FFlange, 1, gGeoIdentity);
       
       
@@ -2057,12 +2080,12 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3Tube->DefineSection(5, 622.20,       30.00/2., 30.60/2.);      
       shRB26s3Tube->DefineSection(6, kRB26s3TubeL, 30.00/2., 30.60/2.); 
 
-      TGeoVolume* voRB26s3Tube = new TGeoVolume("RB26s3Tube", shRB26s3Tube, kMedSteel);
+      TGeoVolume* voRB26s3Tube = new TGeoVolume("RB26s3Tube", shRB26s3Tube, kMedSteelH);
 //    Add the insulation layer
-      TGeoVolume* voRB26s3TubeIns = new TGeoVolume("RB26s3TubeIns", MakeInsulationFromTemplate(shRB26s3Tube), kMedInsu); 
+      TGeoVolume* voRB26s3TubeIns = new TGeoVolume("RB26s3TubeIns", MakeInsulationFromTemplate(shRB26s3Tube), kMedInsuH); 
       voRB26s3Tube->AddNode(voRB26s3TubeIns, 1, gGeoIdentity);
 
-      TGeoVolume* voRB26s3TubeM  = new TGeoVolume("RB26s3TubeM", MakeMotherFromTemplate(shRB26s3Tube), kMedVac);
+      TGeoVolume* voRB26s3TubeM  = new TGeoVolume("RB26s3TubeM", MakeMotherFromTemplate(shRB26s3Tube), kMedVacH);
       voRB26s3TubeM->AddNode(voRB26s3Tube, 1, gGeoIdentity);
 
       
@@ -2096,9 +2119,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3FixedPoint->DefineSection(6, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
       z0 = kRB26s3FixedPointL;
       shRB26s3FixedPoint->DefineSection(7, z0, kRB26s3FixedPointRi, kRB26s3FixedPointRo2);
-      TGeoVolume* voRB26s3FixedPoint = new TGeoVolume("RB26s3FixedPoint", shRB26s3FixedPoint, kMedSteel);
+      TGeoVolume* voRB26s3FixedPoint = new TGeoVolume("RB26s3FixedPoint", shRB26s3FixedPoint, kMedSteelH);
 
-      TGeoVolume* voRB26s3FixedPointM = new TGeoVolume("RB26s3FixedPointM", MakeMotherFromTemplate(shRB26s3FixedPoint), kMedVac);
+      TGeoVolume* voRB26s3FixedPointM = new TGeoVolume("RB26s3FixedPointM", MakeMotherFromTemplate(shRB26s3FixedPoint), kMedVacH);
       voRB26s3FixedPointM->AddNode(voRB26s3FixedPoint, 1, gGeoIdentity);
       
 ///////////////////////////////////
@@ -2125,9 +2148,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3SFlange->DefineSection(4, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
       z0 += kRB26s3SFlangeD3;
       shRB26s3SFlange->DefineSection(5, z0, kRB26s3SFlangeRi3, kRB26s3SFlangeRo);
-      TGeoVolume* voRB26s3SFlange = new TGeoVolume("RB26s3SFlange", shRB26s3SFlange, kMedSteel);
+      TGeoVolume* voRB26s3SFlange = new TGeoVolume("RB26s3SFlange", shRB26s3SFlange, kMedSteelH);
 
-      TGeoVolume* voRB26s3SFlangeM = new TGeoVolume("RB26s3SFlangeM", MakeMotherFromTemplate(shRB26s3SFlange, 0, 3), kMedVac);
+      TGeoVolume* voRB26s3SFlangeM = new TGeoVolume("RB26s3SFlangeM", MakeMotherFromTemplate(shRB26s3SFlange, 0, 3), kMedVacH);
       voRB26s3SFlangeM->AddNode(voRB26s3SFlange, 1, gGeoIdentity);
         
 ///////////////////////////////////
@@ -2154,9 +2177,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3FFlange->DefineSection(4, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
       z0 += kRB26s3FFlangeD3;
       shRB26s3FFlange->DefineSection(5, z0, kRB26s3FFlangeRi3, kRB26s3FFlangeRo);
-      TGeoVolume* voRB26s3FFlange = new TGeoVolume("RB26s3FFlange", shRB26s3FFlange, kMedSteel);
+      TGeoVolume* voRB26s3FFlange = new TGeoVolume("RB26s3FFlange", shRB26s3FFlange, kMedSteelH);
       
-      TGeoVolume* voRB26s3FFlangeM = new TGeoVolume("RB26s3FFlangeM", MakeMotherFromTemplate(shRB26s3FFlange, 2, 5), kMedVac);
+      TGeoVolume* voRB26s3FFlangeM = new TGeoVolume("RB26s3FFlangeM", MakeMotherFromTemplate(shRB26s3FFlange, 2, 5), kMedVacH);
       voRB26s3FFlangeM->AddNode(voRB26s3FFlange, 1, gGeoIdentity);
             
 
@@ -2174,8 +2197,8 @@ void AliPIPEv3::CreateGeometry()
       const Float_t kRB26s3ConnectionPlieR    =  0.21;    // Connection plie radius     [Pos 1] 
 //  Plie radius
       const Float_t kRB26s3PlieR = 
-       (kRB26s3BellowUndL - 4. *  kRB26s3ConnectionPlieR + 2. * kRB26s3PlieThickness + 
-        (2. *  kRB26s3NumberOfPlies - 2.) * kRB26s3PlieThickness) / (4. * kRB26s3NumberOfPlies - 2.);
+       (kRB26s3BellowUndL - 4. *  kRB26s3ConnectionPlieR + 
+        2. *  kRB26s3NumberOfPlies * kRB26s3PlieThickness) / (4. * kRB26s3NumberOfPlies);
 
       //
       // The welding tubes have 3 sections with different radii and 2 transition regions.
@@ -2218,14 +2241,14 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3Compensator->DefineSection( 4,   kRB26s3ProtZ + 2. * kRB26s3ProtL, 0., kRB26s3CompTubeOuterR1);
       shRB26s3Compensator->DefineSection( 5,   kRB26s3CompL                    , 0., kRB26s3CompTubeOuterR1);            
       TGeoVolume* voRB26s3Compensator  =  
-         new TGeoVolume("RB26s3Compensator", shRB26s3Compensator, kMedVac);
+         new TGeoVolume("RB26s3Compensator", shRB26s3Compensator, kMedVacH);
             
 //
 // [Pos 1] Bellow
 //      
 //
       TGeoVolume* voRB26s3Bellow = new TGeoVolume("RB26s3Bellow", 
-                                                 new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, kRB26s3BellowUndL/2.), kMedVac);
+                                                 new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, kRB26s3BellowUndL/2.), kMedVacH);
 //      
 //  Upper part of the undulation
 //
@@ -2235,7 +2258,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3PlieTubeU->SetName("RB26s3TubeU");
       TGeoCompositeShape*  shRB26s3UpperPlie = new TGeoCompositeShape("RB26s3UpperPlie", "RB26s3TorusU*RB26s3TubeU");
  
-      TGeoVolume* voRB26s3WiggleU = new TGeoVolume("RB26s3UpperPlie", shRB26s3UpperPlie, kMedSteel);
+      TGeoVolume* voRB26s3WiggleU = new TGeoVolume("RB26s3UpperPlie", shRB26s3UpperPlie, kMedSteelH);
 //
 // Lower part of the undulation
       TGeoTorus* shRB26s3PlieTorusL =  new TGeoTorus(kRB26s3BellowRi + kRB26s3PlieR, kRB26s3PlieR - kRB26s3PlieThickness, kRB26s3PlieR);
@@ -2244,13 +2267,13 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3PlieTubeL->SetName("RB26s3TubeL");
       TGeoCompositeShape*  shRB26s3LowerPlie = new TGeoCompositeShape("RB26s3LowerPlie", "RB26s3TorusL*RB26s3TubeL");
       
-      TGeoVolume* voRB26s3WiggleL = new TGeoVolume("RB26s3LowerPlie", shRB26s3LowerPlie, kMedSteel); 
+      TGeoVolume* voRB26s3WiggleL = new TGeoVolume("RB26s3LowerPlie", shRB26s3LowerPlie, kMedSteelH); 
 
 //
 // Connection between upper and lower part of undulation
       TGeoVolume* voRB26s3WiggleC1 = new TGeoVolume("RB26s3PlieConn1",  
                                                    new TGeoTube(kRB26s3BellowRi + kRB26s3PlieR, 
-                                                                kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieThickness / 2.), kMedSteel);
+                                                                kRB26s3BellowRo - kRB26s3PlieR, kRB26s3PlieThickness / 2.), kMedSteelH);
 //
 // One wiggle
       TGeoVolumeAssembly* voRB26s3Wiggle = new TGeoVolumeAssembly("RB26s3Wiggle");
@@ -2263,9 +2286,9 @@ void AliPIPEv3::CreateGeometry()
       z0 += kRB26s3PlieR -  kRB26s3PlieThickness;
       voRB26s3Wiggle->AddNode(voRB26s3WiggleL,  1 , new TGeoTranslation(0., 0., z0));
 // Positioning of the volumes
-      z0   = - kRB26s3BellowUndL/2.+ kRB26s3ConnectionPlieR;
+      z0   = - kRB26s3BellowUndL/2.+ kRB26s3PlieR;
       voRB26s3Bellow->AddNode(voRB26s3WiggleL, 1, new TGeoTranslation(0., 0., z0));
-      z0  +=  kRB26s3ConnectionPlieR;
+      z0  +=  kRB26s3PlieR;
       zsh  = 4. *  kRB26s3PlieR -  2. * kRB26s3PlieThickness;
       for (Int_t iw = 0; iw < kRB26s3NumberOfPlies; iw++) {
          Float_t zpos =  z0 + iw * zsh;        
@@ -2280,7 +2303,7 @@ void AliPIPEv3::CreateGeometry()
 //      
       TGeoTube* shRB26s3CompProtTube = new TGeoTube(kRB26s3RingOuterR, kRB26s3ProtOuterR, kRB26s3ProtL);
       TGeoVolume* voRB26s3CompProtTube =  
-         new TGeoVolume("RB26s3CompProtTube", shRB26s3CompProtTube, kMedSteel);
+         new TGeoVolume("RB26s3CompProtTube", shRB26s3CompProtTube, kMedSteelH);
       voRB26s3Compensator->AddNode(voRB26s3CompProtTube, 1,  new TGeoTranslation(0., 0., kRB26s3ProtZ + kRB26s3ProtL));
       
 
@@ -2300,7 +2323,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3CompRightTube->DefineSection(4, z0,  kRB26s3CompTubeInnerR1, kRB26s3CompTubeOuterR1);
       
       TGeoVolume* voRB26s3CompRightTube =  
-         new TGeoVolume("RB26s3CompRightTube", shRB26s3CompRightTube, kMedSteel);
+         new TGeoVolume("RB26s3CompRightTube", shRB26s3CompRightTube, kMedSteelH);
       voRB26s3Compensator->AddNode(voRB26s3CompRightTube,  1, new TGeoTranslation(0., 0.,  kRB26s3CompL - z0));
 
 //
@@ -2319,14 +2342,14 @@ void AliPIPEv3::CreateGeometry()
       shRB26s3CompLeftTube->DefineSection(4, z0,  kRB26s3CompTubeInnerR3, kRB26s3CompTubeOuterR3);
 
       TGeoVolume* voRB26s3CompLeftTube =  
-         new TGeoVolume("RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteel);
+         new TGeoVolume("RB26s3CompLeftTube", shRB26s3CompLeftTube, kMedSteelH);
       voRB26s3Compensator->AddNode(voRB26s3CompLeftTube, 1,  gGeoIdentity);
 //
 // [Pos 5] Ring
 //      
       TGeoTube* shRB26s3CompRing = new TGeoTube(kRB26s3CompTubeOuterR2, kRB26s3RingOuterR, kRB26s3RingL);
       TGeoVolume* voRB26s3CompRing =  
-         new TGeoVolume("RB26s3CompRing", shRB26s3CompRing, kMedSteel);
+         new TGeoVolume("RB26s3CompRing", shRB26s3CompRing, kMedSteelH);
       voRB26s3Compensator->AddNode(voRB26s3CompRing,  1, new TGeoTranslation(0., 0., kRB26s3RingZ + kRB26s3RingL));
 
 
@@ -2368,9 +2391,9 @@ void AliPIPEv3::CreateGeometry()
 
       shRB26s45Tube->DefineSection(10, kRB26s45TubeL, 10.00/2., 10.30/2.);      
       TGeoVolume* voRB26s45Tube  =  
-         new TGeoVolume("RB26s45Tube", shRB26s45Tube, kMedSteel);
+         new TGeoVolume("RB26s45Tube", shRB26s45Tube, kMedSteelH);
 
-      TGeoVolume* voRB26s45TubeM  = new TGeoVolume("RB26s45TubeM", MakeMotherFromTemplate(shRB26s45Tube), kMedVac);
+      TGeoVolume* voRB26s45TubeM  = new TGeoVolume("RB26s45TubeM", MakeMotherFromTemplate(shRB26s45Tube), kMedVacH);
       voRB26s45TubeM->AddNode(voRB26s45Tube, 1, gGeoIdentity);
             
       
@@ -2389,8 +2412,8 @@ void AliPIPEv3::CreateGeometry()
       const Float_t kRB26s5ConnectionR       = 11.2/2.;  // Bellow connection radius   [Pos 1] 
 //  Plie radius
       const Float_t kRB26s5PlieR = 
-       (kRB26s5BellowUndL - 4. *  kRB26s5ConnectionPlieR + 2. * kRB26s5PlieThickness + 
-        (2. *  kRB26s5NumberOfPlies - 2.) * kRB26s5PlieThickness) / (4. * kRB26s5NumberOfPlies - 2.);
+       (kRB26s5BellowUndL - 4. *  kRB26s5ConnectionPlieR + 
+        2. *  kRB26s5NumberOfPlies * kRB26s5PlieThickness) / (4. * kRB26s5NumberOfPlies);
       const Float_t kRB26s5CompTubeInnerR    = 10.00/2.;  // Connection tubes inner radius     [Pos 2 + 3]
       const Float_t kRB26s5CompTubeOuterR    = 10.30/2.;  // Connection tubes outer radius     [Pos 2 + 3]
       const Float_t kRB26s5WeldingTubeLeftL  =  3.70/2.;  // Left connection tube half length  [Pos 2]
@@ -2416,14 +2439,14 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5Compensator->DefineSection( 5,   kRB26s5CompL - 8.,                                    0., kRB26s5DetailZR);
       shRB26s5Compensator->DefineSection( 6,   kRB26s5CompL - 8.,                                    0., kRB26s5CompTubeOuterR);            
       shRB26s5Compensator->DefineSection( 7,   kRB26s5CompL,                                         0., kRB26s5CompTubeOuterR);            
-      TGeoVolume* voRB26s5Compensator  = new TGeoVolume("RB26s5Compensator", shRB26s5Compensator, kMedVac);
+      TGeoVolume* voRB26s5Compensator  = new TGeoVolume("RB26s5Compensator", shRB26s5Compensator, kMedVacH);
             
 //
 // [Pos 1] Bellow
 //      
 //
       TGeoVolume* voRB26s5Bellow = new TGeoVolume("RB26s5Bellow", 
-                                                 new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL/2.), kMedVac);
+                                                 new TGeoTube(kRB26s5BellowRi, kRB26s5BellowRo, kRB26s5BellowUndL/2.), kMedVacH);
 //      
 //  Upper part of the undulation
 //
@@ -2433,7 +2456,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5PlieTubeU->SetName("RB26s5TubeU");
       TGeoCompositeShape*  shRB26s5UpperPlie = new TGeoCompositeShape("RB26s5UpperPlie", "RB26s5TorusU*RB26s5TubeU");
  
-      TGeoVolume* voRB26s5WiggleU = new TGeoVolume("RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteel);
+      TGeoVolume* voRB26s5WiggleU = new TGeoVolume("RB26s5UpperPlie", shRB26s5UpperPlie, kMedSteelH);
 //
 // Lower part of the undulation
       TGeoTorus* shRB26s5PlieTorusL =  new TGeoTorus(kRB26s5BellowRi + kRB26s5PlieR, kRB26s5PlieR - kRB26s5PlieThickness, kRB26s5PlieR);
@@ -2442,13 +2465,13 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5PlieTubeL->SetName("RB26s5TubeL");
       TGeoCompositeShape*  shRB26s5LowerPlie = new TGeoCompositeShape("RB26s5LowerPlie", "RB26s5TorusL*RB26s5TubeL");
       
-      TGeoVolume* voRB26s5WiggleL = new TGeoVolume("RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteel); 
+      TGeoVolume* voRB26s5WiggleL = new TGeoVolume("RB26s5LowerPlie", shRB26s5LowerPlie, kMedSteelH); 
 
 //
 // Connection between upper and lower part of undulation
       TGeoVolume* voRB26s5WiggleC1 = new TGeoVolume("RB26s5PlieConn1",  
                                                    new TGeoTube(kRB26s5BellowRi + kRB26s5PlieR, 
-                                                                kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteel);
+                                                                kRB26s5BellowRo - kRB26s5PlieR, kRB26s5PlieThickness / 2.), kMedSteelH);
 //
 // One wiggle
       TGeoVolumeAssembly* voRB26s5Wiggle = new TGeoVolumeAssembly("RB26s5Wiggle");
@@ -2482,7 +2505,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5CompLeftTube->DefineSection(1, z0, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
       z0 += ( kRB26s5ConnectionR - kRB26s5CompTubeOuterR);
       shRB26s5CompLeftTube->DefineSection(2, z0, kRB26s5ConnectionR - 0.15, kRB26s5ConnectionR);
-      TGeoVolume* voRB26s5CompLeftTube = new TGeoVolume("RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteel);
+      TGeoVolume* voRB26s5CompLeftTube = new TGeoVolume("RB26s5CompLeftTube", shRB26s5CompLeftTube, kMedSteelH);
       voRB26s5Compensator->AddNode(voRB26s5CompLeftTube, 1,  gGeoIdentity);
 //
 // [Pos 3] Right Welding Tube
@@ -2503,7 +2526,7 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5CompRightTube->DefineSection(10, 2. * kRB26s5WeldingTubeRightL, kRB26s5CompTubeInnerR, kRB26s5CompTubeOuterR);
       
       TGeoVolume* voRB26s5CompRightTube =  
-         new TGeoVolume("RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteel);
+         new TGeoVolume("RB26s5CompRightTube", shRB26s5CompRightTube, kMedSteelH);
       voRB26s5Compensator->AddNode(voRB26s5CompRightTube,  1, 
                                   new TGeoTranslation(0., 0.,  kRB26s5CompL - 2. * kRB26s5WeldingTubeRightL));
 //
@@ -2511,7 +2534,7 @@ void AliPIPEv3::CreateGeometry()
 //      
       TGeoTube* shRB26s5CompRing = new TGeoTube(kRB26s5RingInnerR, kRB26s5RingOuterR, kRB26s5RingL);
       TGeoVolume* voRB26s5CompRing =  
-         new TGeoVolume("RB26s5CompRing", shRB26s5CompRing, kMedSteel);
+         new TGeoVolume("RB26s5CompRing", shRB26s5CompRing, kMedSteelH);
       voRB26s5Compensator->AddNode(voRB26s5CompRing,  1, new TGeoTranslation(0., 0., kRB26s5RingZ + kRB26s5RingL));
 
 //
@@ -2519,7 +2542,7 @@ void AliPIPEv3::CreateGeometry()
 //      
       TGeoTube* shRB26s5CompProtTube = new TGeoTube(kRB26s5RingOuterR, kRB26s5ProtOuterR, kRB26s5ProtL);
       TGeoVolume* voRB26s5CompProtTube =  
-         new TGeoVolume("RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteel);
+         new TGeoVolume("RB26s5CompProtTube", shRB26s5CompProtTube, kMedSteelH);
       voRB26s5Compensator->AddNode(voRB26s5CompProtTube, 1,  new TGeoTranslation(0., 0., kRB26s5ProtZ + kRB26s5ProtL));
 
 ///////////////////////////////////////
@@ -2544,9 +2567,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s4FixedPoint->DefineSection(4, z0, kRB26s4TubeRi, kRB26s4TubeRo);
       z0 = kRB26s4FixedPointL;
       shRB26s4FixedPoint->DefineSection(5, z0, kRB26s4TubeRi, kRB26s4TubeRo);
-      TGeoVolume* voRB26s4FixedPoint = new TGeoVolume("RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteel);
+      TGeoVolume* voRB26s4FixedPoint = new TGeoVolume("RB26s4FixedPoint", shRB26s4FixedPoint, kMedSteelH);
       
-      TGeoVolume* voRB26s4FixedPointM = new TGeoVolume("RB26s4FixedPointM", MakeMotherFromTemplate(shRB26s4FixedPoint), kMedVac);
+      TGeoVolume* voRB26s4FixedPointM = new TGeoVolume("RB26s4FixedPointM", MakeMotherFromTemplate(shRB26s4FixedPoint), kMedVacH);
       voRB26s4FixedPointM->AddNode(voRB26s4FixedPoint, 1, gGeoIdentity);
             
 
@@ -2574,9 +2597,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s4SFlange->DefineSection(4, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
       z0 += kRB26s4SFlangeD3;
       shRB26s4SFlange->DefineSection(5, z0, kRB26s4SFlangeRi3, kRB26s4SFlangeRo);
-      TGeoVolume* voRB26s4SFlange = new TGeoVolume("RB26s4SFlange", shRB26s4SFlange, kMedSteel);
+      TGeoVolume* voRB26s4SFlange = new TGeoVolume("RB26s4SFlange", shRB26s4SFlange, kMedSteelH);
 
-      TGeoVolume* voRB26s4SFlangeM = new TGeoVolume("RB26s4SFlangeM", MakeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVac);
+      TGeoVolume* voRB26s4SFlangeM = new TGeoVolume("RB26s4SFlangeM", MakeMotherFromTemplate(shRB26s4SFlange, 0, 3), kMedVacH);
       voRB26s4SFlangeM->AddNode(voRB26s4SFlange, 1, gGeoIdentity);
       
 ///////////////////////////////////////
@@ -2609,9 +2632,9 @@ void AliPIPEv3::CreateGeometry()
       shRB26s5RFlange->DefineSection(6, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
       z0 += kRB26s5RFlangeD1;
       shRB26s5RFlange->DefineSection(7, z0, kRB26s5RFlangeRi1, kRB26s5RFlangeRo);
-      TGeoVolume* voRB26s5RFlange = new TGeoVolume("RB26s5RFlange", shRB26s5RFlange, kMedSteel);
+      TGeoVolume* voRB26s5RFlange = new TGeoVolume("RB26s5RFlange", shRB26s5RFlange, kMedSteelH);
 
-      TGeoVolume* voRB26s5RFlangeM = new TGeoVolume("RB26s5RFlangeM", MakeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVac);
+      TGeoVolume* voRB26s5RFlangeM = new TGeoVolume("RB26s5RFlangeM", MakeMotherFromTemplate(shRB26s5RFlange, 4, 7), kMedVacH);
       voRB26s5RFlangeM->AddNode(voRB26s5RFlange, 1, gGeoIdentity);
 
 //      
@@ -2694,8 +2717,8 @@ void AliPIPEv3::CreateMaterials()
   //
 
   AliDebugClass(1,"Create PIPEv3 materials");
-  Int_t   isxfld = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
+  Int_t   isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
   // Steel (Inox)  
   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
   Float_t zsteel[4] = { 26.,24.,28.,14. };
@@ -2716,7 +2739,7 @@ void AliPIPEv3::CreateMaterials()
   Float_t zAir[4]={6.,7.,8.,18.};
   Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
   Float_t dAir = 1.20479E-3;
-  Float_t dAir1 = 1.20479E-10;
+  Float_t dAir1 = 1.20479E-11;
   //
   // Insulation powder
   //                    Si         O       Ti     Al
@@ -2748,40 +2771,53 @@ void AliPIPEv3::CreateMaterials()
   //
   //
   //     Berillium 
-  AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7);
+  AliMaterial(12, "BERYLLIUM1 ", 9.01, 4., 1.848, 35.3, 36.7);
+  AliMaterial(32, "BERYLLIUM2 ", 9.01, 4., 1.848, 35.3, 36.7);
   //
   //     Carbon 
-  AliMaterial(6,  "CARBON$   ", 12.01, 6., 2.265, 18.8, 49.9);
+  AliMaterial(13,  "CARBON1   ", 12.01, 6., 2.265, 18.8, 49.9);
+  AliMaterial(33,  "CARBON2   ", 12.01, 6., 2.265, 18.8, 49.9);
   //
   //     Aluminum 
-  AliMaterial(9,  "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
+  AliMaterial(11,  "ALUMINIUM1", 26.98, 13., 2.7, 8.9, 37.2);
+  AliMaterial(31,  "ALUMINIUM2", 26.98, 13., 2.7, 8.9, 37.2);
   //
   //     Copper 
-  AliMaterial(10, "COPPER", 63.55, 29, 8.96, 1.43, 85.6/8.96);
+  AliMaterial(10, "COPPER1    ", 63.55, 29, 8.96, 1.43, 85.6/8.96);
+  AliMaterial(30, "COPPER2    ", 63.55, 29, 8.96, 1.43, 85.6/8.96);
   //
   //     Air 
-  AliMixture(15, "AIR$      ", aAir, zAir, dAir, 4, wAir);
-  AliMixture(35, "AIR_HIGH$ ", aAir, zAir, dAir, 4, wAir);
+  AliMixture(15, "AIR1       ", aAir, zAir, dAir, 4, wAir);
+  AliMixture(35, "AIR_HIGH   ", aAir, zAir, dAir, 4, wAir);
+  AliMixture(55, "AIR2       ", aAir, zAir, dAir, 4, wAir);
   //
   //     Vacuum 
-  AliMixture(16, "VACUUM$ ", aAir, zAir, dAir1, 4, wAir);
+  AliMixture(16, "VACUUM1    " , aAir, zAir, dAir1, 4, wAir);
+  AliMixture(17, "VACUUMM    ",  aAir, zAir, dAir1, 4, wAir);
+  AliMixture(36, "VACUUM2    " , aAir, zAir, dAir1, 4, wAir);
   //
   //     stainless Steel 
-  AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
+  AliMixture(19, "STAINLESS STEEL1", asteel, zsteel, 7.88, 4, wsteel);
+  AliMixture(39, "STAINLESS STEEL2", asteel, zsteel, 7.88, 4, wsteel);
   //
   //     reduced density steel to approximate pump getter material
-  AliMixture(20, "GETTER$", asteel, zsteel, 1.00, 4, wsteel);
+  AliMixture(20, "GETTER1", asteel, zsteel, 1.00, 4, wsteel);
+  AliMixture(40, "GETTER2", asteel, zsteel, 1.00, 4, wsteel);
   //     Al-Be alloy
   //     
-  AliMixture(21, "AlBe$", aAlBe, zAlBe, 2.07, 2, wAlBe);
+  AliMixture(21, "AlBe1", aAlBe, zAlBe, 2.07, 2, wAlBe);
+  AliMixture(41, "AlBe2", aAlBe, zAlBe, 2.07, 2, wAlBe);
   //     Polyamid
   //   
-  AliMixture(22, "PA$", aPA, zPA, 1.14, -4, wPA);
+  AliMixture(22, "PA1", aPA, zPA, 1.14, -4, wPA);
+  AliMixture(42, "PA2", aPA, zPA, 1.14, -4, wPA);
   //
   //     Kapton
-  AliMixture(23, "KAPTON", aKapton, zKapton, dKapton, 4, wKapton);
+  AliMixture(23, "KAPTON1", aKapton, zKapton, dKapton, 4, wKapton);
+  AliMixture(43, "KAPTON2", aKapton, zKapton, dKapton, 4, wKapton);
   // Anticorodal 
-  AliMixture(24, "ANTICORODAL", aaco, zaco, 2.66, 3, waco);
+  AliMixture(24, "ANTICORODAL1", aaco, zaco, 2.66, 3, waco);
+  AliMixture(44, "ANTICORODAL2", aaco, zaco, 2.66, 3, waco);
   
   //
   //     Insulation powder 
@@ -2790,7 +2826,8 @@ void AliPIPEv3::CreateMaterials()
    AliMixture(54, "INSULATION2$", ains, zins, 0.41, 4, wins);
 
    //    NEG
-   AliMixture(25, "NEG COATING", aNEG, zNEG, dNEG, -3, wNEG);
+   AliMixture(25, "NEG COATING1", aNEG, zNEG, dNEG, -3, wNEG);
+   AliMixture(45, "NEG COATING2", aNEG, zNEG, dNEG, -3, wNEG);
    
    
    // **************** 
@@ -2805,51 +2842,66 @@ void AliPIPEv3::CreateMaterials()
   //
   //    Beryllium 
   
-  AliMedium(5, "BE",       5, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(12, "BE1",       12, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(32, "BE2",       32, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
 
   //    Carbon 
-  AliMedium(6, "C",        6, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(13, "C1",        13, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(33, "C2",        33, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //    Aluminum 
-  AliMedium(9, "ALU",      9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(11, "ALU1",      11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(31, "ALU2",      31, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+
   //    Copper 
-  AliMedium(10, "CU",      10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(10, "CU1",      10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(30, "CU2",      30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //    Air 
-  AliMedium(15, "AIR",     15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(35, "AIR_HIGH",35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(15, "AIR1",      15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(55, "AIR2",      55, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(35, "AIR_HIGH",  35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //    Vacuum 
-  AliMedium(16, "VACUUM", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(16, "VACUUM1",  16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(17, "VACUUMM",  17, 0, isxfld, sxmgmx, 0.1, stemax, deemax, epsil, stmin);
+  AliMedium(36, "VACUUM2",  36, 0, isxfld, sxmgmx, 0.1, stemax, deemax, epsil, stmin);
   //
   //    Steel 
-  AliMedium(19, "INOX",   19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(19, "INOX1",   19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(39, "INOX2",   39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //    Getter 
-  AliMedium(20, "GETTER", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(20, "GETTER1", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(40, "GETTER2", 40, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //   AlBe - Aloy 
-  AliMedium(21, "AlBe"  , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(21, "AlBe1"  , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(41, "AlBe2"  , 41, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //   Polyamid
-  AliMedium(22, "PA"  ,   22, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(22, "PA1"  ,   22, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(42, "PA2"  ,   42, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //   Antocorodal
-  AliMedium(24, "ANTICORODAL",   24, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(24, "ANTICORODAL1",   24, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(44, "ANTICORODAL2",   44, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //    Insulation Powder 
   AliMedium(14, "INS_C0          ", 14, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   AliMedium(34, "INS_C1          ", 34, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   AliMedium(54, "INS_C2          ", 54, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
   //
   //   KAPTON
-  AliMedium(23, "KAPTON", 23, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(23, "KAPTON1", 23, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(43, "KAPTON2", 43, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
 
   //
   //   NEG
-  AliMedium(25, "NEG COATING", 25, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(25, "NEG COATING1", 25, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(45, "NEG COATING2", 45, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
 }
 
 
-TGeoPcon* AliPIPEv3::MakeMotherFromTemplate(TGeoPcon* shape, Int_t imin, Int_t imax, Float_t r0, Int_t nz)
+TGeoPcon* AliPIPEv3::MakeMotherFromTemplate(const TGeoPcon* shape, Int_t imin, Int_t imax, Float_t r0, Int_t nz)
 {
 //
 //  Create a mother shape from a template setting some min radii to 0
@@ -2910,49 +2962,49 @@ TGeoVolume* AliPIPEv3::MakeBellow(const char* ext, Int_t nc, Float_t rMin, Float
     // dU     Undulation length
     // rPlie  Plie radius
     // dPlie  Plie thickness
-    const TGeoMedium* kMedVac    =  gGeoManager->GetMedium("PIPE_VACUUM");    
-    const TGeoMedium* kMedSteel  =  gGeoManager->GetMedium("PIPE_INOX");   
+    const TGeoMedium* kMedVac    =  gGeoManager->GetMedium("PIPE_VACUUM2");    
+    const TGeoMedium* kMedSteel  =  gGeoManager->GetMedium("PIPE_INOX2");   
 
     char name[64], nameA[64], nameB[64], bools[64];
-    sprintf(name, "%sBellowUS", ext);
+    snprintf(name, 64, "%sBellowUS", ext);
     TGeoVolume* voBellow = new TGeoVolume(name, new TGeoTube(rMin, rMax, dU/2.), kMedVac);
 //      
 //  Upper part of the undulation
 //
     TGeoTorus* shPlieTorusU  =  new TGeoTorus(rMax - rPlie, rPlie - dPlie, rPlie);
-    sprintf(nameA, "%sTorusU", ext);
+    snprintf(nameA, 64, "%sTorusU", ext);
     shPlieTorusU->SetName(nameA);
     TGeoTube*  shPlieTubeU   =  new TGeoTube (rMax - rPlie, rMax, rPlie);
-    sprintf(nameB, "%sTubeU", ext);
+    snprintf(nameB, 64, "%sTubeU", ext);
     shPlieTubeU->SetName(nameB);
-    sprintf(name, "%sUpperPlie", ext);
-    sprintf(bools, "%s*%s", nameA, nameB);
+    snprintf(name,  64, "%sUpperPlie", ext);
+    snprintf(bools, 64, "%s*%s", nameA, nameB);
     TGeoCompositeShape*  shUpperPlie = new TGeoCompositeShape(name, bools);
     
     TGeoVolume* voWiggleU = new TGeoVolume(name, shUpperPlie, kMedSteel);
 //
 // Lower part of the undulation
     TGeoTorus* shPlieTorusL =  new TGeoTorus(rMin + rPlie, rPlie - dPlie, rPlie);
-    sprintf(nameA, "%sTorusL", ext);
+    snprintf(nameA, 64, "%sTorusL", ext);
     shPlieTorusL->SetName(nameA);
     TGeoTube*  shPlieTubeL  =  new TGeoTube (rMin, rMin + rPlie, rPlie);
-    sprintf(nameB, "%sTubeL", ext);
+    snprintf(nameB, 64, "%sTubeL", ext);
     shPlieTubeL->SetName(nameB);
-    sprintf(name, "%sLowerPlie", ext);
-    sprintf(bools, "%s*%s", nameA, nameB);
+    snprintf(name,  64, "%sLowerPlie", ext);
+    snprintf(bools, 64, "%s*%s", nameA, nameB);
     TGeoCompositeShape*  shLowerPlie = new TGeoCompositeShape(name, bools);
     
     TGeoVolume* voWiggleL = new TGeoVolume(name, shLowerPlie, kMedSteel); 
     
 //
 // Connection between upper and lower part of undulation
-    sprintf(name, "%sPlieConn1", ext);
+    snprintf(name, 64, "%sPlieConn1", ext);
     TGeoVolume* voWiggleC1 = new TGeoVolume(name, new TGeoTube(rMin + rPlie, rMax - rPlie, dPlie/2.), kMedSteel);
 //
 // One wiggle
     Float_t dz = rPlie -  dPlie / 2.;
     Float_t z0 = -  dPlie / 2.;
-    sprintf(name, "%sWiggle", ext);
+    snprintf(name, 64, "%sWiggle", ext);
     TGeoVolumeAssembly* asWiggle = new TGeoVolumeAssembly(name);
     asWiggle->AddNode(voWiggleC1,  1 , new TGeoTranslation(0., 0., z0));
     z0 += dz;
@@ -2973,6 +3025,31 @@ TGeoVolume* AliPIPEv3::MakeBellow(const char* ext, Int_t nc, Float_t rMin, Float
     return voBellow;
 }
 
+//_______________________________________________________________________
+void AliPIPEv3::AddAlignableVolumes() const
+{
+  // 
+  AliInfo("Add PIPE alignable volume");
+
+  if (!gGeoManager) {
+    AliFatal("TGeoManager doesn't exist !");
+    return;
+  }
+
+  TString symname("CP1");
+  TString volpath("/ALIC_1/CP_1/Cp1_1");
+  if(!gGeoManager->SetAlignableEntry(symname.Data(),volpath.Data()))
+    AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
+                 symname.Data(),volpath.Data()));
+
+  TString symname2("CP3");
+  TString volpath2("/ALIC_1/CP_1/Cp3_1");
+  if(!gGeoManager->SetAlignableEntry(symname2.Data(),volpath2.Data()))
+    AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
+                 symname2.Data(),volpath2.Data()));
+}
+
+